본문 바로가기
🌱 Computer Science/OS

[OS] 스레드 vs 프로세스 차이점(+멀티스레드/멀티프로세스)

by 카프리썬_ 2020. 1. 14.
728x90

정리. 

프로세스는 실행되고 있는 하나의 프로그램이고, 스레드는 프로세스안에서 처리하고 있는 하나의 작업단위

프로세스는 독립된 자원을 할당받아 사용하고, 스레드는 프로세스 안에서 자원을 공유하면서 실행한다.

 

 

프로세스

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램

메모리에 올라와 실행되고 있는 프로그램의 인스턴스

운영체제로부터 시스템 자원을 할당받는 작업의 단위

동적인 개념으로는 실행된 프로그램

프로세스는 각각 독립된 메모리영역(코드,데이터,스택,힙) 을 할당받는다

(자신만의 고유 공간과 자원을 할당받아 사용)

기본적으로 프로세스당 최소 1개의 스레드를 가지고 있다

스레드

프로세스 내에서 실행되는 여러 흐름의 단위

프로세스의 특정한 경로

프로세스가 할당받은 자원을 이용한느 실행 단위

스레든느 프로세스 내에서 각각 스택만 따로 할당받고, 코드,데이터,힙 영역은 공유한다

(프로세스 내의 주소공간이나 자원들을 대부분 공유하면서 실행)

프로세스 내에서 동작되는 여러 실행흐름

프로세스 내의 주소공간이나 자원공간은 같은 프로세스 내의 스레드끼리 공유한다

장점) 자원소모가 줄어든다, 응답시간이 단축된다, 프로세스간 통신보다 훨씬 간단핟,

단점)디버깅이 어렵다.

출처 https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

​+ 멀티프로세스란?

하나의 응용프로그램을 여러개의 프로세스로 구성해서 각 프로세스가 하나의 작업을 처리

장점) 여러개의 자식 프로세스 중에 하나의 문제가 발생하면 그 자식 프로세스만 죽고, 다른 프로세스에 영향을 쥦 않음

단점) context swithching에서 오버헤드가 발생

context switching : cpu에서 여러 프로세스를 돌아가면서 적업을 처리하느 과정

동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태를 보관하고,

대기하고 있던 다음 순서의 프로세스가 동작하면,

이전에 보관했던 프로세스의 상태를 복구하는 작업

+멀티스레드란?

하나의 응용프로그램을 여러개의 스레드로 구성하고, 각 스레드가 하나의 작업을 처리

웹서버가 대표적인 멀티스레드 프로그램

장점) 자원 효율성 증대 : 프로세스를 생성해서 자원을 할당하는 시스템이 줄어 자원을 효율적으로 관리

시스템처리량 증가 : 스레드간 데이터를 주고받는것이 간단, 시스템자원소모가줄어듬, 스레드사이 작업략이 작아 context swithching빠름

단점) 프로세스 밖에서 스레드를 각각 제어할 수 없다. 멀티스레드의 경우 자원공유의 문제가 발생

 

 

 

반응형