CS지식/운영체제

운영체제 Ch.2 프로세스와 스레드

뮤츠 2023. 1. 20. 00:15

10-1. 프로세스 개요

  • 프로세스 : 실행중인 프로그램.
    • foreground process : 사용자가 보는 앞에서 실행되는 프로세스
    • background process : 사용자가 보지 못하는 뒤에서 실행되는 프로세스
      • 유닉스 체계의 운영체제 : 데몬 (daemon)
      • 윈도우 운영체제 : 서비스 (service)


  • 프로세스 제어 블록 (PCB : Process Control Block)
    • 프로세스와 관련된 정보를 저장하는 자료 구조.
    • 대표적으로 프로세스ID, 레지스터 값, 프로세스 상태, CPU 스케쥴링 정보, 메모리 관리 정보, 사용한 파일과 입출력 장치 목록 등을 저장. (운영체제마다 조금씩 다름)

  • 문맥 교환
    • 문맥(context) : 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보
    • 실행 프로세스 변경시, 기존 프로세스의 문맥을 PCB에 백업, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것을 문맥교환이라 한다.

  • 프로세스의 메모리 영역
    • 코드 영역 : 텍스트 영역 (텍스트 메모리), CPU가 실행할 명령어가 담겨있어 읽기 전용 공간.
    • 데이터 영역 : 프로그램이 실행되는 동안 유지할 데이터, 전역 변수가 저장되는 공간.
    • 코드 영역과 데이터 영역을 일러 정적 할당 영역이라고도 함.
    • 힙 영역 : 프로그래머가 직접 할당할 수 있는 공간 (Java에서 new 를 통해 인스턴스를 생성하는 공간) 메모리 누수의 위험성 있음.
    • 스택 영역 : 데이터를 일시적으로 저장하는 공간, 지역변수, 매개변수 등을 포함.
    • 힙 영역과 스택 영역은 크기가 가변적이므로, 동적 할당 영역이라고도 함.

10-2. 프로세스 상태와 계층 구조

  • 프로세스 상태
    • 생성 상태 (new) : 메모리에 적재되어 PCB를 할당받는 상태.
    • 준비 상태 (ready) : 당장이라도 CPU를 할당받아 실행할 수 있는 상태.
      • dispatch : 준비 상태인 프로세스가 실행 상태로 전환되는 것.
    • 실행 상태 (running) : CPU를 할당받아 실행 중인 상태. 할당된 시간이 끝나면 준비 상태가 되고, 실행 도중 입출력 장치를 사용하여 기다려야 한다면 대기 상태가 된다.
    • 대기 상태 (blocked) : 입출력 장치의 작업을 기다리는 상태.
    • 종료 상태 (terminated) : 프로세스가 종료된 상태.
  • 프로세스 계층 구조
    • 프로세스가 실행 도중 시스템 호출을 통해 다른 프로세스를 생성한 경우, 새 프로세스를 생성한 프로세스는 부모 프로세스(parent process), 생성된 프로세스는 자식 프로세스(child process)가 됨.
      • PPID (Parent PID)

    • 프로세스 계층 구조 : 프로세스의 부모 자식 관계를 알 수 있도록 만든 트리구조의 도표.

  • 프로세스 생성 기법
    • 자식 프로세스들은 복제와 옷 갈아입기 과정을 통해 실행.
    • fork : 부모 프로세스들은 자신의 복사본을 자식 프로세스로 생성.
    • exec : 자식 프로세스는 자신의 메모리 공간을 다른 프로그램으로 교체.

10-3. 스레드

 

  • 스레드(thread) : 프로세스를 구성하는 실행의 흐름 단위.

  • 프로세스와 스레드
    • 단일 스레드 프로세스 : 프로세스 실행의 흐름 단위가 하나.
    • 멀티 스레드 프로세스 : 프로세스 실행의 흐름 단위가 여럿으로, 각 스레드는 실행에 필요한 최소한의 정보 (프로그램카운터를 포함한 레지스터, 스택) 만을 유지한 채 프로세스 자원을 공유하며 실행.

  • 멀티프로세스와 멀티스레드
    • 멀티 프로세스 : 여러 프로세스를 동시에 실행하는 것.

    • 단일 프로세스 멀티스레드 vs 멀티프로세스 단일스레드
      • 후자는 메모리에 동일한 내용들이 중복해서 존재하여 낭비.
      • 전자는 프로세스 자원을 공유하여 효율적인 작업 가능.


참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)

'CS지식 > 운영체제' 카테고리의 다른 글

운영체제 Ch.6 가상 메모리  (0) 2023.01.30
운영체제 Ch.5 교착  (0) 2023.01.30
운영체제 Ch.4 동기화  (0) 2023.01.29
운영체제 Ch.3 CPU 스케쥴링  (0) 2023.01.28
운영체제 Ch.1 운영체제 시작하기  (0) 2023.01.17