12-1주차. 파일 시스템

나우히즈·2024년 7월 30일

OS

목록 보기
18/27

File and File system

File

"A named collection of related information"
일반적으로 비휘발성의 보조기억장치에 저장.
운영체제는 다양한 저장 장치를 file 이라는 동일한 노리적 단위로 볼수 있게 해줌.

디스크에 저장되는 파일은 이름을 통해 접근하는 단위.

파일은 데이터를 저장하는 목적 외에도, 리눅스같은 시스템에서는 여러가지 장치들도 관리하기 위해 파일이라는 이름을 사용하여 관리함. 다양한 저장장치들이 있다면 운영체제는 그러한 장치들을 서로 다른 파일로 관리를 하게된다. 이런 장치는 device special file 이라고 함.

파일에 대해 정의되는 연산은 "Create, read, write, reposition (lseek), delete, open, close 등"

파일의 reposition은 파일을 읽거나 쓰면 파일이 여러개의 바이트로 구성되는데, 어느 위치를 읽고 쓰는지에 대한 포인터가 있음. 파일의 접근하고 있는 위치를 연산해주는 것이 reposition.

오픈과 클로즈는 왜하는거냐.
-> 오픈의 역할은 그 파일의 메타데이터를 메모리로 올리기 위함.

  • File attribute (metadata)
    파일 자체의 내용이 아니라, 파일을 관리하기 위한 각종 정보
    : 파일 이름, 유형, 저장위치, 사이즈, 접근권한, 시간, 소유자 등

또한 파일에는 그 파일을 관리하기 위한 정보가 있음. 예를 들어 음악파일이라면 그 파일의 이름이나 유형 저장된 위치, 사이즈 등은 그 파일 자체를 관리하기 위해 필요한 정보임.

  • File system
    운영체제에서 파일을 관리하는 부분.
    파일 및 파일의 메타데이터, 디렉토리 정보 등을 관리
    파일의 저장 방법 결정
    파일 보호 등

파일시스템이라는 것은 운영체제에서 파일을 관리하는 부분. 파일 자체의 내용도 관리하지만 파일의 메타데이터도 같이 저장을 하고있음. 파일시스템에 저장할 때 1차원적으로 저장하는 것이 아니라, 디렉토리를 통해 관리.

Directory and Logical Disk

Directory

파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일
그 디렉토리에 속한 파일 이름 및 메타데이터.
operation: search for a file, create a file, delete a file, list a directory, rename a file, traverse the file system.

Partition (=Logical Disk)

하나의 물리적 디스크 안에 여러 파티션을 두는게 일반적
여러 개의 물리적인 디스크를 하나의 파티션으로 구성하기도 함
물리적 디스크를 파티션으로 구성한 뒤 각각의 파티션에 file system을 깔거나 swapping 등 다른 용도로 사용할 수 있음

open()

논리 디스크 안에 파일시스템이 있다면, 특정 파일의 메타데이터, 파일내용 등이 담겨있을 것.
이 파일을 오픈하게 되면, 이 파일의 메타데이터가 메모리로 올라오게 된다.

메타데이터에는 파일의 위치정보가 담기고, 그 위치정보를 참조하여 파일 데이터를 가져올 수 있게 된다![[Pasted image 20240730133133.png]]

open("/a/b")

  • 디스크로부터 파일 b의 메타데이터를 메모리로 가지고 옴
  • 이를 위해 디렉토리 경로를 검색.
    루트 디렉토리 "/" 를 open하고 그 안에서 파일 "a" 위치 획득
    파일 "a"를 open 한 후 read 하여 그 안에서 파일 "b" 위치 획득
    파일 "b"를 open 한다.
  • open된 파일들의 메타데이터는 메모리 상의 open file table 에 저장
  • Directory path의 search 에 너무 많은 시간 소요
    open을 read/write와 별도로 두는 이유임.
    한번 open 한 파일은 read/write 시 경로 탐색 불필요(메모리에 올렸으니까)
  • Open file table
    현재 open된 파일들의 메모리 내 메타데이터 보관소. (system-wide하게 하나의 테이블로 존재)
    디스크의 메타데이터보다 몇 가지 정보가 추가.
    1. Open한 프로세스 수
    2. file offset: 파일 어느 위치 접근중인지 표시 (별도의 테이블 필요)
  • file descriptor
    Open file table에 대한 위치 정보 (프로세스 별로 존재함)

file protection

메모리에 대한 보호는 페이지에 대한 읽기쓰기 접근 권한 유무를 구분하여 진행하였음.

파일에 대한 보호는 여러 사용자, 여러 프로그램이 같이 사용할 수 있어서, 파일에 대한 권한은
파일에 대한 접근 권한이 누구에게 있는지, 접근 연산이 어떠한 것이 가능 한지를 다루어야함.

접근 권한을 제어하는 방법은 크게 3가지.

  1. Access control Matrix
    행렬의 행과 열에 대해 사용자와 파일 명들을 나열하고 행렬을 채우는 식.
    특정 사용자가 특정 파일에 대해 접근했을 때, 권한이 있는 경우에만 허용하여 진행.

하지만 행렬로 했을 시, 공간 낭비가 너무 심함. -> 연결리스트로 활용

Access control list: 파일 별로 누구에게 어떤 접근 권한이 있는지 연결리스트를 통해 표시.
Capability list : 사용자 별로 자신이 접근 권한을 가진 파일 및 해당 권한 표시.

  1. Grouping
    모든 사용자에 대해 접근권한을 다루는 것이 아니라, 전체 유저를 세 그룹으로 구분하여 각 파일에 대해 세 그룹의 접근 권한을 각각 3비트씩으로 표시.
    일반적으로 사용되는 방식이다. (UNIX)

단 9개의 비트로 파일을 관리할 수 있게 됨.

  1. Password
    파일마다 패스워드를 두는 방법.
    접근 권한 별로 암호를 두는 것은 귀찮아지고, 공간을 많이 차지하기도 함.

file system의 mounting

하나의 디스크를 파티셔닝을 통해 여러개로 나눌 수 있고, 각 디스크에 파일시스템을 설치하여 관리.

마운팅이라는 연산을 통해 또 다른 파일시스템에 접근하도록 함.
서로 다른 파일 시스템을 A 파일 시스템의 디렉토리에 B 파일 시스템을 마운트하여 A의 하위 디렉토리에 B 파일 시스템을 두게 해서 접근할 수 있도록 함.

Access Methods

파일 접근 방법.

  1. 순차접근
    카세트 테이프를 사용하는 방식처럼 접근
    읽거나 쓰면 offset은 자동적으로 증가
  1. 직접 접근(임의 접근)
    요즘의 파일 접근방법.
    되감기가 필요없고, 임의의 순서로 접근 가능.

2개의 댓글

comment-user-thumbnail
2024년 7월 30일

재밌는 내용이네요!! 저도 얼른 배우고 싶습니다!😄

1개의 답글