[운영체제] Chapter 10. File Systems

2023. 1. 19. 22:42CS/운영체제

728x90

//공부 기록용 포스팅입니다. 틀린 부분이 있을 경우 댓글로 알려주시면 감사합니다! 😎

 

 

File and File System, Directory and Logical Disk, open( ), File Protection, File System의 Mounting, Access Methods

 

1. File and File system

  • File
    • A named collection of related information: 관련 정보를 이름으로 저장
    • 일반적으로 디스크와 같은 비휘발성의 보조기억장치에 저장
    • 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해 준다.
    • 연산
      • create, delete, read, write
      • reposition(lseek): reposition은 현재 접근하고 있는 위치를 수정해 주는 연산을 한다. 파일은 여러 개의 byte로 구성되어 있고 어느 위치를 읽고 쓰는지를 가리키는 포인터가 있다. 대게는 파일의 시작부터 읽는데 한 번 읽고 나면 그 위치를 가리키는 포인터가 그다음을 가리키고 있다.
      • open: read, write를 하려면 파일을 open 해야 한다. file의 메타 데이터를 메모리로 올려놓는 작업
      • close: read, write이 끝났다면 파일을 close 해야 한다.
  • File attribute 혹은 File의 metadata
    • 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보
      • 파일 이름, 유형, 저장된 위치, 파일 사이즈
      • 접근권한 (읽기/쓰기/실행), 시간 (생성/변경/사용), 소유자 등
  • File system
    • 운영체제에서 파일을 관리하는 부분
    • 파일 및 파일의 메타데이터, 디렉터리(계층적으로 저장) 정보 등을 관리
    • 파일의 저장 방법 결정
    • 파일 보호 등

 

2. Directory and Logical Disk

  • Directory: 파일의 내용으로 디렉터리에 속한 파일 이름 및 파일의 메타데이터들을 갖는 파일
    • 파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일
    • 연산
      • list a directory: directory의 list를 보는 연산
      • search for a file, create a file, delete a file, rename a file: 디렉터리에 속한 파일을 연산
      • traverse the file system: 파일 시스템 전체를 탐색
  • Partition(= Logical Disk)
    • OS가 보는 디스크는 논리적 디스크(= 파티션)
    • 하나의 물리적 디스크 안에 여러 파티션을 두는 게 일반적
    • 여러 개의 물리적 디스크를 하나의 파티션으로 구성하기도 함
    • 물리적 디스크를 파티션으로 구성한 뒤에 각각의 파티션에 ① file system을 깔거나 ② swap area 용도 등의 용도로 사용할 수 있음

 

3. open()

  • 물리적인 메모리 공간: 동작시 실제 물리적인 메모리의 주소 값으로 맵핑한 것이 가상 메모리
  • 논리적인 디스크: 물리적 디스크를 파티션으로 분할하여 드라이브명을 지정한 것으로 C:부터 Z:까지 이름을 붙인다.
  • * per-process file descriptor table
  • ** system-wide open file table

  1. fd = open(”a/b”): 사용자 프로그램이 “/a 밑에 b라는 파일을 오픈하겠다” 시스템 콜 → 시스템 제어권이 OS로 넘어감
  2. root 디렉터리의 metadata는 미리 알려져 있다. OS가 root 디렉토리의 메타데이터를 먼저 물리적인 메모리의 open file table에 올림: root를 open
    • open file table: 전체 프로그램들이 open 한 파일들이 어떠한 것인지를 관리하는 global 한 table 유지
  3. 물리적인 메모리에 올라온 root의 메타데이터를 통해 root의 실제 내용이 디스크 어디에 있는지를 찾을 수 있다.
  4. root의 내용은 root 디렉터리 아래에 있는 파일들의 메타데이터 정보를 가지고 있다.
  5. root에서 a의 메타데이터 정보를 찾아 메모리의 open file table에 올려놓는다.
  6. a의 메타 데이터를 통해 a의 실제 내용이 디스크 어디에 있는지를 찾을 수 있다. (3번)
  7. a에서 b의 메타데이터 정보를 찾아 메모리의 open file table에 올려놓으면 open()이 끝난다. (5번)
  8. 시스템 콜을 호출하면 결괏값을 리턴한다.
    • 각 프로세스마다 그 프로세스가 open 한 파일들에 대한 메타데이터 포인터를 가지고 있는 일종의 배열의 정의되어 있다.
    • 그 배열에서 몇 번째 인덱스가 파일 b의 file descriptor가 되어 그 값을 사용자 프로세스에게 리턴한다.
    • file descriptor: 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값
    • 파일 b의 file descriptor: process A의 PCB에 있다: 프로세스별로 관리하기 위한 자료구조 안에 있다.
  9. read(fd…): 지금부터는 open()을 마쳤기 때문에 b라는 파일을 read 하면 루트 디렉터리부터 다시 찾지 않고 file descriptor가 가지고 있는 b의 위치로 read/write을 요청한다.
  10. read 역시 시스템콜이기 때문에 CPU의 제어권이 OS로 넘어가 PCB에 가서 fd값에 대응하는 파일의 메타데이터를 open file table을 따라가 값을 읽어온다.
  11. 읽은 값을 사용자 프로그램에게 직접 주지 않고 자신의 메모리 공간 일부에 먼저 읽어 놓는다.
  12. 사용자 프로그램에게 그 내용을 copy 해서 전달한다: read() 끝
  13. buffer caching: 동일한 파일의 동일한 위치를 요청하면 디스크까지 가서 읽어오지 않고, OS가 이미 읽어 놓은 내용을 바로 전달한다.
  • buffer caching: 파일에 대한 read, write 시스템에서는 OS가 buffer cache를 가지고 있다. 요청한 내용이 buffer cache에 있던 없든 간에 OS에게 제어권이 넘어가고
    • buffer chahe에 요청한 내용이 있다면 OS가 바로 전달하고
    • buffer cache에 요청한 내용이 없다면 Disk에서 읽어와서 buffer cach에 올려놓고 copy 해서 전달
    → OS에게 무조건 CPU 제어권이 넘어가기 때문에 OS가 모든 정보를 알 아서 LRU, LFU를 사용할 수 있다.

 

