[운영체제] 파일 시스템

byeol·2023년 3월 29일
0
post-thumbnail

드디어 마지막 운영체제이다.
오늘 노션에 운영체제와 컴퓨터 구조를 정리하고

내일부터는 네트워크를 복습해보려고 한다.

4월은 JSON과 JPA, DB를 공부하며 보내고
5월은 리눅스에 대해서 배워보려고 한다.

오늘은 파일 시스템에 대해 배웠다.
파일 시스템은 파일과 디렉터리를 관리하는 운영체제의 내부 프로그램이다

파일을 손쉽게 삭제하고 생성하고 수정할 수 있는 것은 파일시스템 덕분이다.


파일과 디렉토리

파일과 디렉토리는 보조기억장치에 있는 데이터 덩어리
운영체제는 이를 어떻게 파일과 디렉토리로 관리할까?

파일

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

파일의 부가 정보
= 속성 또는 메타데이터
= 위치,형식, 크기

파일 속성과 유형

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

유형은 운영체제가 인지하는 파일 종류를 나타내는데 이는 우리가 확장자를 통해서 알려준다.

확장자 종류

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

파일 연산을 위한 시스템 호출

파일을 다루는 모든 작업은 운영체제에 의해서 이루어진다.
앞에서 배웠지만 자원에 접근하기 위해서는 운영체제에 시스템 호출을 통해서 접근이 가능하다.

파일 연산을 위한 시스템 호출은 아래와 같다.

  • 파일 생성
  • 파일 삭제
  • 파일 열기
  • 파일 닫기
  • 파일 읽기
  • 파일 쓰기

디렉터리

윈도우에서는 "폴더"
파일들을 일목요연하게 관리

옛날에는 하나의 디렉터리만 존재 -> "1단계 디렉터리"
현재는 트리구조를 가지는 -> "트리 구조 디렉터리"

트리 구조 디렉터리의 최상위 디렉터리
= /
= 루트 디렉터리

따라서 자연스레 "경로"라는 개념이 생긴다.

절대 경로와 상대 경로

같은 디렉토리에는 같은 이름의 파일 ❌
다른 디렉토리에는 같은 이름의 파일 ⭕

=> 따라서 모든 파일은 루트 디렉토리를 시작해서 자기 자신까지의 고유한 경로를 가진다. 이것이 "절대 경로"이다.

루트 디렉터리가 아닌 현재 위치의 디렉토리부터 시작하는 경로
= "상대 경로"
ex) ./home/name/운영체제.txt

디렉터리 연산을 위한 시스템 호출

  • 디렉터리 생성
  • 디렉터리 삭제
  • 디렉터리 열기
  • 디렉터리 닫기
  • 디렉터리 읽기

디렉터리 = 그저 특별한 형태의 파일

운영체제는 디렉터리를 그저 특별한 형태의 파일로 간주

디렉터리에 포함된 정보는 내부에 담겨 있는 대상과 관련된 정보로 테이블의 형태로 구성되어져 있다.

파일 시스템마다 디렉터리 엔트리가 포함하는 정보가 달라진다.
그러나 공통적으로 "파일 이름"과 "위치를 유추할 수 있는 정보"가 포함된다.

또는 "파일 이름"과 "위치를 유추할 수 있는 정보" 외에 파일 속성(크기, 수정된 시간, 생성된 시간 등)을 포함할 수도 있다.

파일 이름위치를 유추할 수 있는 정보
..
.
tool
Program Files

위와 같이 자기 자신을 나타내는 "."과 상위 디렉터리로 가는 ".."도 함께 구성된다.

파일 시스템

운영체제의 내부 프로그램인 파일 시스템은 보조기적장치에 있는 파일과 디렉터리를 관리한다.

이 파일 시스템은 다양한 종류가 있고 하나의 컴퓨터에 여러 개의 파일 시스템이 사용될 수 있다.

파일 시스템이 파일과 디렉터리를 보조기억장치에 어떻게 할당하고 접근하는지와 대표적인 파일 시스템인 FAT파일 시스템과 유닉스 파일 시스템에 대해서 배운다.

파티셔닝과 포매팅

새 보조기억장치를 사용하려면 파티셔닝과 포매팅 작업을 거쳐야 한다,

  • 파티셔닝
    = 칸막이를 통해서 물건을 정리하는 것처럼
    = 하드 디스크나 SSD처럼 용량이 큰 저장 장치를 하나 이상의 논리적인 단위로 구획하는 것

    이렇게 나눠어진 영역 = 파티션

    보면 내 컴퓨터의 C드라이브는 5개의 파티션이 있다.

  • 포매팅
    = 포맷하는 작업
    = 파일 시스템을 설정 + 새로운 데이터를 쓸 준비
    = 파일 시스템을 설정하여 어떻게 파일을 관리하고 저장할 것인지 결정 +
    새로운 데이터를 쓸 준비를 하는 작업

