이론공부/운영체제

프로세스와 스레드, 프로그램의 차이점(운영체제,OS)

멍토 2020. 4. 26.

프로그램이란?

1. 파일시스템에 등록되어있는 메모리상에 올라가 있지않은 프로그램입니다.


프로세스란?

1. 메모리에 올라가있는 프로그램으로 볼 수 있습니다.(실행중인 프로그램)

프로세스의 특징

1. 스택, 힙, 데이터, 텍스트로 구성된 독립적인 메모리 영역을 가지고 있다.

2. 한개 이상의 스레드를 포함하고 있습니다.

※ 프로그램 그 자체는 프로세스가 아닙니다.

프로세스 구조

각 역할을 이렇습니다.

Stack : 함수의 매개변수, 복귀주소, 로컬변수등 같은 임시자료

Data : 전역 변수들을 저장

Heap : 동적으로 할당되는 것들

Text : 코드

멀티 프로세스란?

1. 하나의 응용프로그램을 여러개의 프로세스로 구성하여 작업을 처리하도록 하는것.

장점 : 여러 프로세스중 하나가 문제가 발생하면 문제가 발생한 프로세스 이상으로 영향이 확산이 되지 않는다.

단점 : 공유하는 자원이 없으므로 context switch의 오버헤드가 크다.

프로세스 간에 통신이 어렵다.


스레드란?

1. 프로세스 내부의 실행 흐름으로 볼 수 있습니다.

특징 :1. Code, Data, Heap을 공유하고 Stack만 따로 사용

2. 같은 프로세스 내의 주소공간에 있으므로 데이터 공유가 쉽다.

쓰레드 구조

장점 : Code, Data, Heap을 공유하기때문에 context Switch의 오버헤드가 적고 빠르다.(시스템 처리량 증가 및 처리 비용 감소)

자원 소모가 적다.

응답 시간이 단축된다(데이터를 공유하기 때문에)

단점 : 같은 데이터 공간을 공유하므로 데이터 사용시 출동일 일어날 수 있다.(동기화 문제)

하나의 스레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.

설계가 어렵다.

'이론공부 > 운영체제' 카테고리의 다른 글

블록킹/논블록킹, 동기/비동기  (0) 2021.08.23

댓글

💲 광고입니다.