파일 제어 블록 또는 파일 컨트롤 블록(File Control Block, FCB)은 열린 파일의 상태를 관리하는 파일 시스템 구조이다. FCB는 운영 체제가 관리하지만 운영 체제 메모리가 아닌, 파일을 사용하는 프로그램의 메모리에 상주한다. 이를 통해 파일 당 FCB에 충분한 메모리 여유가 있는 한 프로세스가 한 번에 원하는 만큼의 파일을 열 수 있게 된다.
FCB는 CP/M에서 기원하며, 대부분의 유형의 도스에도 존재하지만 MS-DOS 버전 2.0 이상에서 하위 호환성을 목적으로만 존재한다. 전체 FCB의 길이는 36바이트이다. 초기 버전의 CP/M에서는 33바이트였다. 응용 프로그램 호환성을 무너뜨리지 않고 증가가 불가능한 이 고정 크기로 인해 파일 접근의 표준 방식으로서 철퇴를 맞았다.
FCB 내의 여러 필드의 의미는 CP/M과 도스간 차이가 있으며 수행되는 동작에 따라서도 달라진다. 다음의 필드는 일정한 의미가 있다:[1]
오프셋 | 바이트 크기 |
내용 |
---|---|---|
0x00 | 1 | 드라이브 번호 — 0 (기본), 1 (A:), 2 (B:), ... |
0x01 | 8 | 파일 이름 및 확장자 — 모두 8.3 파일 이름으로 구성됨. |
0x09 | 3 | |
0x0C | 20 | 구현체에 따라 다름. FCB 개방 전에 초기화해야 함. |
0x20 | 1 | 파일의 현재 섹션의 레코드 번호. 순차 접근 수행 시 사용함. |
0x21 | 3 | 무작위 접근을 수행할 때 사용하는 레코드 번호. |
오프셋 0x0c로 시작하는 20바이트 길이 필드는 파일에 관한 추가 정보를 포함하였다:[2]
오프셋 | 바이트 크기 |
내용 |
---|---|---|
0x0E | 2 | 파일의 레코드 길이 (바이트) |
0x10 | 4 | 전체 파일 크기 (바이트) |
0x14 | 2 | 마지막 파일 내용 수정 날짜 |
0x16 | 2 | 마지막 수정 시간 |