파일 테이블이 파일 시스템 또는 메모리에 있습니까? “파일 테이블”이라는 용어는 파일 시스템의 일부이거나 주

운영 체제 제어 테이블과 관련하여 “파일 테이블”이라는 용어는 파일 시스템의 일부이거나 주 메모리에있는 데이터 구조를 나타냅니다 (이 경우 파일 열기에 대한 참조 만 가정합니다) ? 내 교과서 1에서 말합니다.

이 표는 파일의 존재 여부, 보조 메모리에서의 위치, 현재 상태 및 기타 속성에 대한 정보를 제공합니다. 전부는 아니지만,이 정보의 대부분은 파일 관리 시스템에 의해 유지 및 사용될 수 있으며,이 경우 OS는 파일에 대한 지식이 거의 또는 전혀 없다.

또한 파일 관리 시스템이란 무엇입니까? 이것이 파일 시스템을 의미합니까?

1 스톨 링스, 운영 체계 , 7 번째 ED., P. 127



답변

스톨 링이 메모리 내 inode 테이블 또는 파일 시스템에있는 테이블에 대해 이야기하고 있는지 여부를 결정하는 추가 컨텍스트 없이는 불분명합니다. 나는 이전 버전의 책을 다른 사람에게 빌려 주었지만 결코 다시는 얻지 못했습니다. 컨텍스트를 직접 찾을 수 없습니다.

세 개의 “파일 테이블”이 있지만 여기서 논의되는 파일은 ” 메모리 내 inode 테이블 “이라고합니다. 두 번째는 일반적으로 ” 열린 파일 테이블 ” 이라고하며 프로세스 당 존재합니다. 두 테이블 모두 커널 메모리에 있으며 프로그램에서 액세스 할 수 없습니다. 세 번째 “테이블”은 실제로 파일 시스템 (디스크상의) 내에있는 두 개의 테이블 세트이며, 첫 번째는 디스크상의 inode 테이블 이고 두 번째는 데이터 블록 자체입니다 (참고 :이 논의는 전통적인 UNIX 파일 시스템 관리와 ​​관련이 있습니다. 다른 조직이 있음). inode 테이블의 항목에는 간접 참조 블록 또는 실제 데이터를 포함하는 데이터 블록에 대한 참조 시퀀스가 ​​있습니다. 파일 의 열쇠파일 시스템에는 데이터 블록 자체가 아니라 inode가 있습니다. 스톨 링이 디스크상의 “파일 테이블”에 관해 이야기 할 때, 일반적으로 FAT 시스템의 inode 테이블 또는 블록 정의 테이블과 같은 파일을 나타내는 디스크의 “작은”테이블이됩니다.

메모리 내 inode 테이블과 관련하여 inode는 파일 시스템에서로드되고 st_nlink 값이 증가한 다음 나머지 시스템에서 액세스 할 수있게됩니다. inode 데이터가 디스크에 기록 될 때 st_ctime이 업데이트됩니다. 메모리에 inode가 더 이상 필요하지 않으면 st_nlink 값이 감소하고 테이블의 항목이 사용 가능으로 표시됩니다. 모든 프로세스가 메모리 아이 노드 테이블에 세에 대한 5 개의 항목에 대한 참조로 시작됩니다의 아이 노드 stdin, stdout, stderr– 현재 디렉토리와 루트 디렉토리에 대한 참조는 다음과 -이 종종 장치 파일 (TTY)입니다. inode는 한 번만 테이블에 상주하므로 테이블의 단일 inode에 대한 참조가 여러 개있을 수 있습니다.

열린 파일 테이블은 프로세스별로 유지되며 메모리에 대한 inode 테이블에 대한 참조와 버퍼에 대한 포인터 및 상태 정보 (의 fseek(2)값 및 플래그)를 포함 open(2)합니다. 파일 디스크립터는 문자 그대로 열린 파일 테이블에 대한 색인입니다. 사람들은 “파일 디스크립터”에 대해 말할 때 열린 파일 테이블의 항목을 참조합니다.

을 사용하여 파일을 열면 open(2)열린 파일 테이블에서 사용 가능한 항목이 발견되고 경로 이름으로 파일 참조의 inode가 결정되고 inode가 메모리 내 inode 테이블에로드되었는지, 아직로드되지 않은 경우 st_nlink 수 파일 설명자에서 inode 항목이 참조되고 플래그가 설정되고 버퍼가 할당됩니다. 닫히면 반대로 발생합니다.

커널 내의 루틴을 ” 파일 관리 시스템 ” 이라고하며 ” 파일 시스템 “은 디스크의 조직입니다. 요즘 modprobe(8)디스크의 여러 조직에 대해 파일 관리 시스템에 로드 할 수있는 여러 ‘플러그 블’모듈이 있습니다 . 예를 들어, ext2 / ext3 / ext4 파일 시스템 유형이 있으며 각각 커널의 파일 관리 시스템에서 서로 다른 모듈을 가지고 있습니다. ntfs, sbfs, nfs, vfat, jfs 등과 동일합니다.

이것은 원래 의도했던 것보다 조금 오래 걸리므로 여기서 멈출 것입니다.