운영체제 (공룡책) - 0

‍주민하·2021년 9월 2일
0

운영체제

목록 보기
1/10
post-thumbnail

예전부터 책을 공부하기 전에는 목차부터 쭉 훑는 것이 내 버릇이자 공부 방법인데, 이번 책도 공부를 시작하기 전에 목차부터 훑어보도록 한다.

목차

  1. 개요
    1. 서론 (1주차)
      1. 운영체제가 하는 일
        1. 사용자 입장
        2. 시스템 입장
        3. 운영체제 정의하기
      2. 컴퓨터 시스템 조직
        1. 인터럽트
        2. 저장 구조
        3. 입출력 구조
      3. 컴퓨터 시스템 구조
        1. 단일 프로세서 시스템
        2. 다중 프로세서 시스템
        3. 다발 시스템
      4. 운영체제 연산
        1. 멀티프로그래밍과 멀티태스킹
        2. 이중모드와 다중모드 연산
        3. 타이머
      5. 자원 관리
        1. 프로세스 관리
        2. 메모리 관리
        3. 파일 시스템 관리
        4. 대용량 기억 장치 관리
        5. 캐시 관리
        6. 입출력 시스템 관리
      6. 보안 및 방어
      7. 가상화
      8. 분산체계
      9. 커널 자료구조
        1. 리스트, 스택, 큐
        2. 트리
        3. 해시 함수와 맵
        4. 비트맵
      10. 컴퓨팅 환경
        1. 전통적인 컴퓨팅
        2. 모바일 컴퓨팅
        3. 클라이언트-서버 컴퓨팅
        4. 개인 간 통신 컴퓨팅
        5. 클라우드 컴퓨팅
        6. 실시간 임베디드 시스템
      11. 무료 및 오픈소스 운영체제
        1. 역사
        2. 무료 운영체제
        3. GNU/리눅스
        4. BSD 유닉스
        5. 솔라리스
        6. 학습의 한 도구로서의 오픈소스 체제
      12. 요약
    2. 운영체제 구조 (2주차)
      1. 운영체제 서비스
      2. 사용자 및 운영체제 인터페이스
        1. 명령 인터프리터
        2. 그래픽 사용자 인터페이스
        3. 터치 스크린 인터페이스
        4. 인터페이스 선택
      3. 시스템 호출
        1. 예시
        2. 어플리케이션 프로그래밍 인터페이스
        3. 시스템 호출 종류
      4. 시스템 서비스
      5. 링커와 로더
      6. 어플리케이션이 운영체제에 특정되는 이유
      7. 운영체제 설계 및 구현
        1. 설계 목표
        2. 메커니즘과 정책
        3. 구현
      8. 운영체제 구조
        1. 일체식 구조
        2. 계층작 접근법
        3. 마이크로커널
        4. 모듈
        5. 혼합 체제
      9. 운영체제 빌드 및 부팅하기
        1. 운영체제 생성
        2. 시스템 부트
      10. 운영체제 디버깅
        1. 실패 분석
        2. 성능 모니터링 및 조정
        3. 트레이싱
        4. BCC
      11. 요약
  2. 프로세스 관리 (3주차)
    1. 프로세스
      1. 프로세스 개념
        1. 프로세스
        2. 프로세스 상태
        3. 프로세스 제어 블록
        4. 스레드
      2. 프로세스 스케줄링
        1. 스케줄링 큐
        2. CPU 스케줄링
        3. 문맥 교환
      3. 프로세스 연산
        1. 프로세스 생성
        2. 프로세스 종료
      4. 프로세스 간 통신
      5. 공유 메모리 시스템에서 IPC
      6. 통신 전송 시스템에서 IPC
        1. 네이밍
        2. 통합
      7. IPC 체제의 예시
        1. POSIX 공유 메모리
        2. 마하 통신 전송
        3. 윈도우즈
        4. 파이프
      8. 클라이언트-서버 시스템 간 통신
        1. 소켓
        2. 원격 프로시저 호출
      9. 요약
    2. 스레드와 동시 실행
      1. 개요
        1. 동기
        2. 이득
      2. 다중코어 프로그래밍
        1. 프로그래밍 문제들
        2. 병렬성의 유형
      3. 멀티스레딩 모델
        1. 다대일 모델
        2. 일대일 모델
        3. 다대다 모델
      4. 스레드 라이브러리
        1. Pthread
        2. 윈도우즈 스레드
        3. 자바 스레드
      5. 암시적 스레딩
        1. 스레드풀
        2. 포크 조인
        3. OpenMP
        4. 그랜드 센트럴 디스패치
        5. 인텔 스레드 빌딩 블록
      6. 스레딩 문제들
        1. 시스템 호출 fork()exec()
        2. 신호 처리
        3. 스레드 취소
        4. 스레드 로컬 저장소
        5. 스케줄러 활성화
      7. 운영체제 예시
        1. 윈도우즈 스레드
        2. 리눅스 스레드
      8. 요약
    3. CPU 스케줄링
      1. 기본 개념
        1. CPU-입출력 버스트 사이클
        2. CPU 스케줄러
        3. 선점 및 비선점 스케줄링
        4. 디스패처
      2. 스케줄링 표준
      3. 스케줄링 알고리듬
        1. 선도착 선처리 스케줄링
        2. 최단 작업 우선 스케줄링
        3. 라운드 로빈 스케줄링
        4. 우선 순위 스케줄링
        5. 다중 레벨 큐 스케줄링
        6. 다중레벨 피드백 큐 스케줄링
      4. 스레드 스케줄링
        1. 컨텐션 스코프
        2. pthread 스케줄링
      5. 다중 프로세서 스케줄링
        1. 다중 프로세스 스케줄링 접근법
        2. 다중 코어 프로세스
        3. 부하 분산
        4. 프로세서 친화성
        5. 이종 다중 프로세싱
      6. 실시간 CPU 스케줄링
        1. 회전 지연 줄이기
        2. 우선 순위 기반 스케줄링
        3. 비율 단조 스케줄링
        4. 최단 마감 우선 스케줄링
        5. 비례 분배 스케줄링
        6. POSIX 실시간 스케줄링
      7. 운영체제 예시
        1. 예시: 리눅스 스케줄링
        2. 예시: 윈도우즈 스케줄링
        3. 예시: 솔라리스 스케줄링
      8. 알고리듬 평가
        1. 결정적 모델
        2. 큐 모델
        3. 시뮬레이션
        4. 구현
      9. 요약
  3. 프로세스 동기화 (4-8주차)
    1. 동기화 도구
      1. 배경
      2. 위험 영역 문제
      3. 피터슨 해법
      4. 동기화를 위한 하드웨어 지원
        1. 메모리 배리어
        2. 하드웨어 지시어
        3. 원자적 변수
      5. 뮤텍스 락
      6. 세마포어
        1. 세마포어 용도
        2. 세마포어 구현
      7. 모니터
        1. 모니터 용도
        2. 세마포어로 모니터 구현하기
        3. 모니터 내에서 프로세스 재시작
      8. 라이브니스
        1. 데드락
        2. 우선 순위 역위
      9. 평가
      10. 요약
    2. 동기화 예시
      1. 동기화의 고전적인 문제
        1. 유한 버퍼 문제
        2. 생산자-소비자 문제
        3. 식사하는 철학자 문제
      2. 커널과의 동기화
        1. 윈도우즈의 동기화
        2. 리눅스의 동기화
      3. POSIX 동기화
        1. POSIX 뮤텍스 락
        2. POSIX 세마포어
        3. POSIX 조건 변수
      4. 자바 동기화
        1. 자바 모니터
        2. 재진입 락
        3. 세마포어
        4. 조건 변수
      5. 대체 접근법
        1. 트랜잭션 메모리
        2. OpenMP
        3. 함수형 프로그래밍 언어
      6. 요약
  4. 메모리 관리 (9-10주차)
    1. 주메모리
      1. 배경
        1. 기본 하드웨어
        2. 주소 바인딩
        3. 논리적 대 물리적 주소 공간
        4. 동적 로딩
        5. 동적 링킹과 공유 라이브러리
      2. 연속 메모리 할당
        1. 메모리 방어
        2. 메모리 할당
        3. 파편화
      3. 페이징
        1. 기본 방법
        2. 하드웨어 지원
        3. 방어
        4. 공유 페이지
      4. 페이지 테이블 구조
        1. 계층적 페이징
        2. 해시 페이지 테이블
        3. 역전 페이지 테이블
        4. 오라클 SPARC 솔라리스
      5. 교체
        1. 표준 교체
        2. 페이징을 통한 표준 교체
        3. 모바일 시스템 표준 교체
      6. 예시: 인텔 32 및 64 비트 구조
        1. IA-32 구조
        2. x86-64
      7. 예시: ARMv8 구조
      8. 요약
    2. 가상 메모리
      1. 배경
      2. 요구 페이징
        1. 기본 개념
        2. 빈 프레임 리스트
        3. 요구 페이징의 성능
      3. 쓰기 시 복사
      4. 페이지 대체
        1. 기본 페이지 대체
        2. 선입선출 페이지 대체
        3. 최적 페이지 대체
        4. LRU 페이지 대체
        5. LRU-근사 페이지 대체
        6. 계수 기반 페이지 대체
        7. 페이지 버퍼링 알고리듬
        8. 어플리케이션과 페이지 대체
      5. 프레임 할당
        1. 프레임 최소 개수
        2. 할당 알고리듬
        3. 전역 대 지역 할당
        4. 비균일 메모리 접근
      6. 과다 상태
        1. 과다 상태의 원인
        2. 워킹셋 모델
        3. 페이지 부재 빈도
        4. 현행 규정
      7. 메모리 압축
      8. 커널 메모리 할당
        1. 버디 시스템
        2. 슬래브 할당
      9. 기타 고려사항
        1. 사전 페이징
        2. 페이지 크기
        3. TLB 접근
        4. 역전 페이지 테이블
        5. 프로그램 구조
        6. 입출력 인터로크와 페이지 로킹
      10. 운영체제 예시
        1. 리눅스
        2. 윈도우즈
        3. 솔라리스
      11. 요약
  5. 기억 장치 관리 (13주차)
    1. 대용량 기억 장치 구조
      1. 대용량 기억 장치 구조 개요
        1. 하드 디스크 드라이브
        2. 비휘발성 메모리 장치
        3. 휘발성 메모리
        4. 보조 기억 장치 연결법
        5. 주소 매핑
      2. HDD 스케줄링
        1. FCFS 스케줄링
        2. SCAN 스케줄링
        3. C-SCAN 스케줄링
        4. 디스크 스케줄링 알고리듬 선택법
      3. NVM 스케줄링
      4. 오류 탐지 및 해결
      5. 기억 장치 관리
        1. 드라이브 포맷, 분할 및 볼륨
        2. 부트 블록
        3. 배드 블록
      6. 교체 공간 관리
        1. 교체 공간 용도
        2. 교체 공간 위치
        3. 교체 공간 관리 예시
      7. 기억 장치 연결
        1. 호스트 연결 기억 장치
        2. 네트워크 연결 기억 장치
        3. 클라우드 연결
        4. 기억 장치 통신망과 기억 장치 배열
      8. RAID 구조
        1. 중복을 통한 신뢰성 개선
        2. 병렬성을 통한 성능 개선
        3. RAID 레벨
        4. RAID 레벨 선택하기
        5. 확장
        6. RAID의 문제
        7. 개체 기억 장치
      9. 요약
    2. 입출력 체계 (12주차)
      1. 개요
      2. 입출력 하드웨어
        1. 메모리 매핑된 입출력
        2. 폴링
        3. 인터럽트
        4. 직접 메모리 접근
        5. 입출력 하드웨어 요약
      3. 어플리케이션 입출력 인터페이스
        1. 블록 및 문자 장치
        2. 네트워크 장치
        3. 시계와 타이머
        4. 블로킹과 비동기 입출력
        5. 벡터화 입출력
      4. 커널 입출력 하위 시스템
        1. 입출력 스케줄링
        2. 버퍼링
        3. 캐싱
        4. 스풀링 및 장치 예약
        5. 오류 처리
        6. 입출력 방어
        7. 커널 자료구조
        8. 전원 관리
        9. 커널 입출력 하위 시스템 요약
      5. 입출력 요청을 하드웨어 연산으로 변환하기
      6. STREAMS
      7. 성능
      8. 요약
  6. 파일 시스템 (11주차)
    1. 파일 시스템 인터페이스
      1. 파일 개념
        1. 파일 속성
        2. 파일 연산
        3. 파일 유형
        4. 파일 구조
        5. 내부 파일 구조
      2. 접근법
        1. 순차 접근법
        2. 직접 접근법
        3. 다른 접근법
      3. 경로 구조
        1. 단일층 경로
        2. 이중층 경로
        3. 트리 구조 경로
        4. 비순환 그래프 경로
        5. 일반 그래프 경로
      4. 방어
        1. 접근 유형
        2. 접근 제어
        3. 다른 방어 접근법
      5. 메모리 매핑된 파일
        1. 기본 메커니즘
        2. 윈도우즈 API의 공유 메모리
      6. 요약
    2. 파일 시스템 구현
      1. 파일 시스템 구조
      2. 파일 시스템 연산
        1. 개요
        2. 용도
      3. 경로 구현
        1. 선형 리스트
        2. 해시 테이블
      4. 할당법
        1. 연속 할당
        2. 연결 할당
        3. 색인 할당
        4. 성능
      5. 빈 공간 관리
        1. 비트 벡터
        2. 연결 리스트
        3. 집단화
        4. 계수
        5. 공간 맵
        6. 비사용 블록 TRIM하기
      6. 효율성과 성능
        1. 효율성
        2. 성능
      7. 회복
        1. 일관성 검사
        2. 로그 구조 파일 시스템
        3. 다른 해법
        4. 백업과 복원
      8. 예시: WAFL 파일 시스템
      9. 요약
    3. 파일 시스템 내부
      1. 파일 시스템
      2. 파일 시스템 마운팅
      3. 분할과 마운팅
      4. 파일 공유
        1. 다중 사용자
      5. 가상 파일 시스템
      6. 원격 파일 시스템
        1. 클라이언트-서버 모델
        2. 분산 정보 시스템
        3. 실패 모드
      7. 일관성 의미
        1. UNIX 의미
        2. 세션 의미
        3. 불변 공유 파일 의미
      8. NFS
        1. 개요
        2. 마운트 프로토콜
        3. NFS 프로토콜
        4. 경로 이름 번역
        5. 원격 연산
      9. 요약
  7. 보안 및 방어 (15주차)
    1. 보안
      1. 보안 문제
      2. 보안 위협
        1. 멀웨어
        2. 코드 주입
        3. 바이러스와 웜
      3. 시스템과 네트워크 위협
        1. 네트워크 교통 공격
        2. 서비스 부인
        3. 포트 스캐닝
      4. 보안의 한 도구로서 암호 기법
        1. 암호화
        2. 암호 기법 구현
        3. 예시: TLS
      5. 사용자 인증
        1. 패스워드
        2. 패스워드 취약점
        3. 패스워드 보호하기
        4. 일회성 패스워드
        5. 생체 인증
      6. 보안 방어 구현
        1. 보안 정책
        2. 취약점 평가
        3. 침투 예방
        4. 바이러스 방어
        5. 감사, 회계 및 로깅
        6. 방화벽을 통한 시스템 및 네트워크 보호
        7. 기타 해법
        8. 보안 방어 요약
      7. 예시: 윈도우즈 10
      8. 요약
    2. 방어
      1. 방어 목표
      2. 방어 원칙
      3. 보호 링
      4. 보호 영역
        1. 영역 구조
        2. 예시: 유닉스
        3. 예시: 안드로이드 어플리케이션 ID
      5. 접근 행렬
      6. 접근 행렬 구현
        1. 전역 테이블
        2. 개체를 위한 접근 리스트
        3. 영역을 위한 능력 리스트
        4. 자물쇠-열쇠 메커니즘
        5. 비교
      7. 접근권 철회
      8. 역할 기반 접근 제어
      9. 의무 접근 제어 (MAC)
      10. 능력 기반 시스템
        1. 리눅스 능력
        2. 다윈 자격
      11. 기타 방어 개선법
        1. 시스템 무결성 방어
        2. 시스템 호출 필터링
        3. 샌드박싱
        4. 코드 서명
      12. 언어 기반 방어
        1. 컴파일러 기반 시행
        2. 실시간 기반 시행-자바에서의 방어
      13. 요약
  8. 고급 주제
    1. 가상 기계
      1. 개요
      2. 역사
      3. 이득과 기능
      4. 빌딩 블록
        1. 트랩 앤 에뮬레이트
        2. 이진 번역
        3. 하드웨어 보조
      5. VM의 종류와 구현
        1. VM의 라이프 사이클
        2. 0 유형 하이퍼바이저
        3. 1 유형 하이퍼바이저
        4. 2 유형 하이퍼바이저
        5. 반가상화
        6. 프로그래밍 환경 가상화
        7. 에뮬레이션
        8. 어플리케이션 밀폐
      6. 가상화와 운영체제 성분
        1. CPU 스케줄링
        2. 메모리 관리
        3. 입출력
        4. 기억 장치 관리
        5. 라이브 마이그레이션
      7. 예시
        1. VMware
        2. Java 가상 기계
      8. 가상화 연구
      9. 요약
    2. 네트워크와 분산 시스템 (14주차)
      1. 분산 시스템의 장점
        1. 자원 공유
        2. 연산 속도 향상
        3. 신뢰성
      2. 네트워크 구조
        1. 근거리 통신망
        2. 광역 통신망
      3. 통신 구조
        1. 네이밍과 이름 분석
        2. 통신 프로토콜
        3. TCP/IP 예시
        4. UDP 및 TCP 전송 프로토콜
      4. 네트워크와 분산 운영체제
        1. 네트워크 운영체제
        2. 분산 운영체제
      5. 분산 시스템 설계 문제
        1. 견고성
        2. 투명성
        3. 확장성
      6. 분산 파일 시스템
        1. 클라이언트-서버 DFS 모델
        2. 군집 기반 DFS 모델
      7. DFS 네이밍 및 투명성
        1. 네이밍 구조
        2. 네이밍 도식
        3. 구현 기술
      8. 원격 파일 접근
        1. 기본 캐싱 도식
        2. 캐시 위치
        3. 캐시 갱신 정책
        4. 일관성
      9. 분산 파일 시스템에 대한 최종 의견
      10. 요약
  9. 사례 연구
    1. 리눅스 체제
      1. 리눅스 역사
        1. 리눅스 커널
        2. 리눅스 체제
        3. 리눅스 배포판
        4. 리눅스 라이선스
      2. 설계 원칙
        1. 리눅스 체제의 성분
      3. 커널 모듈
        1. 모듈 관리
        2. 드라이버 등록
        3. 충돌 해결
      4. 프로세스 관리
        1. 프로세스 모델 fork()exit()
        2. 프로세스와 스레드
      5. 스케줄링
        1. 스레드 스케줄링
        2. 실시간 스케줄링
        3. 커널 동기화
        4. 대칭 다중 프로세싱
      6. 메모리 관리
        1. 물리 메모리 관리
        2. 가상 메모리
        3. 사용자 프로그램 실행 및 불러오기
      7. 파일 시스템
        1. 가상 파일 시스템
        2. 리눅스 ext3 파일 시스템
        3. 저널링
        4. 리눅스 Proc 파일 시스템
      8. 입출력
        1. 블록 장치
        2. 문자 장치
      9. 프로세스 간 통신
        1. 동기화 및 신호
        2. 프로세스 간 데이터 전달
      10. 네트워크 구조
      11. 보안
        1. 인증
        2. 접근 제어
      12. 요약
    2. 윈도우즈
      1. 역사
        1. 윈도우즈 XP, 비스타, 7
        2. 윈도우즈 8
        3. 윈도우즈 10
      2. 설계 원칙
        1. 보안
        2. 신뢰성
        3. 윈도우즈 및 어플리케이션 호환성
        4. 성능
        5. 확장성
        6. 휴대성
        7. 국제 지원
        8. 에너지 효율
        9. 동적 장치 지원
      3. 시스템 성분
        1. 하이퍼-V 하이퍼바이저
        2. 보안 커널
        3. 하드웨어 추상화 계층
        4. 커널
        5. 실행
      4. 터미널 서비스 및 고속 사용자 스위칭
      5. 파일 시스템
        1. NTFS 내부 레이아웃
        2. 복원
        3. 보안
        4. 압축
        5. 마운트점, 심볼릭 링크, 하드 링크
        6. 저널 변경
        7. 볼륨 섀도 복사
      6. 네트워킹
        1. 네트워크 인터페이스
        2. 프로토콜
        3. 리디렉터와 서버
        4. 도메인
        5. 활성 경로
      7. 프로그래머 인터페이스
        1. 커널 개체 접근
        2. 프로세스 간 개체 공유
        3. 프로세스 관리
        4. 윈도우즈 메시징을 통한 IPC
        5. 메모리 관리
      8. 요약
  10. 부록
profile
개발자

0개의 댓글