읽은 책 정리/쉽게 배우는 운영체제

[정리] 11 파일시스템

포포015 2022. 11. 3. 16:59

목차

  • 1. 파일과 파일 시스템
  • 2. 디렉터리의 구조
  • 3. 디스크 파일 할당
  • 4. 유닉스 파일의 특징

1. 파일과 파일 시스템

- 가상 메모리에서 메모리 관리자가 메모리를 관리하듯이,

파일의 경우 파일을 보관하고 관리하는 파일 관리자를 두어 저장장치의 전체 관리를 맡긴다. 이를 파일 시스템 이라고 한다.

 

* 파일 디스크럽터 - 사용자가 특정 파일에 접근하려면, 파일 관리자로부터 얻어내야하는 파일에 접근할수 있는 권한.

 

1.1 파일 분류와 확장자

- 파일은 논리적인 데이터의 집합으로 0과 1의 비트 패턴으로 이루어지며, 운영체제의 입장에선 실행파일데이터 파일로 나뉜다.

- 실행파일을 제외한 나머지는 모두 데이터 파일의 확장자 이다.

  • 실행 파일 - 운영체제가 메모리로 가져와 CPU를 이용해 작업하는 파일. (사용자의 요청으로 프로세스가 된 파일)
  • 데이터 파일 - 실행파일이 작업하는데 필요한 데이터를 모아놓은 파일. (데이터 파일은 0과 1로 이루어진 데이터의 덩어리이다.)

1.2 파일의 헤더 

- 다양한 종류의 파일을 구분하기위해 파일에는 헤더가 달려있다. 크게 두가지로 나뉘어진다.

  • 파일 헤더 - 파일 테이블에서 관리하며, 파일이름, 종류, 크기, 시간, 접근권한등 일반적인 내용이 담겨져 있다.
                     ( 저장장치의 몇번째 블록에 있는지에 대한 정보도 포함)
  • 고유 헤더 - 데이터 파일의 응용프로그램이 필요로 하는 파일의 버전 번호, 크기, 특수정보 등 응용 프로그램이 필요로 하는 정보
                    ( 파일을 복구할때 유용하게 사용된다.)

1.3 파일 구조

- 파일은 하나의 데이터 덩어리이다. 파일 구조는 데이터 덩어리를 어떻게 구성하느냐에 따라 3가지로 나뉠수 있다.

  • 순차 파일 구조 - 파일 내용이 하나의 긴줄로 쭉 늘어선 형태. 과거에 많이 사용 했던 방법.
                 장점 :  저장 공간 낭비 없음, 순서대로 데이터를 읽거나 저장할때 빠른처리
                 단점 : 중간에 데이터 삽입, 삭제의 경우 시간이 오래걸림, 앞에서부터 순서대로 움직여야해서 검색에 용이하지않음

  • 인덱스 파일 구조 - 순차 파일 구조에 인덱스 테이블을 추가하여 순차접근, 직접 접근이 가능하다. 현대 방식에 많이 사용하는 방법
                                 ( 파일을 저장할 때는 순차 파일 구조로 저장하고, 파일에 접근시 인덱스 테이블을 보고 직접 접근)
                장점 : 인덱스 테이블을 여러개 만들면 다양한 접근이 가능하고 빠르다. (RDB에서도 많이 사용하는 방식)
                단점 : 순차 파일 구조에 인덱스 번호를 추가적으로 부여하기에 메모리 저장공간이 좀 더 사용된다.

  • 직접 파일 구조 - 저장 하려는 데이터의 특정 값에 임의의 관계를 정의해 물리적인 주소로 바로 변환하는 파일구조.
                            ( 해시 함수를 사용해 직접 접근한다. )
               장점 :  해시 함수를 이용해 주소를 변환하기에 데이터 접근이 빠름
               단점 :  함수의 선정 대상을 선정하기 어려울수 있다. 전체 데이터가 고르게 저장 될수 있는 해시 함수를 찾아야한다.

 

2. 디렉터리의 구조

- 디렉터리도 일반 파일과 마찬가지로 헤더를 가지고 있고, 헤더에는 디렉터리 이름, 만든시간, 접근권한등 의 정보가 기록되어 있다.

- 초기 파일 시스팀의 디렉터리는 1단계 구조였으나, 점점 많아지는 파일과 디렉터리로 인해 현재는 트리 디렉터리 구조를 사용하고 있다.

 

* 슬래시(/) - 루트 디렉터리를 뜻함.

* 절대경로 - 루트 디렉터리 에서 시작하는 절대적인 위치

* 상대경로 - 자신이 위치한 디렉터리 기준

2.1 마운트

- 마운트란 우리가 사용하는 물리적인 장치(DVD,CD,USB)등등을 사용하기 위해선 운영체제(os) 에 인식시켜야 하는데 이것을 가능하게 해주는것을 마운트 라고 한다. 각 장치들을 특정 디렉토리(이것을 마운트포인트 라고 함)에 연결 시키는 작업을 마운트 작업이라고 하며 연결된 후 부터 그장치의 사용이 가능하다.

 

즉 마운트란 특정장치(device)를 하나의 디렉토리 처럼 사용하기 위해 수행하는 작업이다.

 

3. 디스크 파일 할당

- 파일 시스템은 전체 디스크 공간을 같은 크기로 나누고 각 공간에 주소를 붙여 관리한다. 이를 블록 이라고 한다.

- 파일 시스템은 파일의 이름과 해당 파일이 시작하는 블록 주소를 가진 파일 테이블을 관리한다.

- 하나의 파일은 여러개의 블록을 사용하는데, 블록을 어떻게 연결하는지에 따라 연속할당과, 불연속 할당 방식으로 구분된다.

 

3.1 연속할당과 불연속 할당

  • 연속 할당 - 파일을 구성하는 데이터를 디스크상에 연속적으로 배열하는 간단한 방식. 
                  ( 파일의 크기와 맞는 연속된 공간이 없을경우 연속할당이 불가능해서 사용되고 있지않은 방식이다.)

  • 불연속 할당 - 비어 있는 블록에 데이터를 분산하여 저장하고 이에 관한 정보를 파일 시스템이 관리하는 방식. 크게 2가지로 나뉜다.
    * 연결할당 - 파일에 속한 데이터를 연결리스트로 관리하는 방식.
                    (파일 제어 테이블에시작 블록에 대한 정보만 저장하고,
                     나머지 데이터는 시작 블록부터 연결하여 저장한다.마지막의 블록엔 null 삽입)
     
    * 인덱스 할당 - 연결리스트의 최대 할당 크기에 제한이 있는 이슈를 개선해서 나온방안. 
                   ( 데이터의 인덱스를 담고 있는 인덱스 블록을 연결한다.
                    인덱스 블록은 실제 데이터의 위치에 관한 정보를 순서대로 보관하고 있다. )

3.2 디스크의 빈 공간 관리

- 디스크는 같은 크기의 블록으로 나뉜다.

 

빈 공간 리스트 - 디스크의 내부 단편화를 줄이고 빈 공간을 효율적으로 관리하기 위해 파일 시스템은 빈 블록의 정보만 모아 놓은 
빈 공간 리스트를 이용해 빈 공간 을 정리한다.
( 파일 시스템은 파일 테이블의 헤더를 삭제한 기록을 통해 빈 공간 리스트에 등록 해놓는다. ) 

 

4. 유닉스 파일의 특징