분류 전체보기(48)
-
[Operating System] Crash Consistency
Crash Consistency란? Crash가 발생하더라도 복구 가능하도록 대비를 하는 것. (옛날 데이터만 있거나, 새로운 데이터만 있거나 둘 중 하나의 상태여야만 한다. 둘 다 반반 씩 있는 경우는 절대 존재해서는 안 된다.) Write 시에 inode, bitmap, data block이 모두 올바르게 atomic transaction으로 업데이트 되어야 한다. 예를 들어 append를 하는 경우에, data bitmap, inode, data block 모두가 수정이 되어야 하나의 append 연산이 완료되었다고 볼 수 있다. Crash가 발생했을 때 이전 상태로 돌아가거나 업데이트 하려던 상태로 복구 가능해야 한다. 가능한 Crash 시나리오 참고) 디스크에서는 하나의 sector에 대해서 a..
2020.06.03 -
[Operating System] FFS (Fast File System)
1. 어떻게 복잡한 파일 시스템의 성능을 올릴 것인가? 2. 시간이 지남에 따라 파일 시스템의 성능이 저하되는 이유는 무엇인가? 3. 어떻게 적절한 블록 크기를 고를 수 있을까? 4. Internal fragmentation을 피하는 방법은? 5. 디스크 상에서 서로 관련 있는 블록끼리 가까이 위치시키는 방법은? 파일 시스템의 종류 1. Local FFS (Fast File System) LFS (Log-Structured File System) 2. Network NFS (Network File System) AFS (Andrew File System) 기존 파일 시스템의 문제 여기에서 말하는 기존 파일 시스템은 이전 포스팅에서 설명한 가장 기본적인 파일 시스템 구조를 말한다. 1. 시간이 흐름에 따라..
2020.06.03 -
[Operating System] File System Implementation
디스크 구조 디스크는 여러개의 block들로 구성되어 있으며 block 단위로 allocate, free한다. 또한 virtual memory와 마찬가지로 logical disk - physical disk의 virtualization이 존재한다. 어떻게 공간 할당을 할 것인가? 공간할당 방법 디자인 시 고려사항: fragmentation, access performance, meta-data overhead 1. Contiguous Allocation 장점 sequential access 시 매우 좋음. 단순함 meta-data 오버헤드 적음 단점 External fragmentation 최악 2. Extend-based 파일 하나당 여러개의 연속적인 space를 할당한다. offset + size를 ..
2020.06.02 -
[Operating System] File System API
파일이란 읽고 쓸 수 있는 영구적인 byte array이다. 각각의 파일은 inode number라는 low-level 이름을 가지고 있다. (inode 하나가 file 하나를 가리킨다.) File Name inode number 하나의 FS에서 각각의 inode number는 유일하다. (다른 FS끼리는 같은 넘버가 사용될 수 있음) inode number는 삭제된 뒤에는 재사용 가능하다. path inode #는 유저에게 친숙하지 않기 때문에 string file name을 따로 정의하고 inode와 매핑시킨다. path-inode 간의 매핑에 대한 정보는 root 파일(inode 2번)에 저장된다. 따라서 특정 파일이나 directory를 read할 때 root inode부터 읽어야한다. 만약 /e..
2020.06.02 -
[Operating System] RAID (Redundant Array of Inexpensive Disk)
(1) capacity, (2) reliability, (3) performance를 위해서 하나의 시스템에서도 여러 개의 디스크를 사용한다. JBOB vs RAID JBOB: 각각의 디스크 마다 독립적인 FS가 존재하는 형태. 그냥 용량만 늘어난 것이 전부 RAID: 여러 개의 physical disk를 하나의 logical disk와 같이 사용한다. user application과 FS 상에서는 마치 한 개의 disk만 다루는 듯하게 보임. transparent, deployable 참고) RAID에 "Inexpensive"라는 단어가 들어간 이유는 말 그대로 값이 싼 디스크 여러 개를 통해 고성능을 낼 수 있도록 만들어졌기 때문이다. RAID 특징 Performance와 Capacity 상의 이점 ..
2020.06.02 -
[Operating System] I/O Devices
I/O Bus 빠른 I/O와 느린 I/O를 구분하기 위해서 여러 hierarchy의 I/O bus가 존재한다. I/O 버스는 I/O 디바이스와 3가지 요소를 통하여 연결된다. (port, interface, controller) Canonical Device OS는 device register의 status, command, data에 R/W를 한다. 디바이스 레지스터는 OS에 보이지만 디바이스의 내부에 대한 정보는 hidden black box이다. 따라서 OS와 디바이스는 device register의 인터페이스에 따라서만 통신할 수 있고, OS는 정해진 인터페이스 내에서만 디바이스의 operation을 control할 수 있다. spinning을 어떻게 피하는가? interrupt write pro..
2020.06.02