Home [운영체제 스터디] 파일 시스템
Post
Cancel

[운영체제 스터디] 파일 시스템

🌟 본 게시물은 이화여자대학교 반효경 교수님 강의를 참고로 작성한 게시물 입니다. 틀린 내용은 꼬옥 지적 부탁드립니다 ! 🌟

📁 File System

1. File and File System

✔️ File

  • “A named cllection of related information”
  • 일반적으로 비휘발성의 보조기억장치에 저장
  • 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해줌
  • Operation
    • create, read, wrtie reponsition (lseek), delete, open, close 등
    • (reponsition) 파일의 내용 위치정보 재정의

✔️ File attribute ( 혹은 파일의 metadata)

  • 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들
    • 파일 이름, 유형, 저장된 위치, 파일 사이즈
    • 접근 권한 (읽기/쓰기/실행), 시간 (생성/변경/사용), 소유자 등

✔️ File system

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

2. Directory and Logical Disk

✔️ Directory

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

✔️ Partition (=Logical Disk)

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

3. File Operation

파일에 대한 연산은 모두 system call

✔️ open(”/a/b/c”)

  • 디스크로부터 파일 c의 메타데이터를 메모리로 가지고 옴
  • 이를 위하여 directory path 를 search
    • 루트 디렉토리 “/”를 open하고 그 안에서 파일(디렉토리) “a”의 위치 획득
    • 파일 “a”를 open하고 그 안에서 파일(디렉토리) “b”의 위치 획득
    • 파일 “b”를 open하고 그 안에서 파일(디렉토리 일수도 있음) “c”의 위치 획득
    • 파일 “c”를 open한다.
  • 파일의 경로가 길어질 경우 Directory path의 search에 너무 많은 시간이 소요 됨
    • Open을 read / write와 별도로 두는 이유임
    • 한번 open한 파일은 read / write 시 directory search 불필요
  • Open file table
    • 현재 open 된 파일들의 메타데이터 보관소 (in memory)
      • 파일을 오픈하면 해당 메타데이터가 메모리에 저장됨
    • 디스크의 메타데이터보다 몇 가지 정보가 추가
      • Open한 프로세스의 수
      • File offset: 파일 어느 위치 접근 중인지 표시 (별도 테이블 필요)
  • File descriptor (file handle, file control block)
    • Open file table에 대한 위치 정보 (프로세스 별)

image

  1. 프로세스 A가 open(”/a/b”)를 호출한다. (system call)
  2. 루트 디렉토리의 메타데이터 정보를 메모리에 할당한다.
  3. 루드 디렉토리의 메타데이터 정보로 디스크에 저장된 루트 디렉토리의 실제 내용을 검색한다 (루트 디렉토리 하위의 파일들 메타 데이터)
  4. 루트 디렉토리 컨텐츠에 파일 A의 정보가 존재한다. A는 사용자 프로그램이 호출한 파일의 경로에 포함되어 있기 때문에 A의 메타 데이터를 메모리에 할당한다.
  5. A의 메타데이터 정보로 디스크에 저장된 A의 컨텐츠 위치를 찾는다.
  6. A의 컨텐츠에 저장된 B의 메타데이터 정보를 메모리에 할당한다.
  7. open() System call의 결과값을 사용자 프로그램에게 전달한다 (파일 b의 위치를 가리키는 디스크립터를 리턴함)
  8. read(fd) = open()에서 리턴된 디스크립터와 읽을 범위를 지정하면 파일을 복사하고 메모리에 저장한 뒤(버퍼 캐싱) 프로그램에게 전달한다. (범위를 지정하지 않으면 처음부터 파일을 읽음)

4. File Protection

각 파일에 대해 누구에게 어떤 유형의 접근(read/write/execution)을 허락할 것인가?

✔️ Acess Control 방법

image

  • Acess Control list: 파일별로 누구에게 어떤 접근 권한이 있는지를 표시한다. 연결 리스트 형태로 구현이 가능하다.
  • Capabiliy: 사용자별로 자신이 접근 권한을 가진 파일 및 해당 권한을 표시한다. 마찬가지로 연결 리스트 형태로 구현이 가능하다.

✔️ Grouping

  • 전체 user를 owner, group, public의 세 그룹으로 구분
  • 일반적으로 가장 많이 사용되는 형식
  • 각 파일에 대해 세 그룹의 접근 권한(rwx)를 3비트씩으로 표시
  • (예) UNIX
    • rwx(owner) r—(group) r—(other)
      • owner는 모든 권한이 부여되어있고 group과 public은 읽기 권한만 부여된 상태이다.

✔️ Password

  • 파일마다 password를 두는 방법 (디렉토리 파일에 두는 방법도 가능)
  • 모든 접근 권한에 대해 하나의 password: all-or-nothing
  • 접근 권한별 password: 암기 문제, 관리 문제

5.File System의 Mounting

앞에서 하나의 물리적 디스크를 파티션으로 나눠 여러개의 논리적 디스크로 사용할 수 있다고 설명했다. 각각의 논리적 디스크에는 파일 시스템을 설치할 수 있는데, 서로 다른 논리적 디스크에 존재하는 파일 시스템에 접근하려면 어떻게 해야할까? 다른 파티션에 존재하는 파일시스템에 접근하게 해주는 Mounting 기법이 존재한다. Mouting 기법이 무엇인지 알아보자

image

  1. 최상위 파일 시스템에 다른 파티션에 존재하는 파일 시스템에 연결된 디렉토리를 생성한다
  2. 연결된 디렉토리에 진입하면 해당 파티션에 존재하는 파일 시스템에 접근이 가능하다.

6. Access Methods

✔️  시스템이 제공하는 파일 정보의 접근 방식

  • 순차 접근 (sequential access)
    • 카세트 테이프를 사용하는 방식처럼 접근
    • 읽거나 쓰면 offset은 자동적으로 증가
  • 직접 접근 (direct access, random access)
    • LP 레코드 판과 같이 접근하도록 함
    • 파일을 구성하는 레코드를 임의의 순서로 접근할 수 있음

Reference


이화여자대학교 반효경 교수님 운영체제 강의

This post is licensed under CC BY 4.0 by the author.

[운영체제 스터디] 가상 메모리와 Page Fault

[네트워크 스터디] Chapter_02 TCP/IP의 데이터를 전기 신호로 만들어 보낸다