책읽기

[쉽게 배우는 운영체제](요약)[Part-2][Ch-3] 프로세스와 스레드

pythaac 2021. 7. 20. 22:36
이 글은 "쉽게 배우는 운영체제 (조성호 지음)"을 읽고 주관적으로 작성된 글입니다.

출처 : https://www.hanbit.co.kr/store/books/look.php?p_code=B5471691739

※ 요약

  1. 프로그램과 프로세스
    • 프로그램
      - 저장장치에 저장되어 있는 정적인 상태
    • 프로세스
      - 실행을 위해 메모리에 올라온 동적인 상태
  2. 프로세스의 상태
    • 생성 상태
      • 프로그램을 메모리에 가져온 실행 준비 상태
    • 준비 상태
      • 프로세스가 실행을 기다리는 상태
      • CPU 스케줄러가 프로세스 선택
    • 실행 상태
      • 프로세스가 타임 슬라이스를 얻어 CPU를 사용하는 상태
      • 프로세스 사이의 문맥 교환이 일어남
    • 대기 상태
      • 실행 상태의 프로세스에서 입출력이 일어나 완료될 때까지 기다리는 상태
      • 입출력 완료시 준비 상태로 변경
    • 완료 상태
      • 프로세스가 종료된 상태
      • 사용 데이터 정리
      • 정상 종료인 exit와 비정상 정료인 abort를 포함
  3. 프로세스 제어 블록
    • 프로세스 실행에 필요한 중요 정보의 자료구조
    • 모든 프로세스가 고유하게 가짐
    • 프로세스 생성시 만들어지고, 종료시 폐기됨
  4. 문맥교환
    • CPU를 차지하던 프로세스가 나가고, 새로운 프로세스를 받아들이는 작업
    • 프로세스 제어 블록 내용이 변경됨
    • 주어진 시간을 모두 소모(스케줄링) 또는 인터럽트에 의해 발생
  5. 프로세스의 복사와 전환
    • fork() 시스템 호출
      - 실행중인 프로세스로부터 새로운 프로세스를 복사하는 함수
    • exec() 시스템 호출
      - 기존의 프로세스를 새로운 프로세스로 전환하는 함수
  6. 프로세스 계층 구조
    • 부모 프로세스를 복사하여 자식 프로세스를 만들고 계층을 이루는 구조
    • 자식은 부모의 자원을 상속받고, 자식 프로세스가 종료되면 자원이 회수됨
  7. 스레드
    • CPU 스케줄러가 CPU에 전달하는 일 하나
    • 하나의 프로세스에 여러 개의 스레드가 존재할 수 있음
  8. 스레드 관련 용어
    • 멀티스레드
      - 프로세스 내에 작업을 여러 스레드로 분할
    • 멀티태스킹
      - 운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법
    • 멀티프로세싱
      - 여러 개의 CPU로 여러 스레드를 동시에 처리하는 환경
    • CPU 멀티스레드
      - 한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법으로 동시에 여러 스레드를 처리하는 병렬 기법
  9. 멀티스레드의 장점
    • 응답성 향상
      - 한 스레드의 입출력으로 인해 진행이 멈춰도 다른 스레드가 작업하여 사용자의 요구에 빠른 응답이 가능
    • 자원 공유 및 효율성 향상
      - 한 프로세스 내에서 독립적인 스레드들이 프로세스의 자원을 공유하여 불필요한 자원 중복을 막음
    • 다중 CPU 지원
      - 병렬성이 증가 : CPU가 2개 이상이면, 한 프로세스의 여러 스레드가 동시에 처리될 수 있음
  10. 멀티스레드 모델
    • 멀티스레딩을 어느 레벨에서 구현했는지에 따라 나뉘는 모델
    • 사용자 레벨 스레드
      - 라이브러리를 통해서 생성하는 스레드
      - 커널 입장에서는 하나의 프로세스이기 때문에 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() 시스템 호출

 

※ 주요 요약