쉽게 배우는 운영체제 / 한빛아카데미 / 조성호
# 1장 - 개요
운영체제 역할 - 자원 관리, 자원보호, 하드웨어 인터페이스 제공, 사용자 인터페이스 제공
운영체제 목표 - 효율성, 안정성, 확장성, 편리성
응용프로그램 , 유틸리티
{ 운영체제
인터페이스
{
시스템호출
커널
드라이버
}
}
하드웨어
커널의 역할 - 프로세스 관리, 메모리 관리, 파일시스템 관리, 입출력 관리, 프로세스 간 통신 관리
단일형 - 수정 어려움, 상호의존성 높음, 이식성 낮음
계층형
마이크로커널형 - 기본적인 기능만 구현, 운영체제의 많은 부분을 사용자 영역에 구현, 독립적 모듈로 작동하여 실패해도 멈추지 않음. 이식성이 높고 가벼워 작은 용량에도 적용 가능
# 2장 - 컴퓨터 구조와 성능 향상
하드웨어 구성 - [ 필수 - CPU, 메인메모리 ], 입력장치, 출력장치, 저장장치
폰노이만 구조 - 모든 프로그램은 메모리에 올라와야 실행 가능
부팅 - 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정 -> 롬에 저장된 바이오스 실행 / 부트 스트랩이 하드 디스크 첫 섹터에 저장됨
버퍼 - 속도 차이 있는 두 장치의 차이 완화
캐시 - 메모리와 CPU 간 속도 차이 완화 . 미리 가져다 두는 방법.
저장 공간의 계층 구조 - (빠르지만 비쌈) 레지스터, 캐시, 메모리, 저장장치 (느리지만 저렴)
인터럽트 - CPU가 IO에 명령 보냄. IO가 명령 받은 데이터를 저장. 전송 완료되면 IO가 완료 신호 보냄
병렬 처리 - 상호의존성 x , 각 단계의 시간이 비슷해야, 전체 작업 시간을 몇 단계로 나눌지 -> 파이프라이닝
CPU의 작업 단위는 스레드로 한 번에 여러 개 스레드를 처리하면 멀티 스레드 (CPU와 OS 둘 다 멀티 스레드 가능)
# 3장 - 프로세스와 스레드
프로세스 - 실행 중인 프로그램
일괄 작업 방식
시분할 방식
프로세스 제어 블록 - 프로세스 구분자, 메모리 관련 정보, 작업 중간 값
프로세스 = 프로그램 + 프로세스 제어 블록
프로그램 = 프로세스 - 프로세스 제어 블록
프로세스의 상태 - 생성, 준비, 실행, 완료, 대기
- 생성 +PCB = 준비
- 준비 +디스패치 = 실행
- 실행 +타임아웃 인터럽트 = 준비
- 실행 +입출력 요청 = 대기
- 대기 -입출력 완료 = 준비
- 실행 -PCB = 완료
- 생성은 프로세스가 메모리 위에 올라와 실행 준비 완료, PCB 생성
- 준비 생성된 프로세스가 CPU 얻을 때까지
- 실행 실제 작업을 수행하는 상태
- 완료 작업 완료
- 대기 입출력을 요구한 프로세스의 입출력이 완료될 때까지 대기
프로세스 제어 블록 - 프로세스 상태, 프로세스 구분자, 프로그램 카운터, 프로세스 우선순위, 레지스터 정보, 메모리 관리 정보, 할당된 자원 정보, 계정 정보
문맥 교환 - 주어진 시간 다 사용, 인터럽트 발생, 인터럽트 처리 등
프로세스 구조 - 코드 데이터 스택 영역
fork 실행 중인 프로세스 복사 - 실행 중인 것 부모, 새로 생긴 것이 자식
fork 장점 - 생성 속도 빠르고 자원 상속 가능 , 효율적인 시스템 관리
exec 실행 - 프로세스는 그대로 두고 내용만 바꿈. 구조체 재활용 위함
프로세스 계층 구조의 장점 - 여러 작업 동시 처리. 자원 회수 용이
스레드 - 프로세스의 코드에 정의된 절차에 따라 CPU에 작업요청하는 실행단위 : 코드 데이터 스택 영역
멀티 태스크 - 독립적인 프로세스 간의 통신 . 워드 프로세서와 프린터 등 . 시간을 잘게 나누어 배분하는 시분할
멀티 스레드 - 프로세스 내 스레드간 통신 . 워드 프로세서 내 편집, 출력, 검사 . 분할하여 부담 줄임. 한 스레드의 문제는 다함께 문제가 됨. 스레드는 공유하기 때문.
커널 스레드 - 커널이 직접 생성 관리하는 스레드
사용자 스레드 - 라이브러리에 의해 구현된 일반적 스레드
사용자가 커널 스레드 사용하려면 시스템 호출로 커널 기능 사용해야
사용자 레벨 스레드는 커널입장에서는 일반 스레드지만 커널 역할을 라이브러리가 대신 여러 스레드로 처리
여러 스레드가 하나 커널 스레드와 연결됨 - 다같이 대기해야하는 단점
문맥 교환 불필요 -> 커널에서의 문맥 교환은 서로 다른 프로세스 처리를 위함
커널 레벨 스레드 멀티 스레드 지원
하나의 사용자 스레드가 하나의 커널 스레드와 연결
독립적 스케쥴링 대기상태가 되어도 상관 없고 커널의 기능 모두 사용 가능
멀티프로세싱 - CPU 여러 개 사용하여 여러 스레드를 동시에 처리하는 방법
CPU 멀티 스레드 - 한번에 하나씩 처리해야하는 스레드를 파이프라인 기법으로 동시에 여러 스레드를 처리하도록 하는 병렬 처리 기법
# 4장 - CPU 스케쥴링
스케쥴링 목적 - 공평성, 효율성, 안정성, 확장성, 반응 시간 보장, 무한 연기 방지
선점형 - 강탈 가능. 비선점형 - 무조건 대기해야
cpu burst - 각 작업에 집중한 프로세스
io burst - io에 집중한 프로세스
전면 프로세스 - 상호작용 가능 / 후면 프로세스 - 사용자와 상호작용 없음, 일괄 작업 프로세스
알고리즘 선택 기준 - cpu 사용률, 처리량, 대기시간(실행 전), 응답시간(실행 시작후 반응까지), 실행시간(시작과 종료), 반환시간(대기 시간 포함 종료까지)
FCFS 스케쥴링
SJF 스케쥴링
RR 스케쥴링
우선순위 스케쥴링
다단계 큐 스케쥴링
다단계 피드백 큐 스케쥴링
# 5장 - 프로세스 동기화
공유 자원 접근 순서에 따라 실행 결과가 달라지는 영역 = 임계 구역
각 프로세스가 전역변수를 사용하는 부분이 임계구역
생산자 - 소비자 문제 : 독립적 작업. 전역변수 동시 접근 시 문제
전역변수 뿐 아니라 하드웨어 자원도 해당하는 문제
임계 구역 해결 조건 - 상호 배제(한 프로세스가 임계구역에 들어가면 다른 프로세스는 들어갈 수 없음), 한정 대기(대기 시간에 유한. 특정 프로세스가 진입 못하게 하면 안돼), 진행의 융통성(한 프로세스가 다른 프로세스 진행 방해 안돼)
임계구역 해결조건을 고려한 코드 설계
세마포 - 잠금 해제 되길 기다리는 프로세스가 세마포 큐에서 있다가 신호받으면 나와서 진입 . 임계구역 보호 못 받을 수도
모니터 - 인터페이스만 제공하여 자원 보호
'[ Computer Science ] > Operating System' 카테고리의 다른 글
[운영체제] 운영체제 3판 연습문제 1장~2장 (2) | 2023.10.30 |
---|