데이터 제어 블록(Data Control Block, DCB)은 주로 IBM 메인프레임 환경의 운영체제(예: OS/360, MVS, z/OS)에서 프로그램이 입출력(I/O) 작업을 수행할 때 필요한 데이터셋(dataset)의 특성과 입출력 방법을 정의하고 제어하는 데 사용되는 메모리 내 데이터 구조이다. 이는 프로그램과 운영체제 간의 인터페이스 역할을 하며, 특정 데이터셋에 대한 접근 방식, 레코드 형식, 블록 크기, 버퍼링 정보 등 다양한 입출력 관련 매개변수를 포함한다.
개요 및 기능 DCB는 프로그램이 특정 파일이나 데이터셋을 열어(OPEN) 입출력 작업을 시작할 때 운영체제에 필요한 모든 정보를 제공한다. 운영체제는 이 DCB를 참조하여 적절한 입출력 루틴을 호출하고, 데이터 전송을 관리하며, 오류 처리 등을 수행한다. DCB에 포함되는 주요 정보는 다음과 같다.
- 데이터셋 이름: 처리될 데이터셋의 고유 식별자.
- 접근 방식(Access Method): 데이터셋에 접근하는 방식(예: 순차 접근(QSAM), 색인 순차 접근(ISAM/VSAM), 파티션 데이터셋 접근(BPAM) 등).
- 레코드 형식(Record Format): 레코드의 고정 길이(Fixed), 가변 길이(Variable), 정의되지 않은 길이(Undefined) 여부.
- 레코드 길이(Logical Record Length, LRECL): 논리 레코드의 최대 또는 고정 길이.
- 블록 크기(Block Size, BLKSIZE): 물리적 블록의 크기.
- 버퍼링 정보: 입출력 작업에 사용될 버퍼의 수 및 위치.
- 장치 유형: 데이터셋이 상주하는 저장 장치의 유형.
- 처리 옵션: 입출력 작업 중 특정 처리를 제어하는 플래그.
활용
프로그래머는 어셈블리어(Assembler)나 코볼(COBOL), PL/I 등과 같은 언어로 프로그램을 작성할 때 DCB 매크로를 사용하여 DCB를 정의한다. 프로그램이 데이터셋을 사용하기 전에 OPEN 매크로를 호출하면 운영체제는 해당 DCB에 정의된 정보를 바탕으로 데이터셋을 초기화하고, 필요한 자원을 할당한다. 이후 READ나 WRITE와 같은 매크로를 통해 실제 데이터 입출력이 수행되며, CLOSE 매크로를 호출하여 데이터셋 사용을 종료한다.
역사적 배경 및 중요성 DCB는 1960년대 중반 IBM System/360 운영체제(OS/360)에서 도입된 개념으로, 당시 컴퓨팅 환경에서 효율적인 입출력 관리를 위한 핵심 요소였다. 프로그램이 하드웨어의 세부적인 작동 방식에 직접 관여하지 않고도 다양한 종류의 저장 장치와 데이터셋을 유연하게 처리할 수 있도록 추상화 계층을 제공했다는 점에서 중요한 의미를 가진다. 현대의 운영체제에서는 파일 시스템과 관련된 기능들이 더욱 추상화되고 객체 지향적으로 발전하여, DCB와 같은 직접적인 데이터 구조를 프로그래머가 다룰 일은 드물다. 하지만 메인프레임 환경에서는 여전히 중요한 개념으로 사용되고 있다.