reference: https://pages.cs.wisc.edu/~remzi/OSTEP/, 시스템 프로그래밍, 운영체제 수업(최종무 교수님)
1. Disk device driver(디스크 관리 시스템 프로그램)
그림1. disk device driver
- 물리적 디스크를 논리적 디스크(블록들의 집합)로 추상화(a collection of disk blocks)
- 디스크 명령어를 통한 제어 (ATA command: type, start, size, device..)
- 디스크 초기화, 스케줄링, 에러 handling ..
2. File system
그림2. file system
- 파일 추상화 지원. (file = stream of bytes)
- 파일과 디스크 블록 연결(inode 구조 or FAT 구조)
- 파일 속성/접근제어, 계층구조(디렉터리) 지원
cf. 블록의 불연속 할당 vs 연속 할당
- 불연속 할당: 성능은 비교적 나쁨. 할당과 반납이 유연.
- 연속 할당: 성능은 좋음(디스크 접근 시간이 줄어듬). 그러나 할당과 반납이 유연하지 못함(예를 들어 파일 크기가 증가될 때 재배치가 필요할 수 있다).
- 대부분의 파일 시스템은 불연속 할당을 더 많이 사용. 파일 크기 변경이 빈번하기 때문이다.
- 한번 파일 사이즈가 정해진 상태에서 변경이 빈번하지 않은 멀티미디어 파일 시스템의 경우 연속 할당을 많이 사용.
inode concept
source: https://www.youtube.com/watch?v=tMVj22EWg6A
- 파일 시스템에서 파일 생성 시 파일에 대한 정보를 담는 자료구조
- 또는 파일 시스템에서 파일을 관리하기 위한 객체(metadata)
- 파일 시스템에서 자체적으로 생성(사용자가 생성x)
- UFS, FFS, Ext2/3/4, LFS 등 다양한 파일 시스템에서 사용
- 마찬가지로 디스크에 저장됨
기본 구조
- 파일 관련 속성 정보들(ex, "ls -l"을 통해 확인할 수 있는 것) 및 디스크 블록 위치를 저장할 수 있는 구조
(1) 속성 정보 + (2) 디스크 블록 위치
- file size
- loactions of disk blocks for a file
- file owner, access permission
- time information
- file type: regular, directory, device, pipe, socket ..
- inode도 마찬가지로 디스크에 저장됨
(1) 속성
- i_node_number
- i_mode(접근 권한)
- i_nlink, i_dev
- i_uid, i_gid
- i_op, i_size
- i_atime, ctime, mtime
(2) 위치 정보(디스크 블록 위치)
- 12 direct block(pointer) => data block(실제 데이터)
- 3 indirect block(pointer) => index block(블록 포인터 저장)
※ 하나의 포인터의 크기는 약 4B, index block(약 4KB)에는 총 1000개 정도의 블록 포인터 존재.
3. System call
- 인터페이스 지원(open(), read(), write(), close() ..)
fd = open("Reports.doc", .. );
read(fd, buf, size); or write(fd, buf, size);
close(fd);
그림.
파일 디스크립터
- 프로그램 상에서는 파일 이름 대신 파일 디스크립터(file descriptor)을 사용
- open() 시스템 콜의 반환값으로 전달됨
- read(), write(), .. close()와 같은 시스템 콜에서 인자로서 사용됨
- 파일 디스크립터는 다양한 커널 객체를 통해 inode 객체와 연결됨
Appendix. Layered Architecture for Abstraction
Application program
=> library (ex, printf())
=> system call (ex, sys_write())
=> file system (ex, fs_write())
=> device driver (ex, request())
=> device itself