파일 시스템은 바이트 / 비트에서“파일”을 어떻게 인식합니까?


0

주제를 벗어난 경우 확실하지 않지만 비트 / 바이트 블록을 인식하고 이러한 "파일"을 호출하여 데이터에보다 편리하게 액세스하고 단위로 압축하는 것이 더 편리하도록하기 위해 이러한 "파일"을 호출하는 것이 파일 시스템의 역할이라고 생각합니다. 순서가없는 플립 플롭 상태의 바다. 그러나 어떻게이 작업을 수행 할 수 있습니까? 파일 시스템 (문제가있는)은 데이터 시작 / 데이터 끝 사이의 오프셋에 대한 매핑을 참조하거나 유지합니까? 확인 된 주소 등의 식별자를 사용합니까? 나는 프로그래밍 지식을 가지고 있지만,이 저런 개념은 확실히 당황했다. 나는 대부분의 파일 시스템이 C, C ++, D 등과 같은 HLL로 작성되었음을 알고 있지만, 가장 낮은 수준에서 파일 "A"의 섹터 / 블록 1부터 모든 것까지 완벽하게 추적하는 방법은 무엇입니까? 마지막 범위?


1
FAT / MFT / superblock으로 시작하십시오. 거기서부터 일하십시오.
이그나시오 바스케스-아 브람스

답변:


0

하드 디스크는 512 또는 4k 바이트의 데이터 클러스터로 배열됩니다. 이러한 각 클러스터를 블록이라고합니다.

최저 수준에서 OS는 블록 4에서 읽기 또는 블록 11로 쓰기와 같은 명령을 실행합니다. SATA 사양은 이러한 명령의 작동 방식과 사용 가능한 명령을 정확하게 정의합니다. 이러한 저수준 명령은 파일 시스템과 인터페이스하는 고수준 명령으로 추상화됩니다.

파일 시스템은 파일을 디스크 블록에 매핑합니다. MS-DOS FS와 같은 매우 기본적인 파일 시스템은 물리 디스크 위에 논리 디스크를 정의 할 수있는 파티션 테이블 (블록 0, "수퍼 블록")을 갖는 것으로 시작합니다. 각 논리 디스크는 디렉토리를 정의하는 단일 항목으로 시작합니다. 이러한 각 디렉토리 항목에는 파일 목록과 해당 파일을 가리키는 블록이 포함됩니다.

각 파일에 대해 첫 번째 블록은 파일이 무엇인지 (파일, 디렉토리, 링크 또는 그 밖의 것), 파일 크기, 액세스 권한, 블록 목록을 정의하는 메타 데이터 구조입니다. 파일 데이터가있는 위치


0

파일 시스템이 파일을 인식 하지 못합니다 . 대신, 그들은 무엇을 정의

빈 디스크로 시작하여 파일 시스템에 파일을 작성하도록 요청하십시오. 그것은 :

  1. 파일 이름 및 / 또는 경로 구문이 올바른지 결정
  2. 파일이 논리적으로 위치 할 디렉토리 구조 내의 위치를 ​​결정하십시오.
  3. 같은 이름의 다른 파일이 해당 위치에 있는지 여부를 결정하고, 있으면 해당 파일을 덮어 쓰거나 추가하거나 오류를 반환할지 여부를 결정하십시오.
  4. 파일이 원하는 상위 디렉토리 내에 있음을 나타내는 파일 시스템 메타 데이터에 하나 이상의 항목을 작성하십시오.
  5. 파일을 구성하는 바이트의 디스크 공간을 할당하십시오
  6. 파일의 바이트를 할당 된 디스크 공간에 기록
  7. 파일의 모든 블록의 위치를 ​​나타내도록 메타 데이터를 변경하고 EOF가있는 위치 (순차 파일 인 경우)를 말하십시오.

이 중 어느 것도 파일 시스템이 처음에 만든 것과 동일한 데이터 구조를 제외하고는 무엇이든 "인식"할 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.