목록CS (42)
빙응의 공부 블로그

📝서론 분산 시스템은 전세계의 구조를 바꿨습니다. 웹 브라우저가 지구 상 어딘가에 있는 웹 서버에 접속하면 클라이언트/서버 분산 시스템이라는 구조에 한 구성원이 되는 것이다. 분산 시스템을 개발할 때 몇 가지 새로운 도전거리가 생겨난다. 우리는 그 중 "실패"에 관해서 알아보자. 핵심 질문 : 구성 요소가 실패하더라도 동작하는 시스템을 어떻게 만들까? 분산 시스템의 핵심 사안은 여러 개가 존재한다.실패와 고장의 극복시스템 성능보안📝통신의 기본최신 네트워킹의 핵심 가정은 통신은 신뢰할 수 없다는 것이다. 이것에는 여러개의 이유가 있다. 패킷 손실네트워크는 패킷 단위로 데이터를 전송하는데, 중간 유실이 가능하다.지연, 재정렬, 중복패킷이 전송 순서와 다르게 도착하거나, 중복되거나, 지연될 수 있다.중간..

📝서론 저번 포스팅에서 우리는 크래시 방지를 위해서 저널링을 하였다.시간이 지나 컴퓨터의 성능이 좋아지며 저널링에서 더 나아가 로그 기반 파일 시스템(LFS)이 등장하였다.해당 파일 시스템 설계 배경은 다음과 같다.메모리 크기 증가대부분의 읽기는 메모리 캐시에서 처리됨 → 디스크는 주로 쓰기 위주 I/O 발생순차 I/O 성능 향상 > 랜덤 I/O디스크는 순차적으로 쓸 때 훨씬 빠름 → 랜덤 I/O는 탐색/회전 지연으로 매우 느림기존 파일 시스템의 비효율성FFS 같은 기존 파일 시스템은 쓰기마다 여러 I/O → 블럭 그룹 최적화로도 한계RAID 환경의 쓰기 병목RAID는 작은 쓰기(small write)에서 읽기-수정-쓰기 반복 필요 → 기존 FS들은 고려하지 않음 이상적인 파일 시스템은 쓰기 성능에 초..

📝서론 이번 장에서는 파일 시스템이 자료 구조를 안전하게 저장하는 방법에 대해 알아보자 파일 시스템이 직면한 가장 큰 어려움 중 하나는 전력 손실이나 시스템 크래시와 같은 장애 상황 이다.이러한 상황에서도 디스크의 데이터가 어떻게 안전하게 갱신되는가는 중요한 문제다. 이 과정을 살펴보면서, 우리는 데이터베이스에서 사용하는 트랜잭션 처리 원리와 유사한 개념을 파일 시스템에서도 체험할 수 있을 것이다. 📝크래시 시나리오데이터 블록만 디스크에 기록됨이 경우 데이터는 디스크에 있지만 아이노드가 없고 할당 여부를 나타내는 비트맵도 없다.파일 시스템에서 접근이 불가능해 크래시 일관성에서 문제가 없다.갱신된 아이노드만 디스크에 기록됨데이터블록이 기록되지 않아서, 의미없는 데이터를 얻게된다.일관성 손상이라는 문..

📝서론 이번 장에서는 영속 저장 장치라고 하는 또 하나의 핵심적인 가상화 퍼즐을 알아보자. 하드 디스크 드라이브 또는 좀 더 최근의 솔리드 스테이트 드라이브(SSD)와 같은 저장 장치는 영구적으로 정보를 저장한다.전원 공급이 차단 되어도 그대로 데이터를 보존하며 운영체제는 이러한 장치를 더 신중히 다뤄야한다. 핵심 질문 : 어떻게 영속 장치를 관리하는가?운영체제는 어떻게 영속 장치를 관리할까?구현에서의 중요한 측면은 무엇일까 들어가기 앞서 우리는 Unix의 파일 시스템을 볼 것이다. 📝파일과 디렉터리저장 장치의 가상화에 대한 두 가지 주요 개념이 개발되었다.파일단순히 읽고 쓸 수 잇는 순차적인 바이트의 배열각 파일은 저수준의 이름을 갖고 있으며 보통 숫자로 표현되며 사용자는 알지 못한다.(아이노..

📝서론 이전 장에서는 I/O 장치 전반에 대한 개념과, 운영체제가 이러한 장치들과 어떻게 상호작용하는지 살펴보았다.이번 장에서는 특정 I/O 장치인 하드 디스크 드라이브(HDD)에 대해 좀 더 구체적으로 알아본다.핵심 질문디스크에 있는 데이터를 어떻게 저장하고 접근하는가?현대 디스크는 데이터를 어떻게 저장하는가?디스크 인터페이스는 어떤 방식으로 작동하는가?실제로 데이터는 어떻게 배치되고 접근되는가? 📝인터페이스 현대 디스크 드라이브의 인터페이스를 이해해보자.모든 현대 디스크 드라이브의 기본적인 인터페이스는 단순하며 규칙들이 존재한다. 드라이브는 읽고 쓸 수 있는 매우 많은 수의 블럭들로 이루어져 있다.디스크의 블럭들은 배열로 0부터 N-1까지의 주소 공간을 가진다.드라이브는 원자적으로 온전히 모두 완..

📝서론 영속성에 들어가기 앞서 먼저 입력/출력 장치의 개념을 알아보자 핵심질문 : 어떻게 I/O를 시스템에 통합할까?시스템에 I/O를 어떻게 통합해야 하는가?일반적인 방법은 무엇인가?어떻게 효율적으로 통합할 수 있을까? 📝시스템 구조 논의를 시작하기 위해, 위의 시스템 구조를 살펴보자 이 그림에서는 CPU와 주메모리가 메모리 버스로 연결되어 있다.몇 가지 장치들은 범용 I/O 버스에 연결되어 있다.또한 현대의 많은 시스템들은 PCI(메인보드 연결 인터페이스)를 사용하고 있다. 마지막으로 아래의 SCSI나 SATA 또는 USB와 같은 주변장치용 버스가 있다.버스 이름속도연결 장치특징메모리 버스가장 빠름CPU ↔ RAM고속, 고가, 짧은 거리PCI / PCIe (고속 I/O 버스)빠름그래픽카드, SSD,..