UNIX 운영체제에서 커널의 I/O 구조는 모든 I/O를 Byte Stream으로 처리합니다.
커널의 시스템 테이블은 프로세스마다 파일 식별자 테이블(File Descripter Table)을 가지고 있습니다.
또한, 시스템에 한 개의 Open File Tabe이 존재합니다.(즉, 커널당 1개가 존재합니다.)
오픈 파일 테이블에는 파일을 열거나 생성 시, 새로운 항목(File Structure)이 추가됩니다.
여러 다른 프로세스들이 동일 항목을 공유할 수 있고, 같은 파일의 경수 Open 함수 여러개로 독립 존재가 가능합니다.
Index Node는파일의 모든 정보를 저장하는 노드로, 파일을 열 때 인덱스 노드의 복사본이 램에 적재됩니다.
파일이 디스크 상에 존재한 위치나 파일의 크기, 소유자 등등의 정보를 포함하고 있으며 파일이 디스크에 존재하는 한, 디스크에 파일과 함께 저장되는 영구적인 구조입니다.
Directory는 File Name과 Disk 상의 Index Node의 쌍을 저장하는 작은 파일입니다.
파일과 파일명을 링크하는 과정은 두가지로 나뉩니다.
- Soft Link
- Hard Link
Soft Link는 소스파일에 대한 경로명으로, 윈도우의 바로가기와 같은 역할을 수행합니다.
Hard Link는 인덱스 노드 주소를 이름으로 연결합니다. 여러 파일명으로 같은 인덱스 노드 주소를 연결할 수 있으며, 인덱스 노드에는 현재 Hard Link를 통해 연결된 파일명의 수(Reference Count)를 저장합니다. 파일이 삭제될 때마다 1씩 줄어들며, 0이 될경우 디스크에서 파일에 할당된공간을 물리적으로 삭제합니다.
특정 장치에 연결하기 위해서는 I/O 버퍼와 장치 사이의 I/O를 수행하는 장치 드라이버가 있어야하는데, 커널은 장치 드랑버를 이미 가지고 있기 때문에, 특정 장치에 대해서 어떤 것도 미리 알 필요가 없습니다.
USB의 경우는 유닉스 운영체제와 윈도우 운영체제 관계없이 사용이 가능한데, 그 이유로는 USB는 표준 파일 시스템을 사용하기 때문에 운영체제와 상관없이 사용이 가능합니다.
시스템 내의 파일에 대한 부가적인 정보를 포함하는 파일들의 집합체를 파일 시스템(File System, Superblock) 이라고 합니다. 이 파일 시스템은 램이 아닌 디스크에 저장하여 커널과 분리되어 있습니다. 따라서, 필요할 때 마다 커널이 파일 시스템의 정보를 램에 적재합니다. (마운트)
이를 통해 커널과 독립적으로 특정장치를 관리하고 서로 다른장치는 각각 분리된 파일시스템을 독자적으로 가질 수 있게됩니다.
'Computer Science > 파일처리' 카테고리의 다른 글
레코드의 관리 (0) | 2024.03.11 |
---|---|
레코드와 필드 (1) | 2024.03.08 |
Write (0) | 2024.03.07 |
테이프와 CD-ROM (0) | 2024.03.07 |
파일의 저장 및 읽기 (0) | 2024.03.06 |