본문 바로가기

CS공부🖥️/운영체제

혼공 컴+운 chapter15. 파일 시스템

15-1. 파일과 디렉터리

파일

  • 파일 : 하드 디스크나 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합을 의미.
  • 모든 파일에는 이름과 파일을 실행하기 위한 정보, 파일관련 부가 정보가 있다. 부가정보를 속성 또는 메타데이터라고 한다. 
  • 파일 속성과 유형
속성 이름 의미
유형 운영체제가 인지하는 파일의 종류를 나타낸다.
크기 파일의 현재 크기와 허용 가능한 최대 크기를 나타낸다.
보호 어떤 사용자가 해당 파일을 읽고, 쓰고, 실행할 수 있는지를 나타낸다.
생성 날짜 파일이 생성된 날짜를 나타낸다.
마지막 접근 날짜 파일에 마지막으로 접근한 날짜를 나타낸다.
마지막 수정 날짜 파일이 마지막으로 수정된 날짜를 나타낸다.
생성자 파일을 생성한 사용자를 나타낸다.
소유자 파일을 소유한 사용자를 나타낸다.
위치 파일의 보조기억장치상의 현재 위치를 나타낸다.
파일 유형 대표적인 확장자
실행파일 없는 경우, exe, com, bin
목적 파일 obj, o
소스 코드 파일 c, cpp, cc, java, asm, py
워드 프로세서 파일 xml, rft, doc, docx
라이브러리 파일 lib, a, so, dll
멀티미디어 파일 mpeg, mov, mp3, mp4, avi
백업 / 보관 파일 rar, zip, tar
  • 파일 연산을 위한 시스템 호출
    1. 파일 생성
    2. 파일 삭제
    3. 파일 열기
    4. 파일 닫기
    5. 파일 읽기
    6. 파일 쓰기

디렉터리

  • 윈도우 운영체제에서는 디렉터리를 폴더라고 한다.
  • 하나의 디렉터리만 존재 하는 것을 1단계 디렉터리라고 부른다. => 1단계 디렉터리로는 많은 파일을 관리하기가 어렵기 때문에 트리 구조 디렉터리가 생겼다. 

  • 절대 경로와 상대 경로
    • 절대 경로 : 모든 파일이 루트 디렉터리에서 자기 자신이 이르는 고유한 경로를 가지고 있는 것.
    • 상대 경로 : 절대 경로가 루트 디렉터리부터 시작하는 경로라면 상대 경로는 현재 디렉터리부터 시작하는 경로. 
  • 디렉터리 연산을 위한 시스템 호출
    1. 디렉터리 생성
    2. 디렉터리 삭제
    3. 디렉터리 열기
    4. 디렉터리 닫기
    5. 디렉터리 읽기
  • 디렉터리 엔트리
    • 파일이 내부에 해당 파일과 관련된 정보를 담고 있다면, 디렉터리는 해당 디렉터리에 담겨 있는 대상과 관련된 정보를 담고 있다. 
    • 디렉터리는 보조기억장치에 테이블 형태의 정보로 저장.
    • 디렉터리 엔트리에는 디렉터리에 속한 파일들의 이름과 이들의 위치를 알 수 있는 정보 등이 포함되어 있기 때문에 이 파일들이 보조기억장치 내에 저장된 위치를 알 수 있고 실행할 수 있는 것이다. 

PLUS 상대 경로를 나타내는 또 다른 방법

  • 현재 작업 디렉터리를 마침표(.)로 나타내고, 현재 작업 디렉터리의 상위 디렉터리를 마침표 두번(..)으로 나타낸다. 

15-2. 파일 시스템

파티셔닝과 포매팅

  • 파티셔닝 : 저장 장치의 논리적인 영역을 구획하는 작업. (파티셔닝 작업을 통해 나누어진 영역 하나하나를 파티션)
  • 포매팅 : 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지를 결정하고 새로운 데이터를 쓸 준비를 하는 작업. 포매팅 할 때 파일 시스템이 결정된다. 

파일 할당 방법

  • 운영체제는 파일과 디렉터리를 블록 단위로 읽고 쓴다. 

  • 연속 할당 : 보조기억장치 내 연속적인 블록에 파일을 할당하는 방식.
    • 파일의 첫 번째 블록 주소와 블록 단위의 길이만 알면된다. 
    • 파일을 그저 연속적으로 저장하는 방식이기에 구현이 단순하다는 장점이 있지만, 외부 단편화를 야기한다는 단점이 있다. 
  • 연결 할당: 연속 할당의 문제를 해결할 수 있는 방식. 
    • 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식. 파일을 이루는 데이터를 연결 리스트로 관리. 
    • 파일 이름과 함께 첫 번째 블록 주소와 블록 단위의 길이를 명시. 
    • 단점
      • 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 한다.
      • 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다. 
  • 색인 할당 : 파일의 모든 블록 주소를 색인 블록 이라는 하나의 블록에 모아 관리하는 방식. 
    • 파일 a에 순차적으로 접근하고 싶다면 색인 블록에 저장된 주소에 차례대로 접근.
    • 색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시. 

파일 시스템 살펴보기

  • FAT 파일 시스템 : USB 메모리, SD 카드 등의 저용량 저장 장치에서 사용되는 것.
    • FAT : 각 블록에 포함된 다음 블록의 주소들을 한데 모아 테이블 형태로 관리 하는 테이블
    • FAT 디렉터리 엔트리에는 파일이름과 더불어 파일의 첫 번째 블록 주소가 명시

  • 유닉스 파일 시스템 : 유닉스 계열 운영체제에서 사용되는 것. 색인 블록을 i-node라고 한다. 
    • i-node에는 파일 속성 정보와 열다섯 개의 블록 주소가 저장될 수 있다. 
    • i - node 크기의 유한함 문제해결
      • 블록 주소 중 열두 개에는 직접 블록 주소를 저장
      • 첫번째 내용으로 충분하지 않다면 열세 번째 주소에 단일 간접 블록 주소를 저장
      • 둘째 내용으로 충분하지 않다면 열네 번째 주소에 이중 간접 블록 주소를 저장
      • 셋째 내용으로 충분하지 않다면 열다섯 번째 주소에 삼중 간접 블록 주소를 저장

PLUS 저널링 파일시스템

  • 저널링 기법 : 작업 로그를 통해 시스템 크래시가 발생했을 때 빠르게 복구하기 위한 방법.
    1. 작업 직전 파티션의 로그 영역에 수행하는 작업(변경 사항)에 대한 로그를 남긴다.
    2. 로그를 남긴 후 작업을 수행한다.
    3. 작업이 끝났다면 로그를 삭제한다. 

PLUS 마운트

  • 마운트 : 한 저장 장치의 파일 시스템에서 다른 저장 장치의 파일 시스템에 접근할 수 있도록 파일 시스템을 편입 시키는 작업.