학습/방통대 컴퓨터과학과

운영체제-프로세스와 쓰레드

minux1 2023. 6. 18. 11:49
반응형
SMALL

운영체제에서 중요하게 구별해야하는 프로세스와 쓰레드에 대해 정리해봤다.

 

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

-프로세스는 실행 중인 프로그램을 의미하며, CPU, 메모리, 파일, 입출력장치 등 실행에 필요한 자원이 할당된다.

-프로세스 제어 블록은 프로세스를 명시해 주는 다양한 내용을 포함하고 있다.

-프로세스는 생성, 준비, 실행, 대기, 종료의 다섯 상태 중 하나로 존재하며, CPU의 스케줄링, 입출력 대기 등에 따라 준비, 실행, 대기 등으로 상태가 변화되며 동작한다.

 

쓰레드 = 프로세스에서 실행의 개념만 분리한 것으로 디스패칭의 단위

  -하나의 프로세스 내에는 하나 이상의 쓰레드가 있을 수 있어, 다중 쓰레드를 생성하여 프로세스 내에서의 다중처리를 할 수 있다.

 

프로그램과 프로세스의 차이

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

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

 

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

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

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

 

 

 

프로세스의 구성

메모리 구조

-프로세스 제어 블록 (PCB)

-운영체제가 프로세스를 관리하기 위해 필요한 정보

-각 프로세스마다 존재

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

프로세스 제어 블록 구조

 

 

프로세스 상태 관리

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

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

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

종료-프로세스가 더 이상 실행되지 않도록 종료된 상태

대기-프로세스가 I/O 작업이 끝날 때 까지 또는 특정 자원을 할당받을 때까지 보류되는 상태

 

프로세스 상태 변화

 

 

부모 프로세스와 자식 프로세스

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

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

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

 

부모 프로세스가 다른 프로세스를 생성

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

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

-자식 프로세스: 시스템 호출을 통해 새로 생성된 프로세스

 

프로세스 생성 시스템 호출 방법

UNIX,Linux: fork()

자식 프로세스는 부모 프로세스의 복제본 *새로운 프로세스가 만들어졌기 때문에 PID만 다르다.

 

UNIX,Linux: exec()

자식 프로세스는 부모 프로세스와는 다른 프로그램 실행, 다 다르고 pid만 동일

 

Windows: CreateProcess()

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

 

 

프로세스 종료 방법

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

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

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

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

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

 

 

쓰레드

전통적인 프로세스란 하나의 프로그램을 실행하기 위한 기본적인 단위이다.

 

자원 소유의 단위

-하나의 메모리 구조

디스패칭의 단위

-하나의 제어흐름

 

프로세스 내에서 다중처리 불가능 따라서 쓰레드가 등장했다

따라서 스레드란 프로세스 내에서의 다중처리를 위해 제안된 개념

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

-디스패칭의 단위 (쓰레드 별로 각각 디스패칭을 받는다)

 

 

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

-pc를 포함한 레지스터 값

-상태정보

-스택영역

 

 

프로세스 비교

 

 

 

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

멀티 CPU 또는 멀티코어 컴퓨터 시스템

다중 쓰레드를 병렬로 처리 가능

반응형
LIST