파일 할당 방법

파티셔닝과 포매팅을 마친 보조기억장치에 파일을 저장하는 방법

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

이 블록에 파일과 디렉토리를 할당하는 방식은 아래와 같다.

연속 할당

가장 단순한 방식 앞서 배웠던 연속 메모리 할당과 똑같이 작동
따라서 똑같이 외부 단편화라는 단점이 존재

디렉터리 엔트리

파일이름첫번째 블록 주소길이

연결 할당

LinkedList랑 비슷하다.

각 블록 일부에 다음 블록 주소를 저장하고 각 블록이 다음 블록을 가리키는 형태
따라서 파일들이 불연속적으로 흩어져 저장된다.

디렉터리 엔트리

파일이름첫번째 블록 주소길이

단점

  • 반드시 첫 번째 블록부터 차례대로 읽어야 한다.
    만약 100개의 블록에서 70번의 블록을 접근하려고 해도 무조건 1번의 블록부터 접근해야 한다. 즉 임의 접근 속도가 매우 느리다.
  • 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근할 수 없다.

색인 할당

파일의 모든 블록 주소를 색인 블록이하는 하나의 블록에 모아 관리하는 방식이다. 저 하나의 블록을 색인 블록이라고 한다.
저 4번 색인 블록에는 7,13,11의 블록 주소가 저장되어 있다.

임의 접근 가능
i번째 데이터 블럭에 접근하려면 색인 블럭의 i번째 항목이 가리키는 블록에 접근하면 된다.

디렉터리 엔트리

파일이름색인 블록

실제 파일 시스템

연결 할당을 조금 변형한 FAT 파일 시스템

연결 할당은 방식을 개선한 FAT 파일 시스템
최근까지 USB, SD 카드와 같은 저용량 저장 장치용 파일 시스템으로 많이 이용

각 블록에 포함된 다음 블록의 주소를 한데 모아서 테이블의 형태로 관리
이 테이블을 "파일 할당 테이블"(FAT:File Allocation Table)이라고 한다.

디렉터리 엔트리

파일이름첫 번째 블록 주소

+) 뒤에 파일 속성 정보가 붙는다

❓❔ FAT는 어디에 저장되는가?

FAT 파일 시스템으로 설정된 파티션은 파티션의 앞 부분에 FAT를 저장한다.

파티션을 간략하게 도식화한 모습을 아래와 같다.

예약영역FAT 영역루트 디렉터리 영역데이터 영역

색인 할당 기반의 유닉스 파일 시스템

색인 할당의 색인 블록 = 유닉스 파일 시스템은 이를 i-node

FAT 파일 시스템에 디렉터리 엔트리에 파일 속성 정보가 포함
➡️ 유닉스 파일 시스템은 i-node에 파일 속성 정보가 저장된다.

FAT 파일 시스템처럼 유닉스 파일 시스템을 설정한 파티션 내 특정 영역에 모여 있다.

예약영역i-node 영역데이터 영역

디렉터리 엔트리

i-node 번호파일 이름

❓❔i-node에 저장할 수 있는 블럭의 개수 15개로 한정되어 있는데 이보다 큰 파일은 어떻게 되는가

아래와 같은 방법으로 저장된다

    1. 12개의 직접 블록 주소를 저장한다.
      직접 블럭이란 데이터가 저장된 블록
      만약 파일이 12개의 파일로 이루어져 있다면 여기서 끝!
    1. 첫 번째의 방법으로 끝나지 않는다면 13번째 주소에 단일 간접 블록 주소 저장
      단일 간접 블록이란 파일 데이터가 저장된 블록이 아닌 파일 데이터가 저장된 블럭 주소가 저장된 블럭
    1. 두 번째에서 끝나지 않으면 14번째 주소에 이중 간접 블록 주소 저장이중 간접 블록이란 단일 간접 블록의 주소를 저장한 블록
    1. 세 번째의 빙법으로 끝나지 않는다면 열다섯 번째 주소에 삼중 간접 주소를 저장한다.

결국 아래와 같은 구조가 완성된다.

profile
꾸준하게 Ready, Set, Go!

0개의 댓글

관련 채용 정보