[CS 스터디] 운영체제 11일차 - 파일 시스템

강아람·2023년 1월 6일
0

운영체제

목록 보기
11/11
post-thumbnail

📚 파일과 디렉터리

파일 (File)

  • 하드 디스크나 SSD 같은 보조기억장치에 저장된 관련 정보의 집합
  • 의미 있고 관련 있는 정보를 모은 논리적 단위

파일 속성

파일과 관련된 부가 정보

속성 이름의미
유형운영체제가 인지하는 파일의 종류
크기파일의 현재 크기와 허용 가능한 최대 크기
보호읽기, 쓰기, 실행 권한
생성 날짜파일이 생성된 날짜
마지막 접근 날짜파일에 마지막으로 접근한 날짜
마지막 수정 날짜파일이 마지막으로 수정된 날짜
생성자파일을 생성한 사용자
소유자파일의 소유자
위치파일의 보조기억장치상의 현재 위치

파일 유형

파일 유형확장자
실행 파일exe, com, bin, 확장자 없는 파일
목적 파일ojb, o
소스 코드 파일c, cpp, java, py
워드 프로세서 파일xml, doc, docx
라이브러리 파일lib, a, dll
멀티미디어 파일mov, mp3, mp4, avi
백업/보관 파일rar, zip, tar

파일 연산을 위한 System Call
파일 생성, 파일 삭제, 파일 열기, 파일 닫기, 파일 읽기, 파일 쓰기


디렉터리 (Directory)

파일 관리를 위한 논리적 단위
디렉터리 엔트리에 해당 디렉터리가 담고 있는 파일에 대한 정보를 담고 있는 특별한 형태의 파일

Single-Level Directory

모든 파일이 하나의 디렉터리 안에 있는 구조

Tree-Structure Directory

최상위 디렉터리(루트 디렉터리) 밑에 서브 디렉터리가 있는 구조

💻 절대 경로와 상대 경로

절대 경로 (Absolute Path) : 루트 디렉터리로부터 자기 자신까지 이르는 고유한 경로

상대경로 (Relative Path) : 현재 디렉터리를 기준으로 하는 경로


디렉터리 연산을 위한 시스템 호출
디렉터리 생성, 디렉터리 삭제, 디렉터리 열기, 디렉터리 닫기, 디렉터리 읽기



파일 접근 방법

순차 접근 (Sequential Access)

가장 단순한 방법으로 파일의 정보가 레코드 순서대로 처리되는 접근 방법이다.

장점

  • 모든 데이터가 순차적으로 기록되기 때문에 저장 공간의 낭비가 없음
  • 물리적으로 연속된 공간에 저장되므로 순서대로 데이터를 읽거나 저장할 때 매우 빠름

단점

  • 새로운 데이터를 삽입하거나 삭제할 때 시간이 많이 걸림
  • 특정 레코드 검색을 위해 순차적으로 모든 파일의 레코드를 탐색해야 하므로 검색 효율이 낮음

직접 접근, 임의 접근 (Direct Access, Random Access)

파일의 레코드를 임의의 순서로 접근할 수 있는 방법이다.

장점

  • 데이터 접근이 매우 빠르고, 삽입, 삭제, 갱신 용이
  • 순서에 제약이 없음

단점

  • 다음 레코드 검색에 오버헤드가 발생
  • 레코드의 주소를 변환하는 해시 함수의 선정이 매우 중요한데 시간이 오래 걸리고, 작업이 복잡하며, 저장 공간의 효율이 저하됨

색인 접근 (Index Access)

파일에서 레코드를 찾기 위해 색인을 먼저 찾고 대응되는 포인터를 얻는다.(순차 접근) 이를 통해 파일에 직접 접근하여 원하는 데이터를 얻는 방법이다.

장점

  • 순차 접근과 직접 접근 모두 가능
  • 효율적인 검색이 가능하고 삭제, 삽입, 갱신이 용이

단점

  • 색인 영역이나 오버플로 영역을 설정해야 하므로 기억공간 필요
  • 색인을 이용하여 참조하기 때문에 접근 시간이 직접 파일보다 느림

💻 색인 순차 파일, 색인 파일

  • 기본 영역(Prime Area) : 실제 레코드가 기록되는 데이터 영역으로, 각 레코드들은 키 값 순으로 저장된다.
  • 색인 영역(Index Area) : 기본 영역에 있는 레코드들의 위치를 찾아가는 색인이 기록되는 영역으로, 트랙 색인 영역, 실린더 색인 영역, 마스터 색인 영역으로 분류한다.
  • 오버플로 영역(Overflow Area) : 기본 영역에 빈 공간이 없어서 새로운 레코드의 삽입이 불가능할 때를 대비하여 예비로 확보해 둔 영역이다.



파일 할당 방법

연속 할당(Contiguous Allocation)

파일을 저장 장치 내의 연속적인 블록에 할당하는 방식

장점

  • 구현이 단순함

단점

  • 외부 단편화 문제

연결 할당(Linked Allocation)

