컴퓨터의 저장매체로는 대표적으로 디스크가 있는데, 이 디스크는 다시 몇 개의 파티션으로 구별하여 사용한다. 하나의 파티션은, 각 파일에 대한 속성을 기록하여 파일들의 목록을 나타내는 파일목록 영역과 각 파일 별 데이터를 기록하는 파일데이터 영역으로 구분된다. 파일 속성이라 하면 파일들의 관리를 위해 이름, 파일종류, 보호, 크기, 데이터블록에 대한 정보를 추가로 기록한 것이다.
파일은 사용자의 정보를 저장하는 단위이다. 파일과 실제 저장매체에 기록된 부분과의 매핑은 운영체제가 담당하는데 이는 파일시스템으로 구체화된다. 파일시스템은 디스크에 체계적으로 파일들을 기록하고 관리하는 방식을 지칭하는데 하나의 파티션에는 이러한 파일시스템 하나가 적용된다. 파일에 대한 작업은 읽기, 쓰기, 실행 등이 있는데 시스템 콜 함수 형태로 사용자 프로세스가 호출하며 이루어진다.
유닉스는 파일 보호를 위해 권한을 소유자, 소유 그룹, 기타 이렇게 세 가지로 나누어 구분하였고 권한 수준 별로 각각의 파일 작업의 가능 여부를 나타냈다. 읽기, 쓰기 등의 작업이 사용자가 실행시킨 프로세스에서 요청한 것이기에 접근 권한 검사를 할 때 실행 중인 프로세스의 사용자 번호, 사용자가 소속된 그룹 번호 중 하나가 해당 파일의 소유자 번호 혹은 소유 그룹 번호와 일치하는지를 살핀다. 접근 권한을 표현하는 방법에는 도메인과 객체들에 대해 접근 행렬로써 표현하는 것이 있는데 이를 단순화하여 객체 별 접근목록과 도메인 별 권한목록으로 나눌 수 있다. 유닉스에서는 그 중 객체 별 접근목록을 채택하여 9비트로 도메인 별 권한을 표시한다.
파일제어블록(FCB)는 파일 별로 속성들을 일괄적으로 정리하여 기록하는 영역으로 각 파티션마다의 파일 목록은 파일제어블록의 집합으로서 파일목록 영역에 배열 형태로 기록된다. 읽기나 쓰기 작업을 수행한다고 하면 파일목록 영역에 있는 PCB의 데이터블록 속성 정보로부터 파일데이터 영역의 블록위치 정보를 확인한 다음 해당 데이터 블록으로 가서 읽거나 기록하는 것이다.
유닉스를 포함한 대부분의 운영체제에서는 디렉토리 구조로 트리구조를 주로 채택한다. 이는 하나의 파티션에 여러 개의 디렉토리가 존재하는 것으로 이들 간에 트리 구조의 상하관계가 있고 파일 경로를 통해 나타낸다. FCB를 트리구조로 나타낼 때 FCB에는 파일 이름을 포함하지 않고 디렉토리의 데이터 블록에 <이름, 고유번호> 형태의 쌍으로 기록한다. 유닉스는 FCB를 inode로, 파일 목록 영역을 inode 테이블로 정의한다. 그에 따라 이것의 데이터 영역에는 하위파일들의 목록을 <이름, inode 번호>의 쌍으로 기록한다.
파일 별 데이터 블록을 할당하는 방식은 인덱스 블록 할당, 연속된 블록 할당, 연결된 블록 할당이 있는데 유닉스는 인덱스 블록 할당 방식을 변형하여 파일 크기의 한계를 다단계 인덱스로 보완했다. 윈도즈는 연결된 블록 할당 방식을 쓰는데 임의 위치 접근 향상을 위해 FAT를 사용한다. 이는 파티션의 시작부분에 일정한 크기로 존재하여 블록 간의 연결, 즉 링크에 대한 정보를 따로 모아 관리하는 것이다. FAT의 내용 전체를 메인메모리에 항상 유지하여 시간을 단축시키는 장점이 있다.
'OS' 카테고리의 다른 글
| 운영체제의 이해 9장: 프로세스 간의 동기화 (2023.05.25) (0) | 2026.03.13 |
|---|---|
| 운영체제의 이해 8장: 저장장치 입출력 및 스케줄링 (2023.05.16) (0) | 2026.03.13 |
| 운영체제의 이해 4장: CPU 스케줄링 (2023.04.12) (0) | 2026.03.13 |
| 운영체제의 이해 3장: 프로세스 관리 (2023.03.31) (0) | 2026.03.13 |
| 운영체제의 이해 2장: 컴퓨터 구조와 어셈블리 언어 (2023.03.23) (0) | 2026.03.13 |