Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mongoose
- 자료구조
- MySQL
- Queue
- typeORM
- class
- Express
- 공룡게임
- nestjs
- nodejs
- JavaScript
- Sequelize
- Python
- dfs
- Bull
- OCR
- jest
- GIT
- cookie
- 게임
- TypeScript
- Nest.js
- game
- 정렬
- Dinosaur
- flask
- react
- MongoDB
- AWS
Archives
- Today
- Total
포시코딩
[운영체제] 9. File Systems (1) 본문
728x90
키워드
file system, metadata, partition, open, file protection, access control, grouping, mounting
File and File System
File
- "A named collection of related information"
-> 이름을 통해 접근하는 단위 - 일반적으로 비휘발성의 보조기억장치에 저장
- 운영체제는 다양한 저장 장치를 file이라는 동일한 논리적 단위로 볼 수 있게 해줌
- Operation
-> create, delete, read, write, reposition(lseek), open, close 등- open: 그 파일을 disk에서 memory로 내용을 올려놓는게 아닌
파일의 metadata를 메모리에 올려놓는 작업을 의미
- open: 그 파일을 disk에서 memory로 내용을 올려놓는게 아닌
File Attribute
(혹은 파일의 metadata)
- 파일 자체의 내용이 아니라 파일을 관리하기 위한 각종 정보들
- 파일 이름, 유형, 저장된 위치, 파일 사이즈
- 접근 권한(읽기/쓰기/실행), 시간(생성/변경/사용), 소유자 등
File System
- 운영체제에서 파일을 관리하는 부분
- 파일 및 파일의 metadata, 디렉토리 정보 등을 관리
- 파일의 저장 방법 결정
- 파일 보호 등
Directory and Logical Disk
Directory
- 파일의 metadata 중 일부를 보관하고 있는 일종의 특별한 파일
- 그 디렉토리에 속한 파일 이름 및 파일 attribute들을 내용으로 하는 파일
- 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()
파일의 metadata를 memory에 올려놓는 행위
open("/a/b/c")
- root 디렉토리는 미리 알려져 있기 때문에 root 디렉토리부터 경로를 따라 내려가며 "c"의 위치를 찾음
- 디스크로부터 파일 c의 metadata를 memory로 가지고 옴
- 이를 위해 directory path를 search
- 루트 디렉토리 "/"를 open하고 그 안에서 파일 "a"의 위치 획득
- 파일 "a"를 open한 후 read하여 그 안에서 파일 "b"의 위치 획득
- 파일 "b"를 open한 후 read하여 그 안에서 파일 "c"의 위치 획득
- 파일 "c"를 open한다.
- Directory path의 search에 너무 많은 시간 소요
- Open을 read/write와 별도로 두는 이유
- 한번 open한 파일은 read/write 시 directory search 불필요
- Open file table
- 현재 open된 파일들의 metadata 보관소(in memory)
- 디스크의 metadata보다 몇 가지 정보가 추가
-> Open한 프로세스의 수
-> File offset: 파일 어느 위치 접근 중인지 표시(별도 테이블 필요)
- File descriptor(file handle, file control block)
- Open file table에 대한 위치 정보(프로세스 별)
- Open file table에 대한 위치 정보(프로세스 별)
- FIle System의 buffer cache 환경에서는 이미 buffer cache에 내용이 있든 없든
시스템 콜을 통해 CPU가 운영체제에 넘어온다.
때문에 buffer caching 환경에서는 LRU, LFU 알고리즘을 자연스럽게 사용할 수 있다.
File Protection
(=파일 접근 권한)
- Memory에 대한 protection에 대해서는 memory를 process마다 별도로 가지고 있기 때문에
혼자밖에 보지 못해 접근 권한. 즉, 연산이 무엇인지 -> write 할 수 있는지 read만 할 수 있는지의
protection만 해주면 됐던 반면 - File에 대한 protection은 해당 파일을 여러 사용자 또는 프로그램이 같이 사용할 수 있기 때문에
권한이 누구한테 있는지와 접근(연산)이 어떤게 가능한지에 대한 두 가지를 같이 가지고 있어야 한다.
Access Control 방법 세 가지
Access Control Matrix
- 위 두가지 종류의 방법을 통해 access control matrix를 사용하면
모든 사용자에 대해 모든 파일의 접근 권한을 제어하는 것이 가능하지만
부가적인 오버헤드가 너무 커서 일반적인 운영체제에서는 Grouping을 통해 파일의 접근 권한을 제어하고 있다.
Grouping
- 전체 user를 owner, group, public의 세 그룹으로 구분
- 각 파일에 대해 세 그룹의 접근 권한(rwx)을 3비트씩으로 표시
-> 파일 하나에 대해 총 9개의 비트만 있으면 됨 (굉장히 효율적)
Password
- 파일마다 password를 두는 방법(디렉토리 파일에 두는 방법도 가능)
- 모든 접근 권한에 대해 하나의 password: all-or-nothing
- 접근 권한별 password: 암기 문제, 관리 문제
File System의 Mounting
- 만약 다른 파티션에 설치된 파일 시스템에 접근하려면 어떻게 해야할까?
-> 이걸 제공하기 위해 mounting이라는 연산이 존재
Mounting
- root 파일 시스템의 특정 디렉토리 이름에 또 다른 파티션에 있는 파일 시스템을 mount 해주면
해당 mount된 디렉토리에 접근 시 또 다른 파일 시스템의 root 디렉토리에 접근하는 꼴이 됨
Access Methods
(=파일 접근 방법)
시스템이 제공하는 파일 정보의 접근 방식
순차 접근
(=sequential access)
- 카세트 테이프를 사용하는 방식처럼 접근
- 읽거나 쓰면 offset은 자동적으로 증가
직접 접근
(=direct access, random access)
- LP 레코드 판과 같이 접근하도록 함
- 파일을 구성하는 레코드를 임의의 순서로 접근할 수 있음
728x90
'CS (Computer Science)' 카테고리의 다른 글
[운영체제] 9. File Systems (2) (0) | 2023.05.29 |
---|---|
[운영체제] 8. Virtual Memory (2) (0) | 2023.05.23 |
[운영체제] 8. Virtual Memory (1) (0) | 2023.05.18 |
[운영체제] 7. Memory Management (5) - 정리 (0) | 2023.05.17 |
[운영체제] 7. Memory Management (4) (0) | 2023.05.17 |