파일 테이블이 파일 시스템에 있습니까, 아니면 메모리에 있습니까?

파일 테이블이 파일 시스템에 있습니까, 아니면 메모리에 있습니까?

운영 체제 제어 테이블의 맥락에서 "파일 테이블"이라는 용어는 파일 시스템의 일부를 참조합니까, 아니면 주 메모리의 데이터 구조를 참조합니까(이 경우 열린 파일만 참조한다고 가정합니다)? 내 교과서 1은 이렇게 말합니다.

이러한 테이블은 파일 존재 여부, 보조 메모리에서의 위치, 현재 상태 및 기타 속성에 대한 정보를 제공합니다. 이 정보의 전부는 아니더라도 대부분은 파일 관리 시스템에서 유지 관리하고 사용할 수 있으며, 이 경우 운영 체제는 파일에 대해 거의 또는 전혀 알지 못합니다.

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

1 안정,운영 체제, 7 , 17페이지. 127

答え1

추가 컨텍스트가 없으면 Stalling이 메모리 내 inode 테이블을 말하는지 파일 시스템의 테이블을 말하는지 확실하지 않습니다. 나는 그 책의 초판을 누군가에게 빌려줬는데 돌려받지 못했기 때문에 내용을 직접 찾아볼 수는 없었습니다.

세 가지 "파일 테이블"이 있지만 여기서 설명하는 것은 "파일 테이블"이라고 하는 것이 더 일반적입니다.인메모리 인덱스 노드 테이블"; 두 번째는 일반적으로 "파일 테이블 열기"이며 모든 프로세스에 존재합니다. 두 테이블 모두 커널 메모리에 있으며 프로그램에서 액세스할 수 없습니다. 세 번째 "테이블"은 실제로 파일 시스템(디스크) 내의 두 세트의 테이블이고 첫 번째는디스크의 Inode 테이블두 번째는 데이터 블록 자체입니다(참고: 이 논의는 기존 UNIX 파일 시스템 관리에 관한 것이며 최신 시스템은 다르게 구성될 수 있습니다). inode 테이블의 항목에는 간접 참조 블록이나 실제 데이터를 포함하는 데이터 블록에 대한 일련의 참조가 있습니다. 핵심은문서데이터 블록 자체가 아니라 파일 시스템의 inode입니다. Stalling이 디스크의 "파일 테이블"에 대해 말할 때 이는 일반적으로 FAT 시스템의 inode 테이블이나 블록 정의 테이블과 같이 파일을 나타내는 디스크의 "더 작은" 테이블입니다.

메모리 내 inode 테이블의 경우 inode는 파일 시스템에서 로드되고 st_nlink 값이 증가한 다음 inode 데이터가 디스크에 기록되면 st_ctime이 업데이트됩니다. . inode가 더 이상 메모리에 필요하지 않으면 st_nlink 값이 감소하고 테이블의 항목이 사용 가능으로 표시됩니다. 각 프로세스는 메모리에 있는 inode 테이블의 약 3~5개 항목에 대한 참조로 시작됩니다. stdin, , stdout의 inode stderr- 일반적으로 장치 파일(ttys)입니다. 그런 다음 현재 디렉터리와 루트 디렉터리에 대한 참조를 참조합니다. 인덱스 노드는 테이블에 한 번만 상주하므로 테이블의 단일 인덱스 노드는 여러 번 참조될 수 있습니다.

열린 파일 테이블은 프로세스별로 저장되며 메모리 내 inode 테이블에 대한 참조와 버퍼 및 상태 정보(예: fseek(2)값 및 플래그)에 대한 포인터를 포함합니다 open(2). 파일 설명자는 실제로 열린 파일 테이블에 대한 색인이지만 "파일 설명자"에 대해 이야기할 때 대부분의 사람들은 열린 파일 테이블의 항목을 참조합니다.

open(2)inode 항목이 설명자에서 참조되는 파일을 열면 플래그가 설정되고 버퍼가 할당됩니다. 닫히면 반대 현상이 발생합니다.

커널의 루틴은 "파일 관리 시스템"그리고"파일 시스템"는 디스크상의 조직입니다. 이제 modprobe(8)디스크에서 다르게 구성된 파일 관리 시스템에 로드( )할 수 있는 "플러그형" 모듈이 많이 있습니다. 예를 들어, ext2/ext3/ext4 파일 시스템 유형이 있고 각 파일에 대해 커널에 있는 시스템 유형 파일 관리 시스템에는 ntfs, sbfs, nfs, vfat, jfs 등과 같은 다양한 모듈이 있습니다.

원래 의도했던 것보다 내용이 좀 더 길어졌으므로 여기서 멈추겠습니다.

関連情報