각 블록의 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키도록 할당하는 방식
즉, 파일을 이루는 데이터를 연결 리스트로 관리하는 것!

장점

  • 공간 낭비가 적음 (외부 단편화 문제 해결 가능!)

단점

  • 첫 번째 블록부터 순차 접근 해야함 (임의 접근 속도 매우 느림)
  • 하드웨어 고장 또는 에러 발생 시 해당 블록 이후 블록에 접근 불가

색인 할당(Indexed Allocation)

파일의 모든 블록 주소를 하나의 색인 블록에 모아 관리하는 방식

  • 순차 접근 : 색인 블록에 저장된 주소에 차례대로 접근
  • 임의 접근 : 색인 블록에 저장된 주소를 통해 원하는 순서에 접근

장점

  • 임의 접근이 쉬움 (색인 블록에서 원하는 순서의 블록을 찾을 수 있음)



파일 시스템

파일과 디렉터리를 보조기억장치에 깔끔하게 저장하고 접근할 수 있도록 하는 운영체제 내부 프로그램

파티션 (Partition)

연속된 저장 공간을 하나 이상의 연속되고 독립적인 영역으로 나누어 사용할 수 있도록 정의한 규약

하나의 물리적 디스크 안에 여러 파티션을 두는 것이 일반적이지만, 여러 물리적 디스크를 하나의 파티션으로 구성하기도 한다.

파티셔닝 (Partitioning)

저장 장치의 논리적인 영역을 구획하는 작업으로, 하드 디스크나 SSD와 같은 대용량 저장 장치를 하나 이상의 논리적인 단위로 나누는 것을 말한다.

포매팅 (Formatting)

어떤 방식으로 파일을 저장하고 관리할 것인지에 대한 파일 시스템을 설정하는 작업이다.



파일 시스템 종류

💻 디렉터리 엔트리란?

디렉토리를 표현하는 데에 쓰이는 자료구조로, 파일 시스템에 따라 이를 구성하는 항목도 달라진다.
일반적으로는 파일 이름, 파일 속성 등 파일에 대한 여러가지 정보가 저장되는데, 유닉스 계열에서는 파일이름과 i-node 번호만 저장된다.


FAT(File Allocation Table) 파일 시스템

FAT를 이용하는 연결 할당 기반의 파일 시스템

각 블록에 포함된 다음 블록의 주소들을 FAT(파일 할당 테이블)라는 테이블에 저장하고, 디렉터리 엔트리에 파일 이름과 더불어 첫 번째 블록 주소(시작 블록 주소)를 명시한다. 이외에도 파일 속성 관련 정보가 들어있다.

FAT를 통해 연결 할당의 단점 극복

블록 안에 다음 블록의 주소를 저장하는 연결 리스트 방식 사용하여 발생한 문제를 FAT를 통해 해결할 수 있다!

  1. 임의 접근 속도가 매우 느림
  2. 에러 발생 시 다음 블록의 데이터를 얻을 수 없음

FAT의 메모리 캐시

FAT는 파티션의 앞부분에 만들어 있지만, 실행하는 도중 FAT가 메모리에 캐시될 수 있다.
FAT가 메모리에 적재된 채 실행되면 기존 연결 할당보다 다음 블록을 찾는 속도가 매우 빨라지고, 결과적으로 임의 접근에도 유리해진다. (임의 접근 성능 개선!)



유닉스 파일 시스템

i-node를 이용하는 색인 할당 기반의 파일 시스템

유닉스 파일 시스템에서는 색인 블록을 i-node라고 부른다.
i-node에는 파일 속성 정보15개의 블록 주소가 저장될 수 있고, 파일마다 번호가 부여된 i-node를 가진다. 이러한 i-node는 파티션 내 특정 영역에 모여 있다.

문제점

i-node 크기가 유한하여, 15개를 초과하는 블록을 차지하는 파일의 경우 i-node 하나만으로 파일의 데이터 블록을 모두 가리킬 수 없다.

저장 방법 (i-node)

블록 주소 중 12번째 주소까지는 직접적(직접 주소)으로 명시한다.

만약 파일의 데이터 블록이 12개를 넘는다면 13번째 블록 주소에 단일 간접 블록 주소를 저장한다.

단일 간접 블록
파일의 데이터가 저장된 블록이 아닌 파일 데이터를 저장한 블록 주소가 저장된 블록

그니까! 단일 간접 블록에 다음 데이터 블록 주소들을 저장하고, 단일 간접 블록 주소는 13번째 블록 주소에 저장한다는 뜻이다.

만약 이보다 더 많은 블록을 가진 파일이라면 14번째 블록 주소에 이중 간접 블록 주소를 저장한다.

이중 간접 블록
데이터 블록 주소를 저장하는 블록(단일 간접 블록)의 주소들이 저장된 블록

이중 간접 블록을 사용했는데도 저장해야 할 파일 블록 주소가 더 많다면 삼중 간접 블록 주소를 15번째 블록 주소에 저장한다.

삼중 간접 블록
이중 간접 블록의 주소들이 저장된 블록

0개의 댓글