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