해당 게시글은 운영체제 스터디를 위해 반효경 교수님 운영체제 강의를 보고 기록한 게시물입니다. 틀린 정보가 있다면 언제든 지적해주세요🙏🏻
입출력 시스템
Disk Structure
Disk Management
- Physical formatting (low-level formatting)
- 디스크를 컨트롤러가 읽고 쓸 수 있도록 실제로 섹터 단위로 나누는 과정.
- Partitioning
- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정.
- OS는 이것을 독립적 디스크로 취급.
- Logical formatting
- 파일 시스템을 만드는 것. FAT, inode 등의 구조 포함
- Booting
- ROM에 있는 기계어 실행.
- Small bootstrap loader: 부팅을 할 때 쓰는 아주 작은 로더.
-Full bootstrap loader program: Sector 0.
디스크에서 운영체제의 위치를 찾아서 로딩.

디스크를 읽는 방식



엘리베이터 스케줄링도 스캔 같은 방식. 스캔 알고리즘은 트랙의 위치에 따라서 대기시간이 다르다.



- N-scan: 요청이 들어온 큐를 보면서 큐에 요청이 들어온건 처리 함. 이동하는 중에 들어온 것 요청은 다음에 처리.
- Look은 스캔을 변형, C-look은 C-scan을 변형한 것.


- 신뢰성 향상 -> 디스크 하나가 고장나더라도 고장나지 않은 디스크를 읽어서 사용. 이를 위해 중복저장 = 미러링, 쉐도잉
- 완전 중복저장은 공간낭비가 심하기 때문에 중복률에 따라 여러가지 버전이 있다
Unix 파일 시스템
- Super 블록: 파일시스템의 총체적 레이아웃 정보 보관
- 블록의 크기, inode의 수, data blaock의 수 free block list의 head
- inode블록 : 메타데이터 보관 (실제 데이터 블록의 위치 정보 포함)
- Data 블록 : 실제 데이터 보관
Ext2 파일시스템
- 블록의 그룹화: 메타데이터와 실제 데이터를 가깝게 배치하여 디스크 탐색 시간 감소
- 수퍼블록의 중복 저장: 수퍼블록을 그룹마다 중복저장하여 디스크 오류에 대비
- 데이터 블록 비트맵: 사용중인 데이터 블록과 빈 데이터 블록의 표시
- inode 비트맵: 사용중인 아이노드와 빈 아이노드의 표시
- inode 테이블: 실제 아이노드의 저장 위치
Ext4 = ExT2 + 저널링
- 파일시스템에 있는 내용을 작업하기 위해서는 메인메모리의 버퍼캐시에 올려두고 작업. 버퍼캐시는 휘발성 (전원이 나가면 내용이 사라짐) 수정된 내용은 파일 시스템에 반영을 해야함. (파일 시스템은 비휘발성)
- 갑작스런 전원 공급 중단 - 파일 시스템 일관성 훼손 발생(inconsistency)
-> 해결방법: 저널링
버퍼캐시에 올라온 데이터가 수정됐을 때 주기적으로 스토리지에 기록 - 5~30초 단위로 저널 영역이라는 곳에 기록. 이후에 파일 시스템 원래 위치에 반영(checkpointing)
저널 영역에 쓰는 도중에 크래싱이 났을 땐 저널영역을 날려도 파일 시스템은 온전하게 보관이 되어 있기 때문에 (옛날 것이라도) 안전.

Ext4의 저널링
- 메타데이터 저널링 모드
- 저널링 주기가 도래하면 데이터를 파일 시스템에 저장한 후 메타데이터를 저널 영역에 기록
- 위치정보 같은 것이 메타데이터에 들어 있기 때문에 메타데이터를 저널링 해주면 파일 시스템 자체가 깨지진 않음.
파일 시스템을 위한 버퍼캐시 알고리즘
-
LRU (가장 오래전에 사용된 블록 삭제): 가장 마지막에 사용된 시점만을 고려한다는 것이 단점.
-
LFU (사용횟수가 가장 적은 블록삭제): 사용된 횟수만을 보지 사용 시점을 고려하지 않는 것이 단점

-
LRFU 알고리즘


-
참조시점부터 흐른시간을 가지고 계산.
- t시점의 계산된 밸류만 있으면 t시점부터 지금까지 얼마나 시간이 흘렀는가에 대한 로우에 흐른 시간만큼 곱해주면 임의의 시점에 블럭의 가치를 계산할 수 있다. 과거의 모든 기록을 참조할 필요 없이 그 때 그 블록의 가치가 얼마였고 시간이 언제였는지 알고 있으면 블럭의 가치를 흐른 시간을 가지고 계산 가능하고 이를 통해 스페이스 오버헤드 문제를 해결 할 수 있음.
-
타임 오버 헤드
재참조되지 않은 블럭들 간에는 상대적인 가치의 대소관계가 변하지 않는다


