이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다.
※ 요약
- 프로그램과 프로세스
- 프로그램
- 저장장치에 저장되어 있는 정적인 상태 - 프로세스
- 실행을 위해 메모리에 올라온 동적인 상태
- 프로그램
- 프로세스의 상태
- 생성 상태
- 프로그램을 메모리에 가져온 실행 준비 상태
- 준비 상태
- 프로세스가 실행을 기다리는 상태
- CPU 스케줄러가 프로세스 선택
- 실행 상태
- 프로세스가 타임 슬라이스를 얻어 CPU를 사용하는 상태
- 프로세스 사이의 문맥 교환이 일어남
- 대기 상태
- 실행 상태의 프로세스에서 입출력이 일어나 완료될 때까지 기다리는 상태
- 입출력 완료시 준비 상태로 변경
- 완료 상태
- 프로세스가 종료된 상태
- 사용 데이터 정리
- 정상 종료인 exit와 비정상 정료인 abort를 포함
- 생성 상태
- 프로세스 제어 블록
- 프로세스 실행에 필요한 중요 정보의 자료구조
- 모든 프로세스가 고유하게 가짐
- 프로세스 생성시 만들어지고, 종료시 폐기됨
- 문맥교환
- CPU를 차지하던 프로세스가 나가고, 새로운 프로세스를 받아들이는 작업
- 프로세스 제어 블록 내용이 변경됨
- 주어진 시간을 모두 소모(스케줄링) 또는 인터럽트에 의해 발생
- 프로세스의 복사와 전환
- fork() 시스템 호출
- 실행중인 프로세스로부터 새로운 프로세스를 복사하는 함수 - exec() 시스템 호출
- 기존의 프로세스를 새로운 프로세스로 전환하는 함수
- fork() 시스템 호출
- 프로세스 계층 구조
- 부모 프로세스를 복사하여 자식 프로세스를 만들고 계층을 이루는 구조
- 자식은 부모의 자원을 상속받고, 자식 프로세스가 종료되면 자원이 회수됨
- 스레드
- CPU 스케줄러가 CPU에 전달하는 일 하나
- 하나의 프로세스에 여러 개의 스레드가 존재할 수 있음
- 스레드 관련 용어
- 멀티스레드
- 프로세스 내에 작업을 여러 스레드로 분할 - 멀티태스킹
- 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법 - 멀티프로세싱
- 여러 개의 CPU로 여러 스레드를 동시에 처리하는 환경 - CPU 멀티스레드
- 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법으로 동시에 여러 스레드를 처리하는 병렬 기법
- 멀티스레드
- 멀티스레드의 장점
- 응답성 향상
- 한 스레드의 입출력으로 인해 진행이 멈춰도 다른 스레드가 작업하여 사용자의 요구에 빠른 응답이 가능 - 자원 공유 및 효율성 향상
- 한 프로세스 내에서 독립적인 스레드들이 프로세스의 자원을 공유하여 불필요한 자원 중복을 막음 - 다중 CPU 지원
- 병렬성이 증가 : CPU가 2개 이상이면, 한 프로세스의 여러 스레드가 동시에 처리될 수 있음
- 응답성 향상
- 멀티스레드 모델
- 멀티스레딩을 어느 레벨에서 구현했는지에 따라 나뉘는 모델
- 사용자 레벨 스레드
- 라이브러리를 통해서 생성하는 스레드
- 커널 입장에서는 하나의 프로세스이기 때문에 1:N 구조
- (단점) I/O에 의한 blocking에 모든 스레드가 정지 - 커널 레벨 스레드
- 커널이 멀티스레드를 지원
- 각 사용자 스레드마다 하나의 커널 스레드가 연결되는 1:1 구조
- (단점) 문맥 교환에 오버헤드가 크다 - 멀티 레벨 스레드
- 사용자 스레드보다 커널 스레드의 개수가 적은 M:N 구조
1. 프로세스의 개요
1) 프로세스의 개념
- 쩜
- 쩜
2) 요리사 모형의 비유
- 쩜
- 쩜
3) 프로그램에서 프로세스로의 전환
- 쩜
- 쩜
4) 프로세스의 상태
- 쩜
- 쩜
2. 프로세스 제어 블록과 문맥 교환
1) 프로세스 제어 블록
- 쩜
- 쩜
2) 문맥 교환
- 쩜
- 쩜
3. 프로세스의 연산
1) 프로세스의 구조
- 쩜
- 쩜
2) 프로세스의 생성과 복사
- 쩜
- 쩜
3) 프로세스의 전환
- 쩜
- 쩜
4) 프로세스의 계층 구조
- 쩜
- 쩜
4. 스레드
1) 스레드의 개념
- 쩜
- 쩜
2) 멀티스레드의 구조와 예
- 쩜
- 쩜
3) 멀티스레드의 장단점
- 쩜
- 쩜
4) 멀티스레드 모델
- 쩜
- 쩜
5. [심화학습] 동적 할당 영역과 시스템 호출
1) 프로세스의 동적 할당 영역
- 쩜
- 쩜
2) exit()와 wait() 시스템 호출
- 쩜
- 쩜
※ 주요 요약
'책읽기' 카테고리의 다른 글
[쉽게 배우는 운영체제](요약)[Part-2][Ch-4] CPU 스케줄링 (0) | 2021.07.22 |
---|---|
[데이터 분석을 위한 SQL 레시피](작성중)[3장] 데이터 가공을 위한 SQL (0) | 2021.07.21 |
[스프링 인 액션][Part-1 스프링 기초][Ch-2] 웹 애플리케이션 개발하기 (0) | 2021.07.20 |
[파이썬 알고리즘 인터뷰][배열] 주식을 사고팔기 가장 좋은 시점 (0) | 2021.07.19 |
[파이썬 알고리즘 인터뷰][배열] 자신을 제외한 배열의 곱 (0) | 2021.07.19 |