📄️ 제35장: 영속성에 관한 대화
영속성에 관한 대화
📄️ 제36장: I/O 장치
본론 (영속성)에 들어가기에 앞서 먼저 입력/출력 장치의 개념을 소개하고 운영체제가 이 장치들과 상호 작용하는 방법을 알아보자. 당연하겠지만, I/O는 컴퓨터 시스템에서 상당히 중요한 부분이다. 입력이 전혀 없는 프로그램이나 (늘 같은 결과를 출력하는), 출력이 없는 프로그램을 생각해 보라 (실행이 어떤 의미가 있겠는가?). 컴퓨터 시스템을 유용하게 쓰려면 입력과 출력이 모두 필요하다는 것은 분명하다. 그러므로 우리가 해결해야 할 문제는 다음과 같다.
📄️ 제37장: 하드 디스크 드라이브
이전 장에서 I/O 장치에 대한 전반적인 개념을 다루었고 운영체제가 I/O 장치라는 괴물과 어떻게 상호작용하는지 살펴보았다. 이 장에서 특정 장치에 대해서 좀 더 자세히 살펴보기로 한다. 바로 하드 디스크 드라이브이다. 이런 드라이브들이 수 세기 동안 컴퓨터 시스템의 영구적인 데이터 저장소였으며 (곧 살펴볼) 파일 시스템 기술은 거의 대부분 하드 디스크 드라이브의 동작에 기반을 두고 개발되었다. 그러므로 디스크를 관리하는 파일 시스템 소프트웨어를 구현하기 전에 디스크의 상세한 동작을 이해하는 것이 중요하다. 여기서 논의하는 대부분의 내용은 Ruemmler와 Wilkes [RW94] 그리고 Anderson, Dykes와 Riedel [ADR03]이 쓴 탁월한 논문에 나와 있다.
📄️ 제38장: Redundant Arrays of Inexpensive Disks (RAID)
우리가 디스크를 사용할 때 때때로 더 빨랐으면 하는 바램이 있다. I/O 작업은 느리기 때문에 전체 시스템의 병목이 되기도 한다. 우리가 디스크를 사용할 때 용량도 더 많았으면 한다. 점점 더 많은 데이터가 온라인으로 접근되도록 저장되고, 따라서 우리의 디스크는 점점 더 가득 차게 된다. 우리가 디스크를 사용할 때 때때로 디스크가 더 안정적으로 동작하기 바란다. 디스크가 고장날 경우, 백업이 되어 있지 않다면 소중한 데이터를 잃어버리고 만다.
📄️ 제39장: 막간: 파일과 디렉터리
지금까지 운영체제를 구성하는 두 개의 핵심 개념을 살펴보았다. CPU를 가상화한 "프로세스"와 메모리를 가상화한 "주소 공간"이다. 이 개념들은 서로 협력하여 응용 프로그램들이 서로 독립된 세계에서 실행될 수 있도록 해준다. 각자의 프로세서 (또는 프로세서들)를 갖고 있는 것처럼 해주며 각자의 메모리가 있는 것처럼 만들어 준다. 이러한 환상이 시스템을 다루는 프로그램 개발을 더욱 쉽게해준다. 데스크탑과 서버에서 뿐만 아니라 모바일폰을 포함한 프로그래밍이 가능한 모든 플랫폼 등에서 광범위하게 사용되고 있다.
📄️ 제40장: 파일 시스템 구현
이번 장에서는 vsfs(Very Simple File System)라고 하는 간단한 파일 시스템 구현에 대해 소개하겠다. 이 파일 시스템은 Unix 파일 시스템을 단순화한 것으로 디스크 자료 구조 (on-disk structure)와 접근 방법 그리고 다양한 파일 시스템들의 정책들을 소개하기 위해 제작되었다.
📄️ 제41장: 지역성과 Fast File System (FFS)
처음 Unix가 등장했을 때, Unix의 창시자 Ken Thompson 자신이 첫 번째 파일 시스템을 개발하였다. 그 파일 시스템은 정말 단순해서 "오래된 Unix 파일 시스템"이라 불린다. 디스크 상의 구조는 다음과 같다.
📄️ 제42장: 크래시 일관성: FSCK와 저널링
이제까지 본 바와 같이, 파일 시스템은 그 기본 개념들을 구현하는 데 필요한 각종 자료 구조들을 관리한다. 이 자료 구조에는 파일, 디렉터리, 그 외에 각종 메타데이터들이 있다. 여타 자료 구조와는 다르게 (예를 들어 실행 중인 프로그램들이 사용하는 메모리 상의 자료 구조) 파일 시스템의 자료 구조는 안전하게 저장되어야 한다. 즉, 장시간 사용 후에도 유지되어야 하며 전력 손실에도 하드 디스크나 플래시 기반 SSD 장치의 데이터는 손상없이 유지되어야 한다.
📄️ 제43장: 로그 기반 파일 시스템 (LFS)
1990년대 초반에 Berkeley 대학의 John Ousterhout 교수와 그의 대학원생 Mendel Rosenblum이 로그 기반 파일 시스템 (Log-structured File System)이라는 새로운 파일 시스템을 개발하였다 [RO91]. 다음과 같은 관찰결과가 연구의 동기가 되었다.
📄️ 제44장: 데이터 무결성과 보호
우리가 지금까지 살펴본 파일 시스템의 기본적인 기술들 이외에도 몇 가지 더 다루어야 할 주제들이 있다. 이번 장에서는 신뢰성을 다시 한 번 다루도록 하겠다 (RAID를 설명한 장에서 저장 시스템의 신뢰성에 대해서 학습을 했다). 이 장에서는 구체적으로 저장 장치가 기본적으로 신뢰할 수 없다는 전제 하에 파일 시스템이 데이터의 안전성을 보장하는 방법에 대해 살펴볼 것이다.
📄️ 제45장: 영속성을 정리하는 대화
영속성을 정리하는 대화