[운영체제] Chapter 10. File Systems
2023. 1. 19. 22:42ㆍCS/운영체제
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
- fd = open(”a/b”): 사용자 프로그램이 “/a 밑에 b라는 파일을 오픈하겠다” 시스템 콜 → 시스템 제어권이 OS로 넘어감
- root 디렉터리의 metadata는 미리 알려져 있다. OS가 root 디렉토리의 메타데이터를 먼저 물리적인 메모리의 open file table에 올림: root를 open
- open file table: 전체 프로그램들이 open 한 파일들이 어떠한 것인지를 관리하는 global 한 table 유지
- 물리적인 메모리에 올라온 root의 메타데이터를 통해 root의 실제 내용이 디스크 어디에 있는지를 찾을 수 있다.
- root의 내용은 root 디렉터리 아래에 있는 파일들의 메타데이터 정보를 가지고 있다.
- root에서 a의 메타데이터 정보를 찾아 메모리의 open file table에 올려놓는다.
- a의 메타 데이터를 통해 a의 실제 내용이 디스크 어디에 있는지를 찾을 수 있다. (3번)
- a에서 b의 메타데이터 정보를 찾아 메모리의 open file table에 올려놓으면 open()이 끝난다. (5번)
- 시스템 콜을 호출하면 결괏값을 리턴한다.
- 각 프로세스마다 그 프로세스가 open 한 파일들에 대한 메타데이터 포인터를 가지고 있는 일종의 배열의 정의되어 있다.
- 그 배열에서 몇 번째 인덱스가 파일 b의 file descriptor가 되어 그 값을 사용자 프로세스에게 리턴한다.
- file descriptor: 프로세스에서 특정 파일에 접근할 때 사용하는 추상적인 값
- 파일 b의 file descriptor: process A의 PCB에 있다: 프로세스별로 관리하기 위한 자료구조 안에 있다.
- read(fd…): 지금부터는 open()을 마쳤기 때문에 b라는 파일을 read 하면 루트 디렉터리부터 다시 찾지 않고 file descriptor가 가지고 있는 b의 위치로 read/write을 요청한다.
- read 역시 시스템콜이기 때문에 CPU의 제어권이 OS로 넘어가 PCB에 가서 fd값에 대응하는 파일의 메타데이터를 open file table을 따라가 값을 읽어온다.
- 읽은 값을 사용자 프로그램에게 직접 주지 않고 자신의 메모리 공간 일부에 먼저 읽어 놓는다.
- 사용자 프로그램에게 그 내용을 copy 해서 전달한다: read() 끝
- buffer caching: 동일한 파일의 동일한 위치를 요청하면 디스크까지 가서 읽어오지 않고, OS가 이미 읽어 놓은 내용을 바로 전달한다.
- buffer caching: 파일에 대한 read, write 시스템에서는 OS가 buffer cache를 가지고 있다. 요청한 내용이 buffer cache에 있던 없든 간에 OS에게 제어권이 넘어가고
- buffer chahe에 요청한 내용이 있다면 OS가 바로 전달하고
- buffer cache에 요청한 내용이 없다면 Disk에서 읽어와서 buffer cach에 올려놓고 copy 해서 전달
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: 사용자별로 자신이 접근 권한을 가진 파일 및 해당 권한 표시
- 행렬 안에 공간 낭비가 심함
- Access control Matrix: 가로축에 file, 세로축에 user로 행렬을 사용해서 접근권한을 표시
- 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로 바로 접근이 가능하다.
[복습]
- 파일: 관련 정보를 이름으로 저장하는 구조
- 파일의 메타데이터: 파일을 관리하기 위한 각종 정보들이 파일의 내용
- 파일 시스템: 운영체제에서 파일을 관리하는 부분
- 디렉터리: 디렉터리에 속한 파일의 이름 및 파일의 메타데이터를 파일의 내용으로 갖는 파일
- 파티션(= 논리적 디스크): 하나의 물리적 디스크 안에 여러 파티션을 두는 게 일반적이다.
- open(): 파일의 메타데이터를 물리적 디스크에서 논리적 메모리로 올려놓는 작업
- per-process file descriptor table
- system-wide open file table
- File Protection: 누구에게 어떤 유형의 접근을 허락할 것인가?
- Access control matrix: Access Control list(파일 주체), Capability list(사용자 주체)
- Grouping: owner, group, public 세 그룹의 접근 권한을 9비트로 표시
- Password
- Mounting: 서로 다른 파티션에 존재하는 파일 시스템에 접근할 수 있는 방법
- 파일 정보의 접근 방식: 순차 접근, 직접 접근
이화여자대학교 반효경 교수님의 [2014년 1학기 운영체제] 강의 정리입니다.
반효경 교수님의 [운영체제와 정보기술의 원리] 교재를 참고하였습니다. 감사합니다.
https://core.ewha.ac.kr/publicview/C0101020140516150939191200?vmode=f
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] Chapter 11. File Systems Implementation (2) (0) | 2023.02.01 |
---|---|
[운영체제] Chapter 11. File Systems Implementation (1) (0) | 2023.02.01 |
[운영체제] Chapter 9. Virtual Memory (2) (0) | 2023.01.19 |
[운영체제] Chapter 9. Virtual Memory (1) (0) | 2023.01.19 |
[운영체제] Chapter 8. Memory Management (4) (0) | 2023.01.18 |