티스토리 뷰
● 파일시스템(파일관리자)
- 파일들은 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
- 알고리즘
- API
- Phaser
- 메모리
- 프로세스
- 운영체제
- Stream
- 빅데이터 분석기사
- MySQL
- OS
- db
- DART
- 코테
- git
- Phaser3
- MongoDB
- Spring Boot
- 자료구조
- spring
- SQL
- nosql
- 코딩테스트
- Advanced Stream
- node.js
- Java8
- java
- 프로그래머스
- 빅데이터
- jpa
- SpringBoot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |