운영체제 스터디 10주차 - 파일 시스템

케이·2022년 4월 13일
0

운영체제 스터디

목록 보기
10/11

해당 게시글은 운영체제 스터디를 위해 반효경 교수님 운영체제 강의를 보고 기록한 게시물입니다. 틀린 정보가 있다면 언제든 지적해주세요🙏🏻

파일 시스템

파일

파일은 이름을 통해서 접근하는 것

  • A named collection of related information

  • 비휘발성의 보조기억장치에 저장

  • Operation: create, read, write, reposition(lseek), delete, open, close 등

  • File attribute - 파일의 metadata

    • 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들 : 파일 이름, 유형, 저장된 위치, 파일 사이즈, 접근 권한 등등
  • File system

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

    • Directory: 파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일. 그 디렉토리 속한 파일 및 파일 attribute들.
    • Operation: create, search, delete, list a directory, rename, traverse the file system.
  • partition(=logical disk)

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

Open

특정 파일의 메타데이터를 메모리에 올려두는 것

File protection

  • 각 파일에 대해 누구에게 어떤 유형의 접근을 허락할 것인가?

  • AccessControl Matrix (행렬)

    • Access control list: 파일을 주체로 해서 접근권한이 있는 사용자를 묶는 방법.
    • Capability: 각각의 사용자를 중심으로 사용자에게 접근권한이 있는 파일들을 링크드 리스트 형태로 파일 목록을 연결해 놓는 형태
  • Grouping: 일반적인 운영체제에서 사용. 전체 user를 owner, group, public의 세 그룹으로 구분. 각 파일에 대해 세 그룹의 접근 권한을 3비트씩으로 표시.
    예시) rwsr—r—(owner, group, other)

  • Password: 파일마다 password를 두는 방법. 모든 접근 권한에 대해 하나의 password. 접근 권한별 password 암기 문제, 관리 문제.

물리적인 디스크는 파티션을 통해서 여러개의 논리적인 디스크로 나눌 수 있다. 다른 파티션에 있는 파일 시스템에 접근할때 어떻게 해야할까? -> 이를 위해 마운팅이 있음.

File System Implemention

파일 접근에는 순차적인 접근과 직접 접근이 있다.
직접 접근이 가능한 매체라도 데이터를 관리가 어떻게 되느냐에 따라서 순차적인 접근이 허용되는 경우가 있다.

디스크에 파일을 저장하는 방법엔 크게 세가지가 있음
1. Contiguous allocation
2. Linked allocation
3. Indexed allocation

  1. Contiguous allocation - 연속할당방법

단점: 외부조각이 생길 수 있음. 길이가 다 다르기 때문에.
File grow가 어려움(파일의 크기가 커지는 것에 대한 제약이 있을 수 있음) 커질것을 대비해서 미리 할당하면 내부 조각 발생.

장점: I/O가 빠름. process의 swapping 용도, realtime file용도로 사용.
Direct access(=random access) 가능

  1. Linked allocation
    빈 위치 어디에든 넣을 수 있음.

장점: 외부조각 발생 안함
단점: 랜덤 엑세스 불가능. 하나의 sector가 고장나 pointer가 유실되면 많은 부분을 잃음.

  1. Indexed Allocation

장점: 외부조각이 생기지 않으면서 직접 접근이 가능함
단점: 아무리 작은 파일이라도 블럭이 두개 필요하다(인덱스를 위한 블럭, 실제 저장을 위한 블럭)-> 공간이 낭비.(실제로 많은 파일들이 작음), 굉장히 큰 파일의 경우 인덱스 블럭 하나로 표시를 할수 없다. -> 해결방안: linked scheme, multi-level index

UNIX 파일 시스템의 구조

  • Boot block: 부팅에 필요한 정보
  • Super block: 파일 시스템에 관한 총체적인 정보
  • Inode: 파일 이름을 제외한 파일의 모든 메타 데이터를 저장
  • Data block: 파일의 실제 내용을 보관

파일의 메타데이터는 그 파일의 디렉토리에 갖고 있다고 하지만 유닉스 파일 시스템의 경우 디렉토리는 메타 데이터의 일부만 가지고 있고 inode list에 저장되고 있다. 파일의 이름은 디렉토리가 가지고 있고 다른 메타데이터들은 Inode가 가지고 있다.

FAT File System

  • FAT: 파일의 메타데이터 중 일부를 보관 (지극히 제한적 - 위치 정보) 나머지 정보는 디렉토리가 가지고 있음. 디스크가 관리하는 데이터 블럭의 개수만큼 배열의 크기를 가지고 있음.

Free-space management

  • 비어 있는 블럭을 어떻게 발견하느냐에 관한 것.
  • Bit map을 두는 방법과 linked list, grouping, counting 하는 방법이 있음
  1. Bit map: 각각의 블럭 별로 비트를 둬서 사용중인지 아닌지 0,1로 표시함. 연속적인 블럭을 찾는데 효과적.

  2. Linked-list: 비어 있는 블럭들을 연결해두는 방법. 비어 있는 첫번째 위치를 가지고 있음. 비트맵에 비해 추가적인 공간 낭비가 없지만 연속적인 공간을 찾는 것은 쉽지 않다.

  3. Grouping: linked list 방법의 변형. 연속적인 빈 블럭을 찾기에 효과적이진 않음

  4. Counting: 연속적인 빈블럭을 표시하기 위해서 빈 블럭에 첫번째에 위치하고 몇개가 이어져 있는지 쌍으로 관리.

위의 해쉬 테이블 - 파일의 이름을 해쉬함수를 적용함.
Collision 서로 다른 파일에 대해서 결과값이 같은것으로 매핑되는.. 문제가 발생할 수 있다.

Long file name: 대부분의 메타데이터의 길이는 한정되어 있음. 파일이름은 그렇지 않다.

VFS vs NFS

  • Virtual file system
    파일 시스템에 접근할때 개별 파일시스템에 상관없이 vfs 통해서 파일에 접근.

  • Network File system
    원격에 저장되어 있는 파일 시스템에 접근 할 때 사용.

  • 어떤 프로그램이 실행되다가 디스크에 있는 파일을 읽어달라 부탁할때? 이때는 운영체제에게 시스템 콜을 하여 부탁. -> 파일을 읽어다가 버퍼 캐시 영역에 읽어두고 사용자 메모리 영역에 카피를 해서 보내게 된다. 이 때 버퍼캐시는 파일 전달 뒤에 버리지 않고 보관하고 있다가 똑같은 파일에 대해 요청이 들어왔을 때 버퍼 캐시에 있던 내용을 사용자에게 바로 전달. 이래서 버퍼 캐시를 사용. 파일 입출력을 빠르게 하기 위해서.

  • 페이지 캐시는 프로세스의 주소공간 중 당장 사용되는 것을 페이지 캐시에 올려두고
    버퍼 캐시는 파일 시스템에서 당장 사용되는 것을 버퍼 캐시에 올려두는.. 서로 다름.

  • 이 두가지 캐시를 운영체제가 관리하는 방법에는 차이가 있음. Replace 알고리즘을 사용한다.

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

0개의 댓글