선릉역 1번 출구

window 파일 시스템 - FAT 본문

Computer/Operating system

window 파일 시스템 - FAT

choideu 2022. 10. 12. 22:49

OS입장에서 많은 파일을 관리할 때 파일 시스템이라는 구조를 사용함

파일 시스템: 사용자에게 하드디스크의 동작을 추상화 해주는 도구

구조: Meta Area | Data Area 

- Meta Area: 데이터 영역에 기록된 파일의 이름, 위치, 크기, 시간정보, 삭제유무

- Data Area: 데이터가 기록된 영역

데이터 영역에 기록된 모든 파일은 메타 영역에 의해 해당 정보를 얻을 수 있어 기록된 데이터 자체가 필요한 경우가 아니면 메타 영역의 접근만으로 해당 파일 정보를 확인할 수 있음

ex) 윈도우 탐색기를 통해 확인하는 파일의 정보도 메타 영역을 확인하여 알려주는 것

*메타 영역의 사용으로 데이터 영역의 공간이 줄어드는 것은 사실이지만, 효율성이라는 관점에서 메타 영역의 사용은 더 많은 이득임

 

섹터 주소 지정 방식

CHS(cylinder, head, sector): 실린더, 헤드, 섹터를 지정하여 찾는 방식

LBA(logical block address): 하드디스크 내 섹터들을 일렬로 늘어뜨리고 순번을 매기는 방식

*CHS보다 LBA를 많이 사용함. CHS가 가지는 주소 지정의 한계 때문임.

 

클러스터

저장매체의 물리적인 최소 단위는 1섹터(512바이트)임. 그러나 현대 파일 시스템들은 섹터단위가 아닌 여러 섹터를 묶은 클러스터라는 개념으로 데이터를 관리함

과거보다 파일의 크기가 커져 섹터 단위로 관리하는 것은 비효율적임

*볼륨 크기에 따라 클러스터 크기가 변함 -> 디스크의 효율을 고려한 결정

클러스터 단위로 파일을 저장하기 때문에 클러스터 단위보다 파일의 크기가 작다면 |클러스터 크기 - 파일 크기|는 낭비되는 영역이 됨

 

슬랙 공간

저장매체의 물리적인 구조와 논리적인 구조의 차이로 발생하는 낭비 공간

= 물리적으로는 할당된 공간이지만 논리적으로는 사용할 수 없는 공간

1. 램 슬랙: 섹터의 512byte에서 사용하지 않아 0으로 기록된 공간

2. 드라이브 슬랙: 클러스터의 사용으로 인해 낭비되는 공간

3. 파일시스템 슬랙: 파일 시스템의 크기는 클러스터의 크기에 따라 결정, 파일 시스템 마지막 부분에 사용할 수 없는 영역이 발생함

*주로 이곤에 악성코드를 은닉하는데 사용함

4. 볼륨 슬랙: 전체 볼륨 크기와 할당된 파티션 크기의 차이로 발생하는 낭비 공간

 

파티션

HDD의 파티션을 나누는 것이 좋음 

1. 분할된 파티션을 저장용도나 백업 용도로 사용할 수있음

2. 멀티 부팅이 가능함

3. 파티션을 나누면 헤드의 움직임이 적어져 탐색 시간이 빨라짐

 

 

 

1. FAT(file allocation table) 파일 시스템: *DOS때부터 사용되고 있는 대표적인 파일 시스템

*DOS: IBM PC 호환기종에서 널리 쓰이던 디스크 운영 체제의 일종으로 검은 화면 위의 프롬프트라고 불리는 CLI의 셸을 가진 OS를 의미함, MS-DOS를 가장 많이 사용함

- 예약된 영역: FAT 파일시스템에서 가장 앞 부분에 위치하는 구조로 여러 개의 섹터로 구성됨

FAT12/16: 1섹터, FAT32: 32섹터를 사용함

- 예약된 영역은 다시  부트 섹터, FSINFO 섹터, 추가적인 섹터로 구분됨

FSINFO 섹터는 FAT32만!

    - 부트 섹터: 크기: 1섹터로 FAT 파일시스템의 처음에 위치함

    (Jump command to boot code | BIOS parameter block(BPB) | boot code and error message | signature) 로 구성됨

- FAT 영역: 파일 할당 테이블로 데이터 영역에 저장된 파일들의 할당 관계를 표시함

FAT 영역은 2개로 나뉨(FAT1, FAT2는 FAT1의 백업본임 | 즉 FAT1 == FAT2임)

0번째와 1번째는 예약되어 있음

- 데이터 영역: 파일의 메타정보를 저장하고 있는 디렉터리 엔트리와 실제 파일 데이터가 저장됨

디렉터리 엔트리의 데이터 구조

*긴 이름을 갖는 파일의 경우 Long File Name 엔트리를 추가적으로 사용함

 

1-1. MBR

- 마스터 부트 레코드의 약자

- 부트 레코드를 찾아가는데 쓰임

- 첫 섹터이면서 512byte 시동 섹터

- MBR의 부트 코드는 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 VBR의 부트 코드(부트 섹터 = 1sector)를 호출하는 역할을 함

부트 코드를 실행해서 파티션 테이블에서 부팅 가능한 파티션을 찾아 해당 파티션의 부트 섹터를 호출함

파티션 테이블에는 해당 파티션이 부팅 가능한 파티션(0x80)인지 아닌지(0x00)와 파티션 타입, 시작/끝 주소가 적혀있음

 

1-2. VBR

- 파티션이 나누어 지지 않은 저장장치에서는 MBR대신 저장장치의 첫번째 섹터에 사용됨

- VBR의 부트 코드는 운영체제를 로드함

 


단일 파티션과 다중 파티션의 구조 차이

단일 파티션의 경우 MBR이 존재하지 않음(부팅 가능한 VBR로 jump함) 

즉 다중 파티션은 MBR에서 부팅 가능한 VBR로 점프하는데, 단일 파티션은 MBR이 없기 때문에 그냥 VBR부터 시작

*POST(power on self test)과정 후에 부트로더에 의해 로드되는 위치는 항상 0x00007C00임.

MBR의 boot code가 실행하여 부팅 가능한 파티션을 찾으면 CHS or LBA의 주소를 읽어서 부팅 가능한 파티션의 첫 섹터(VBR)을 0x00007C00에 덮어씀.

즉 MBR이 없는 단일 운영체제에서는 MBR의 Boot code에 의해 부팅 가능한 OS의 VBR을 덮어쓰는 과정이 생략됨

 

 

 

참고사이트

https://kali-km.tistory.com/entry/Windows-Boot-Process-%EB%B6%80%ED%8C%85-%EA%B3%BC%EC%A0%95

https://jmoon.co.kr/84

https://foxtrotin.tistory.com/258

https://imsosimin.com/47

https://say2.tistory.com/entry/MBR-VBR%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC

http://forensic-proof.com/archives/439

http://forensic-proof.com/archives/435

https://plummmm.tistory.com/13

https://bubble-dev.tistory.com/entry/%ED%95%98%EB%93%9C%EB%94%94%EC%8A%A4%ED%81%AC-%EA%B5%AC%EC%A1%B02

'Computer > Operating system' 카테고리의 다른 글

Sans Evil - process structure  (0) 2022.12.11
SSD GC and TRIM  (0) 2022.10.19
window registry  (0) 2022.10.04
window OS structure  (0) 2022.10.04
메모리 관리_가상 메모리의 기초  (0) 2022.01.08
Comments