프로그래밍[Univ]/운영체제

[OS] File System

Cloud Travel 2012. 6. 21. 01:00

* File 유지사항

 1) File Pointer : Process가 Disk에 위치를 가르키는 포인터

 2) File Open count : 몇 명이 이 파일에 접근해 있는가

 3) Disk location of the file : data 접근 정보를 cache에 저장

 4) Access rights : "per-process(process가 read만할지 write도 가능한지를 분별)"정보

  > Mandatory : 여러 파일이 동시에 수정되는 것을 금지

  > Advisory : 여러 파일이 동시에 수정되는 것을 권고사항으로 둔다. SW개발에 따라 달라짐


* File Access Methods

 - Sequential : 앞에서부터 순차적으로 Access한다.

 - Direct : 직접적으로 특정 위치로 Access한다.


* Disk structure 

 - disk는 partition이라는 것으로 분할이 된다.

 - raid : 여러개의 disk를 하나로 묶거나, 복제하여 보호하는 것

 - raw : application에서 알아서 실시(disk 사용) eg. database(b+ tree)


* Graph Directories

 - file 구조가 tree가 아닐 수 있다. > graph

 - symbolic link도 원본을 link하거나, hard link로 원본을 복사하고, synchronize한다.

 - 이는 Multi user system인 Unix계열에서 유용하다


* Directory Implementation

 - Linear list / Hash Table(각 문자의 값을 더하여 Hash Function을 계산)


* Virtual File System : File Type에 관계없이 열수 있게 해주는 것


* 파일 시스템 구조

 - 장치 드라이버

 - 입출력 제어 : 장치 드라이버의 인터럽트 처리기

 - 기본 파일 시스템 : 드러이버를 호출하는 시스템

 - 파일.구성 모듈 : 파일과 블력간의 통신, 가용공간 관리

 - 논리 파일 시스템 : 디렉토리 정보, 보호 및 보안에 관련된 일을 함


* Allocation Methods

 - Disk block에 파일을 저장하는 방식

 ⓐ Contiguous Allocation : 연속되어 디스크에 할당된다.

  - 단점 

   > external fragmentation이 발생 > compaction이 필요

   > file size를 키우기 힘들다(File 이동 or 초과 분량을 다른 곳에 만들어서 연결 시킨다.(extent))

  - 장점

   > sequential, direct access 가능

   > disk head 이동을 최소화 함

 ⓑ Linked Allocation : Disk를 linked list로 연결한다.

  - File의 시작 부분과 끝 부분을 link로 연결, 가르킴. 각 block은 맨 마지막 부분에 다음 block의 위치를 가르키고 있음

  - 장점 

   > external fragmentation이 없다.

   > Compaction이 필요 없다.

  - 단점

   > direct access가 어렵다

   > disk head이동에 따른 overhead 발생(Seek time이 증가)

     >> 조각 모음을 통해 link를 한 곳에 모을 수 있다. seek time향상

   > reliability가 떨어진다. 중간 bock이 깨지면 파일이 사라질 수 있다.

 ⓒ FAT(File Allocation Table)

  - ⓑ에서 블럭마다 관리하던 다음위치 정보를 따로 table을 만들어서 관리

  - Linked 보다 더 빠르게 점근이 가능

  - ⓑ의 장점을 모두 가지고 있으며, 추가적으로 direct access도 빠르게 가능하다.

  - 단점 

   > FAT block이 깨지면 모든 데이터 관리가 불가능하다. (FAT을 여러개로 복사해서 관리)

   > Disk head overhead가 발생

 ⓓ Indexed Method

  - index block을 만들어 block의 순서대로 위치정보를 저장한다.

  - 장점

   > 빠른 direct access, sequence access가 가능하다.

   > external fragmentation이 없다.

  - 단점

   > linked allocation보다 공간 낭비가 많다.

   > File이 커지면 index block이 많이 필요해진다.

     >> index linked, Multi level index 방식으로 해결

     >> unix계열의 경우 combined 방식을 사용하여 해결을 한다.


* Free space Management

 - Free space list를 갖고 있다.

 ⓐ bitmap

  - n개의 bit는 n개의 block의 정보를 저장한다. ( 1: block free / 0: Not free )

  - 데이터를 넣을 때 왼쪽부터 scan하면서 check & allocation!

   > CPU에는 word 단위로 가장 먼저 1이 나오는 bit 위치를 알려주는 instruction이 존재한다.

  - bit map은 너무 큰 용량이 필요하다.

 ⓑ Linked list

  - free space를 linked list로 연결

  - 연속된 공간 할당이 힘들다

  - 공간 낭비가 없다.

   > Grouping : free block을 특정 size로 묶어서 link시킨다.

   > counting : free block이 연속적으로 오면, 하나의 group으로 묵는다.

                     각 group의 빈공간 수를 세서 Allocation시 group의 block수와 가장 많이 비슷한 곳에 allocation을 실시