김기현
Chapter10

프로세스와 스레드

프로세스 개요

프로세스 직접 확인하기

프로세스 : 실행 중인 프로그램

  • 포그라운드 프로세스 : 사용자가 볼수 있는 공간에서 실행되는 프로세스
  • 백그라운드 프로세스 : 사용자가 볼수 없는 공간에서 실행되는 프로세스

백그라운드 프로세스는 유닉스 에서는 데몬, 윈도우 에서는 서비스

프로세스 제어 블록

프로세스 제어 블록 (PCB) : 프로세스와 관련된 정보를 저장하는 자료 구조 , 커널 영역 에 생성

➡️ 프로세스를 실행 = PCB를 생성했다 , 프로세스를 종료 = PCB를 폐기했다

PCB에 담기는 정보
  • 프로세스 ID (PID) : 특정 프로세스를 식별하기 위한 고유 번호
  • 해당 프로세스가 사용하며 사용했던 프로그램 카운터 를 비롯 레지스터 값이 담겨있음
  • 프로세스 상태 정보
  • 프로세스가 언제, 어떤 순서로 CPU를 할당받을지 스케줄링 정보
  • 프로세스마다 메모리에 저장된 위치 베이스 레지스터 , 한계 레지스터 , 페이지 테이블 정보
  • 사용된 파일과 입출력장치

문맥 교환

문맥 : 하나의 프로세스에서 다음 프로세스로 실행 순서가 넘어갈 때,
프로세스 수행을 재개하기 위해 기억해야 할 정보

문맥 교환 : 기존 프로세스를 문맥 ➡️ PCB로 백업, 새 프로세스를 PCB ➡️ 문맥으로 실행

프로세스의 메모리 영역

프로세스가 사용자 영역에 배치되는 방법
  1. 코드 영역
  • (=텍스트 영역) , 코드나 기계어로 이루어진 명령어가 저장됨 , 읽기 전용 공간
  1. 데이터 영역
  • 프로그램이 실행되는 동안 유지할 데이터가 저장됨 (ex: 전역 변수) ➡️ 전역 변수 : 프로그램이 실행 되는 동안 유지되며 프로그램 전체에서 접근 가능한 변수

⭐️ 코드 영역데이터 영역 은 크기가 고정된 영역이라 정적 할당 영역 이라고도 불림

  1. 힙 영역
  • 프로그래머가 직접 할당 가능한 저장 공간
  • 프로그래밍 과정에서 힙 영역 에 메모리를 할당했다면, 언젠가는 반환해야함
  • 반환한다 = 더이상 해당 메모리 공간을 사용하지 않음 반환하지 않을 경우 ⁇ ➡️ 할당한 공간은 계속 남아 메모리 낭비를 초래 (=메모리 누수)
  1. 스택 영역
  • 데이터를 일시적으로 저장하는 공간, = 매개 변수 , 지역 변수
  • 일시적으로 저장할 데이터는 스택 영역에 PUSH , 필요하지 않은 데이터는 POP

⭐️ 힙 영역스택 영역 은 프로세스 실행과정에 따라 변할수 있기에 동적 할당 영역

프로세스 상태와 계층 구조

프로세스 상태

  1. 생성 상태 : 프로세스를 생성 중인 상태
  2. 준비 상태 : CPU를 할당받아 실행되길 기다리는 상태
  3. 실행 상태 : CPU를 할당받아 실행 중인 상태
  4. 대기 상태 : 입출력장치의 작업을 기다리는 상태, 입출력 작업 완료되면 준비 상태 로 돌아감
  5. 종료 상태 : 프로세스가 종료된 상태

⭐️ 운영체제는 이 상태들을 PCB에 기록하며 프로세스들을 관리

프로세스 계층 구조

  • 부모 프로세스 : 새 프로세스를 생성한 프로세스
  • 자식 프로세스 : 부모 프로세스 에 의해 생성된 프로세스

‼️ 둘은 엄연히 다른 프로세스 이므로 프로세스 ID (PID)가 다름

프로세스 계층 구조 : 반복되는 프로세스 생성 과정을 도표로 트리 구조로 나타낸 것

프로세스 생성 기법

  1. 부모 프로세스는 fork 를 통해 복사본을 자식 프로세스로 생성
  2. 만들어진 자식 프로세스는 exec를 통해 자신의 메모리 공간을 새 프로그램으로 생성

➡️ exec 를 호출하면 코드 영역과 데이터 영역이 새 프로그램의 내용으로 변경, 힙과 스택은 초기화

스레드

프로세스와 스레드

스레드 : 프로세스를 구성하는 실행의 흐름 단위

  • 단일 스레드 프로세스 : 프로세스 내에 단일 스레드만 존재하여 한번에 하나의 작업 처리 가능
  • 멀티 스레드 프로세스 : 프로세스 내에 여러 스레드가 존재하여 동시에 여러 작업 처리 가능

멀티프로세스 : 여러 개의 프로세스가 동시에 실행되는 환경

‼️ 프로세스 끼리는 자원을 공유하지 않지만, 스레드 끼리는 같은 프로세스 내의 자원을 공유