본문 바로가기
방통대/운영체제

프로세스와 쓰레드(2강)

by 녹녹1 2025. 3. 9.

프로세스의 개념 

쓰레드의 개념

프로세스와 쓰레드의 관계

 

1. 프로세스의 개요

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

- 프로그램 : 동작을 하지 않는 정적, 수동적 개체

- 프로세스 : 동작을 하는 능동적 개체

 

2) 운영체제로부터 자원을 할당받아 동작

- 자원 : CPU, 메모리, 입출력장치, 파일 등

- 동작 : CPU가 프로세스의 명령을 실행

 

3) 운영체제(프로세스 관리자)가 처리하는 작업

- 프로세스 생성 및 종료

- 프로세스를 실행시키기 위한 스케줄링 작업

- 프로세스의 상태 관리(실행중인지 중지되었는지 ..)

- 작업관리자에서 현재 내 pc에서 실행중인 프로세스들을 확인할 수 있음

- 동일한 프로그램(ex.Hwp) 여러 번 실행시켰을 경우 동일한 이름으로 구분할 수 없기에 프로세스 아이디인 PID로 확인할 수 있음

2. 프로세스의 구성

⚒️ 메모리 구조

- 프로그램 실행에 직접적으로 필요한 코드데이터

 

 

1) 코드 영역 : 프로그램 자체

 

2) 프로그램 실행 시 필요한 데이터 

- 상수나 변수의 값

- 서브 프로그램 호출상태 등

(대략적으로 전역변수는 정적데이터 영역, 지역변수는 스택 영역, 동적 변수 중 사용자가 수동으로 할당하는 값은 힙 영역)

 

⚒️ 프로세스 제어 블록(Process Contrl Block : PCB)

 

- 운영체제가 프로세스를 관리하기 위해 필요한 정보
(특정 프로세스를 다른 프로세스와 구분하여 처리하기 위해서는 정보들이 필요함)

 

- 각 프로세스마다 존재

- 여러 프로세스가 번갈아 실행되는 경우 PCB에 저장된 정보 활용

 

 

 

 

 

 

 

 

 

 

⚒️ 프로세스 상태 관리

- 크게 5가지 단계로 나눌 수 있음

 

1) 생성

- 처음 작업이 시스템에 주어진 상태

- 메모리 할당, PCB 생성

- 위 준비가 끝나면 준비단계로 넘어감

 

2) 준비

- CPU 할당이 끝나면 실행 상태로 넘어감

- 실행 준비가 되어 cpu 할당을 기다리는 상태

 

3) 실행

- 프로세스가 처리되는 상태

 

4) 대기

- 프로세스가 실행 중 다른 이벤트(ex.입출력 등)로 기다리게 되었을 때 대기상태로 진입함

 

5) 종료

- 프로세스가 더 이상 실행되지 않도록 끝난 상태

⚒️ 프로세스 상태 관리

- 프로세스 상태 변화가 가능한 길은 한정되어있음

1) 생성단계에서는 준비단계로만 변화가 가능함

2) 준비단계에서 cpu를 할당받게 되는 것을 "디스패치" 라고 함

3) 실행단계에서 할당된 시간을 다 사용했을 경우에는 준비단계로 되돌아감

4) 실행단계에서 특정 이벤트가 생겼을 경우 대기단계로 변화함

5) 특정 이벤트가 끝난 경우 실행상태가 아니라 준비 상태로 변화함(이후 디스패치-실행단계 거침)

6) 실행과정이 잘 끝나거나 오류가 생긴 경우에도 종료단계로 변화할 수 있음

 

⚒️ 프로세스 생성 방법

- 사용자가 프로그램을 직접 실행

- 한 프로세스가 다른 프로세스를 생성

    - 프로세스 생성 시스템 호출 이용

   (※ 시스템 호출 : 사용자 모드에서 커널 모드로 변화하는 것)

    - 부모 프로세스 : 시스템 호출을 하는 프로세스 

⚒️ 프로세스 생성하는 시스템 호출

1. UNIX, Linux

1) fork() 명령어 사용

- 자식 프로세스는 부모 프로세스의 복제본

- PID(프로세스ID)만 달라짐

- 부모 프로세스의 pid에는 결과값(자식의 pid)이 들어가고 자식 프로세스의 pid에는 0이 들어감.

 

2) exec() 명령어 사용

- 자식 프로세스에게 부모와 다른 프로그램을 시키고 싶을 경우 사용

- 만약 pid가 0이라면(자식 프로세스라면) exec 명령어를 통해 prg2라는 새로운 프로그램 실행 -> 메모리 구조, PCB가 새로운 프로그램에 따라 바뀜(pid는 바뀌지 않음)

 

 

2. Windows

1) CreateProcess() 

- 자식 프로세스는 새로운 프로그램으로 생성

- 자식 프로세스는 처음부터 prg2라는 프로그램으로 생성됨

 

⚒️ 프로세스 종료 방법

1) 프로세스가 모든 처리를 완료(정상적 종료)

2) 부모 프로세스에 의해 자식 프로세스가 강제 종료

- 프로세스 종료 시스템 호출 이용

- 자식 프로세스 생성시 얻은 자식 PID 이용

3) 부모 프로세스가 종료되는 경우 운영체제가 자식 프로세스 종료

 

2. 쓰레드 (Thread)

⚒️ 전통적인 프로세스

 

- 하나의 프로그램을 실행하기 위한 기본적인 단위

- 자원 소유의 단위

   - 하나의 메모리 구조

- 디스패칭의 단위

   - 하나의 제어 흐름

- 프로세스 내에서 다중처리 불가능

 

 

 

 

 

⚒️ 쓰레드(Thread)

 

- 프로세스 내에서의 다중처리를 위해 제안된 개념

- 하나의 프로그램을 실행하기 위한 기본적인 단위

- 디스패칭(cpu를 할당받아 명령어 처리)의 단위

- 하나의 프로세스 내에는 하나 이상의 쓰레드 존재

 

- 이전에는 PCB 안에 있던 pc를 쓰레드가 가지게 됨

 

 

 

 

 

 

 

⚒️ 프로세스 비교

- 전통적인 프로세스

 

 

- 쓰레드 있는 프로세스

 

⚒️ 프로세스 비교

 

1) 쓰레드는 실행에 필요한 최소한의 정보만 가짐

- PC를 포함한 레지스터 값

- 상태정보

- 스택영역

 

2) 나머지 정보는 프로세스에 두고 다른 쓰레드와 공유

 

 

 

 

 

 

 

⚒️ 다중 쓰레드로 구성된 프로세스

 

1) 처리속도 별로 쓰레드가 나눠진 경우

- 효율적인 처리 가능

 

 

 

 

 

 


  1. 프로세스는 실행 중인 프로그램을 의미하며, CPU, 메모리, 파일, 입출력장치 등 실행에 필요한 자원이 할당된다.
  2. 프로세스 제어 블록은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.
  3. 프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, 입출력 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작한다.
  4. 쓰레드는 프로세스에서 실행의 개념만 분리한 것으로 디스패칭의 단위이다.
  5. 하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어, 다중 쓰레드를 생성하여 프로세스 내에서의 다중처리를 할 수 있다.

'방통대 > 운영체제' 카테고리의 다른 글

메모리 관리  (0) 2025.04.06
운영체제 소개 (1강)  (2) 2025.03.02

댓글