파일

소프트웨어 상에서 동작하는 파일은 모두 그렇듯 파일 역시 0, 1로 기록된다. 

png 파일
pdf, apk 파일

UltraEdit을 통해 png, pdf, apk 파일을 열어봤다. 
2진수 비트보다 보기쉽게 16진수로 변환되어 보인다. 

모든 파일은 고유한 포맷을 가지고 있으며 파일 시그니처를 통해 포맷을 기록한다. 
파일 시그니처는 파일의 헤더에 기록된다. (png와 jpg는 footer 시그니처도 가지고 있다)

이렇게 PDF는 25 50 44 46, PNG는 89 50 4E 47 같이 파일 포맷에 맞는 고유한 시그니처가 존재한다. 

시그니처 외에도 파일 헤더에는 파일의 크기, 만든 시간, 접근 권한 등의 정보가 담겨 있다. 

파일 시스템

파일 시스템은 이런 파일과 디렉토리의 CRUD를 관리한다. 

그리고 파일에 대한 접근 방법을 제공하고, 접근 권한을 관리한다. 

또 파일 내용이 손상되지 않도록 무결성을 보장하고, 백업과 복구 작업을 한다.

파일을 보호하기 위한 암호화도 담당한다. 

 

파일 시스템은 어떻게 파일을 저장할까?

  • Continguous Allocation

처음에는 파일을 연속적인 공간에 저장했다. 연속적인 저장장치의 주소를 읽기 때문에 속도는 빠르지만, 파일은 수정을 거듭하며 사이즈가 달라지기 때문에 연속적으로 저장하기 어렵고 단편화 문제도 발생한다.

  • Linked Allocation

파일을 블록단위로 저장하고 각 블록에 다음 블록에 대한 주소를 갖고 있게해 LinkedList 형태로 파일을 읽을 수 있는 방식이다.

  • Indexed Allocation

인덱스를 기록하는 블럭을 하나 두고, 이 index 블록안에 포인터를 보고 파일에 접근하는 방식이다. 

이렇게 저장된 파일에 접근할 때는 파일 테이블을 통해서 접근한다. 

파일 테이블의 블록 번호를 보고 파일에 접근할 수 있다.

그리고 파일 테이블은 디스크 파티션 마다 존재한다 .

 

OS가 파일에 접근하는 법 - File Descriptor

유닉스 계열의 운영체제에서 모든 것은 파일이다. 파일, 디렉토리, 소켓, 등등 모두 파일로 관리된다. 

운영체제에서 파일에 접근할 때 File Descriptor를 사용한다. 

fd = open("test.txt", O_RDONLY);

C언어에서 open으로 파일을 열면 File Descriptor를 반환한다. File Descriptor는 0이 아닌 양의 정수이다. 

파일 디스크립터 값은 파일 디스크립터 테이블의 인덱스값이다. 

파일을 열 때마다 파일 디스크립터 테이블에 파일 테이블에 대한 참조값을 저장하고 인덱스를 반환해준다. 

우리는 fd를 통해 file table의 위치를 찾고 file table의 값을 통해 파일의 위치를 찾아 읽을 수 있다.  

리눅스 - 파일 디스크립터 :: Developer Ahn (tistory.com)

 

 

[운영체제] 파일과 파일 시스템 (velog.io)

[운영체제] File System Implementations (tistory.com)

리눅스 - 파일 디스크립터 :: Developer Ahn (tistory.com)

 

리눅스 - 파일 디스크립터

File Descriptor (파일 디스크립터) [출처: http://dev.plusblog.co.kr/22] 1. 파일 디스크립터 - 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수 값- 프로세스에서 열린 파일의 목록을 관리하는 테이

dev-ahn.tistory.com

 

[운영체제] File System Implementations

이 글은 개인의 학습을 목적으로 정리한 글입니다. 이점 참고하고 읽어주세요;) 테이프: 순차 접근만 가능. 건너뛰기 불가능 하드 디스크, 플래시 메모리: 건너뛰기 가능. 직접 접근 가능한 매체

movahws.tistory.com

 

[운영체제] 파일과 파일 시스템

쉽게 배우는 운영체제 2판 책을 통해 내용을 정리한 글입니다!파일 시스템은 파일과 파일의 집합체인 디렉터리(directory)를 관리한다.유닉스 -> 디렉터리윈도우 -> 폴더파일 시스템은 파일 및 디렉

velog.io

 

'CS > 운영체제' 카테고리의 다른 글

3장 프로세스(PCB, Context Switch, Scheduling, IPC)  (1) 2022.05.15

+ Recent posts