기타

프로세스(Process)/스레드(Thread)

s0002 2023. 2. 1. 18:00

프로세스

컴퓨터 시스템이 하나의 프로그램만 수행하는 단일 프로그래밍 시스템에서

다수의 프로그램을 수행하는 다중 프로그래밍 시스템으로 발전하면서

개별 프로그램을 제어할 필요가 발생했고, 프로세스 개념이 등장했다

 

프로세스는 많은 정의가 있지만 실행중인 프로그램이라는 개념이 가장 널리 사용된다

디스크에 저장된 프로그램을 메모리에 적재하면 프로세스가 생성된다


 

프로세스가 생성되면 종료될 때까지 여러가지 상태를 거친다

생성 상태: 프로그램이 활성화 프로세스로 변환된 상태이다

준비 상태: 프로세스가 CPU를 할당받기를 위해 준비 큐에서 기다리는 상태이다

실행 상태: 프로세스가 CPU를 차지하여 실행되고 있는 상태이다

대기 상태: 프로세스가 자원이나 이벤트를 기다리는 상태이다

종료 상태: 프로세스가 실행을 완료한 상태이다


두 개 이상의 연관된 프로세스들이 동시에 실행되는 것을 병행 프로세스라고 한다

병행 프로세스는 독립적으로 실행되거나 다른 프로세스와 협력하여 실행된다

 

두 개 이상의 프로세스들이 병행 처리 상태에 있으면 교착상태 등의 오류가 발생할 수 있는데

이를 방지하기 위해서 동기화, 상호 배제, 임계구역 기법 등을 사용한다

 

동기화: 프로세스들의 처리 순서를 결정한다

상호 배제: 하나의 프로세스가 공유 자원을 사용하는 동안 다른 프로세스는 그 자원을 사용할 수 없다

임계구역: 병행 프로세스가 사용하는 공유 자원을 임계구역이라고 한다

한 프로세스가 공유 자원을 사용하면 임계구역에 있다고 하는데

그 때 다른 프로세스가 임계구역에 진입할 수 없도록 제어하는 기법이다


스레드

스레드는 한 프로세스 안에서 실행되는 흐름의 단위이다 경량 프로세스라고도 한다

스레드를 사용하면 프로세스 사용 시보다 시스템 자원 소모가 적고,

프로세스를 생성할 때의 system call이 줄어들어 시스템 자원을 효율적으로 관리할 수 있다

 

프로세스는 무조건 하나 또는 하나 이상의 스레드를 보유한다

여러개의 스레드를 가지는 방식을 멀티스레드 방식이라고 한다

스레드는 각자 자신의 stack 영역을 독립적으로 가지며, code, data, heap 영역을 공유한다

따라서 스레드 간의 통신은 간단하지만 동기화 문제가 발생할 수 있고,

하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 준다

 

 

참고: 이동명 「컴퓨터 사이언스」,

https://code-lab1.tistory.com/43

 

[운영체제] 쓰레드(Thread)란? | 쓰레드 프로세스 차이 | 멀티프로세스 멀티쓰레드 차이

쓰레드란(Thread)란? 쓰레드(Thread)란 프로세스 내에서 실행되는 흐름의 단위 혹은 CPU 스케줄링의 기본 단위 라고 할 수 있다. 쓰레드는 다음과 같은 특징을 가지고 있다. 쓰레드는 각자 자신의 Stack

code-lab1.tistory.com

사진 출처: https://itwiki.kr/w/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%83%81%ED%83%9C

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr