티스토리 뷰

● 파일시스템(파일관리자)

- 파일들은 HDD, Flash Memory(SSD) 같은 저장장치에 저장된다.

- 메모리의 경우와 마찬가지로 사용자가 파일을 HDD, SSD에 직접 저장 하게되면 중요 정보를 손상시킬 수 있기 때문에 사용자가 OS를 통해 요청하면 이를 OS가 안전하게 저장해준다.

- OS는 파일 관리를 위해 파일관리자를 두었는데 이를 파일시스템이라고 한다.

- 파일관리자는 파일 테이블을 이용해서 파일을 관리한다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제


- 이전 글에서 주변장치는 캐릭터 디바이스와 블록 디바이스로 구분한다고 했다.(HDD, SSD는 블록 디바이스)

- 파일시스템은 HDD, SSD 같은 저장 장치에 파일을 저장하기 때문에 당연히 전송 단위가 블록이다.

- 전송 단위는 블록이지만 사용자는 바이트 단위로 파일에 접근이 가능해야 하기 때문에 이를 파일관리자가 중간에서 관리를 해준다.


파일 디스크립터(File Descriptor)

- 운영체제는 파일을 관리하기 위해 정보를 보관하는 파일제어블록(File Control Block, FCB)을 가지고 있는데 이를 파일 디스크립터(File Descriptor)라고 부른다.

- 파일 디스크립터는 각 파일마다 독립적으로 존재하며 파일이 오픈되면 저장장치에서 메모리로 이동한다.

- 파일 디스크립터는 파일시스템이 관리하며 사용자가 직접 접근할 수는 없다.

- 사용자는 파일시스템이 건내준 파일 디스크립터를 이용해 파일에 접근할 수 있다.


 파일시스템의 기능 / 파일 확장자 / 파일의 구조

[파일시스템의 기능]
1. 파일과 디렉토리 생성
2. 파일과 디렉토리 수정 & 삭제
3. 파일 권한 관리 --> 다른 사용자로부터 파일을 보호하기 위해 접근 권한 관리 필요 / 특히 OS가 다중 사용자 기능을 지원할 때 필수적
4. 무결성 보장 --> 파일의 내용은 손상되면 안 된다.
5. 백업과 복구 --> 예기치 못한 사고로부터 백업과 복구
6. 암호화 --> 파일을 암호화해 파일을 보호한다.

- unix 운영체제에는 파일에 확장자가 없지만 windows 운영체제에는 파일마다 확장자가 있으며 이 확장자로 파일의 성격을 알 수 있다.

ex)
exe - 실행파일
jpg, png, bmp - 이미지 파일
mp3, wav - 음악 파일

- 파일 확장자가 있음으로 인해서 파일을 더블클릭 했을 때 바로 연결되는 프로그램을 설정할 수 있다.

ex)
exe - 실행 파일이기에 운영체제가 바로 프로세스를 만들어 실행한다.
jpg, png - 이미지 파일이기에 포토샵이나 그림판 등이 실행된다.
mp4, wav - 곰플레이어, 아이튠즈 등이 실행된다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 파일은 헤더와 데이터로 이루어져 있으며 헤더에는 파일의 속성들이 담겨져있다.


● 파일 구조

- 파일은 데이터의 집합으로 볼 수 있는데 이 데이터의 집합을 어떻게 구성하느냐에 따라 파일 구조의 종류를 나눌 수 있다.

 

1. 순차파일구조(순차접근방식)

- 파일의 내용이 연속적으로 이어진 형태이다.

- 예를들어 카세트테이프에 노래 50곡이 들어있다면 재생시 1번 ~ 50번까지 노래가 순차적으로 재생되며 만약 원하는 곡이 있다면 해당 곡까지 테이프를 감아야 한다.

- 사용자가 파일을 사용하려할 때 파일시스템은 파일디스크립터를 사용자에게 전달해주는데 파일디스크립터는 파일의 맨 앞에 위치해서 사용자가 쓰거나 읽기를 시작하면 처음부터 진행한다.

- 만약 파일의 특정 영역으로 이동하고 싶다면 lseek 함수(C언어 함수)를 이용해 파일디스크립터의 위치를 옮겨야한다.

장점 : 모든 데이터가 순서대로 기록되기 때문에 공간의 낭비가 없고 구조가 단순
단점 : 특정 지점으로의 바로 이동이 어려워 데이터 삽입, 삭제를 위해서는 탐색을 해야하는데 이때 시간이 많이 걸린다.

 

2. 직접파일구조(직접접근방식)

- 저장하려는 데이터의 저장 위치를 해시함수를 통해 결정하는 파일 구조

- 해당 구조는 자료 구조에서 해시 테이블(Hash Table)이라고 불리는 방식이다. 참고로 JSON도 이 방식이다.

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

ex)

- 인간의 성씨를 기준으로 주소를 변환하는 해시함수가 있다고 해보자

- 사람의 이름값을 입력으로 주면 이름의 성씨에 해당하는 공간에 데이터가 저장된다.

- 만약 '김사과'를 저장한다고 하면 해시함수는 성이 김씨니까 주소 '김'에 저장한다.

장점 : 해시함수를 이용하기 때문에 데이터 접근이 빠르다.
단점
- 해시함수의 성능이 좋지 않으면 그 만큼 파일 구조의 성능도 떨어진다.(해시함수의 영향을 많이 받는다.)
- 저장 공간이 낭비될 가능성이 있다.
ex) 희귀한 성을 가진 이름이 있다면 해당 성씨에 저장되는 데이터는 매우 적을 것이다.

 

3. 인덱스파일구조

- 순차접근방식과 직접접근방식의 장점을 모두 가지고 있는 파일 구조로서 순차접근방식과 직접접근방식 모두 사용 가능하다.

ex) 음악 재생목록

출처 - 인프런, 그림으로 쉽게 배우는 운영체제

- 재생목록은 전부 순차 데이터로 저장되어있다.

- 일반적으로 재생 버튼을 누르면 처음 곡 ~ 마지막 곡까지 순차적으로 진행되는데 만약 사용자가 2번 노래를 듣고 싶어 선택을 하면 인덱스 테이블의 2번에 접근해 블록 번호를 알아낸다.

- 그 후 순차 데이터의 해당 블록번호로 이동해 바로 2번 음악을 재생한다.

- 이러한 구조를 인덱스 파일구조라고 한다.

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

#34 메모리 - 메모리 할당방식  (0) 2023.07.08
#33 가상메모리  (0) 2023.07.06
#31 디렉토리  (0) 2023.06.18
#30 주변장치 - 하드디스크/Flash Memory(SSD)  (0) 2023.06.17
#29 주변장치 - 마우스와 키보드  (0) 2023.06.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함