책소개
[개발자 레벨업 프로젝트] OS의 구조를 들여다 보자!스마트폰에서 클라우드까지, IT 산업 곳곳에서 리눅스가 보인다. 이렇게 산업과 생활 전반에 걸쳐 사용하는 OS는 어떻게 움직일까? 이 책은 컴퓨터 시스템을 구성하는 운영체제를, 그중 가장 많이 사용하는 리눅스를 예로 들어 설명했다. 단순히 읽고 넘어가지 않고 스스로 실습해보며 동작 원리를 익힐 수 있으며, 프로그래머, 시스템 설계자 등 대부분의 개발자에게 꼭 필요한 지식을 담았다. 이 책을 통해 소프트웨어와 하드웨어의 상호작용을 이해하자. 그다음, 책에서 배운 운영체제 전체 구성, 프로세스, 메모리 등에 대한 이해를 바탕으로 프로그램을 개발한다면 소프트웨어 신뢰도를 확보하는 동시에 성능 최적화까지도 도전할 수 있다.
목차
CHAPTER 1 컴퓨터 시스템의 개요 CHAPTER 2 사용자 모드로 구현되는 기능____시스템 콜 ____시스템 콜의 wrapper 함수 ____표준 C 라이브러리 CHAPTER 3 프로세스 관리____프로세스 생성의 목적 ____fork() 함수 ____execve() 함수 ____종료 처리 CHAPTER 4 프로세스 스케줄러____테스트 프로그램의 사양 ____테스트 프로그램의 구현 ____첫 번째 실험 ____고찰 ____컨텍스트 스위치 ____프로세스의 상태 ____상태 변환 ____idle 상태 ____여러 가지 상태 변환 ____스루풋과 레이턴시 ____실제 시스템 ____논리 CPU가 여러 개일 때 스케줄링 ____실험 방법 ____두 번째 실험 ____스루풋과 레이턴시 ____고찰 ____경과 시간과 사용 시간 ____슬립을 사용하는 프로세스 ____실제 프로세스 ____우선순위 변경 CHAPTER 5 메모리 관리____메모리의 통계 정보 ____메모리 부족 ____단순한 메모리 할당 ____가상 메모리 ____페이지 테이블 ____실험 ____프로세스에 메모리를 할당할 때 ____실험 ____고수준 레벨에서의 메모리 할당 ____해결법 ____가상 메모리의 응용 ____파일 맵 ____디맨드 페이징 ____메모리 부족 ____스왑 ____계층형 페이지 테이블 ____Huge Page CHAPTER 6 메모리 계층____캐시 메모리 ____Translation Lookaside Buffer ____페이지 캐시 ____동기화된 쓰기 ____버퍼 캐시 ____파일의 읽기 테스트 ____파일의 쓰기 테스트 ____튜닝 파라미터 ____정리 ____하이퍼스레드 CHAPTER 7 파일시스템____리눅스의 파일시스템 ____데이터와 메타데이터 ____용량 제한 ____파일시스템이 깨진 경우 ____저널링 ____Copy on Write ____그래도 깨지는 것을 막을 수 없는 경우 ____파일시스템의 깨짐에 대한 대책 ____파일의 종류 ____캐릭터 장치 ____블록 장치 ____여러 가지 파일시스템 ____메모리를 기반으로 한 파일시스템 ____네트워크 파일시스템 ____가상 파일시스템 ____Btrfs CHAPTER 8 저장 장치____HDD의 데이터 읽기 쓰기의 동작 방식 ____HDD의 성능 특성 ____HDD의 테스트 ____테스트 프로그램 ____블록 장치 계층 ____I/O 스케줄러 ____미리 읽기 ____테스트 ____시퀀셜 접근 ____랜덤 접근 ____SSD의 동작 방식 ____정리 ____찾아보기