4. File Protection

  • 메모리에 대한 protection은 read/write/execution 권한이 있는지 없는지에 대해서만 다룬다.
    • 메모리는 프로세스마다 별도로 가지고 있기 때문에 자기 혼자 밖에 못 봄.
    • 메모리에 대한 protection은 연산에 대해서만 write 할 수 있는 페이지인지, read만 할 수 있는 페이지인지
  • 파일에 대한 protection은 누구에게, 어떤 유형의 접근(read/write/execution)을 허락할 것인가?
  • Access Control
    • Access control Matrix: 가로축에 file, 세로축에 user로 행렬을 사용해서 접근권한을 표시
      • 행렬 안에 공간 낭비가 심함
        → linked list 형태로 주체가 파일: Access Control list: 파일별로 누구에게 어떤 접근 권한 표시
        → 주체가 사용자: Capability list: 사용자별로 자신이 접근 권한을 가진 파일 및 해당 권한 표시
  • Grouping
    • 전체 사용자에 대해 owner(소유주), group(소유주와 동일 그룹), public(나머지 전체 외부 사용자)의 세 그룹으로 구분
    • 각 파일에 대해 세 그룹의 접근 권한(rwx)을 3비트씩으로 표시 → 총 9비트로 전체를 표현할 수 있어 효율적이다.
      • 예) rwxr--r--
    • 일반적으로 사용하는 방법
  • Password
    • 파일마다 password를 두는 방법, 디렉터리 파일에 두는 방법도 가능하다.
    • 모든 접근 권한에 대해 패스워드를 둘 수 있기 때문에 password 암기, 관리 문제가 있다.

 

5. File System의 Mounting

  • 하나의 물리적인 디스크를 파티셔닝을 통해 여러 개의 논리적인 디스크로 나눌 수 있다.
  • 각각의 디스크에는 파일 시스템을 설치해서 사용할 수 있다.
  • 만약 다른 파티션에 설치되어 있는 파일 시스템을 접근해야 한다면? → Mounting
    • Mounting: 루트 파일 시스템의 특정 디렉터리 이름에 또 다른 파티션의 파일 시스템을 mount 하게 되면 → mount 된 디렉터리를 접근하게 되면 다른 파일 시스템의 루트 디렉토리를 접근하게 된다
    • 서로 다른 파티션에 존재하는 파일 시스템에 접근할 수 있게 된다.

 

6. 파일 정보의 접근 방식

  • 순차 접근(sequental access): 카세트테이프를 사용하는 방식처럼 접근
    • A, B, C가 있을 때 A → B → C: A에서 C를 가고 싶을 때에도 B를 꼭 들려서 C를 접근할 수 있다
    • 읽거나 쓰면 offset은 자동적으로 증가
  • 직접 접근(direct access, 임의 접근(random access)): 파일을 구성하는 레코드를 임의의 순서로 접근할 수 있다.
    • A, B, C가 있을 때 A → C: A에서 C로 바로 접근이 가능하다.

 

[복습]

    1. 파일: 관련 정보를 이름으로 저장하는 구조
    2. 파일의 메타데이터: 파일을 관리하기 위한 각종 정보들이 파일의 내용
    3. 파일 시스템: 운영체제에서 파일을 관리하는 부분
    4. 디렉터리: 디렉터리에 속한 파일의 이름 및 파일의 메타데이터를 파일의 내용으로 갖는 파일
    5. 파티션(= 논리적 디스크): 하나의 물리적 디스크 안에 여러 파티션을 두는 게 일반적이다.
    6. open(): 파일의 메타데이터를 물리적 디스크에서 논리적 메모리로 올려놓는 작업
      • per-process file descriptor table
      • system-wide open file table
    7. File Protection: 누구에게 어떤 유형의 접근을 허락할 것인가?
      • Access control matrix: Access Control list(파일 주체), Capability list(사용자 주체)
      • Grouping: owner, group, public 세 그룹의 접근 권한을 9비트로 표시
      • Password
    8. Mounting: 서로 다른 파티션에 존재하는 파일 시스템에 접근할 수 있는 방법
    9. 파일 정보의 접근 방식: 순차 접근, 직접 접근

 

 

 

 


이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제] 강의 정리입니다.

 반효경 교수님의 [운영체제와 정보기술의 원리] 교재를 참고하였습니다. 감사합니다.

https://core.ewha.ac.kr/publicview/C0101020140516150939191200?vmode=f 

 

반효경 [운영체제] 24. File Systems 1

설명이 없습니다.

core.ewha.ac.kr

 

728x90