티스토리 뷰
프로세스
메모리에 올라와 실행되고 있는 프로그램의 인스턴스
특징
- 운영체제로부터 독립된 메모리 영역을 할당받는다.
- 다른 프로세스의 자원에 접근하지 않음!
- 프로세스들은 독립적이기 때문에 통신하기 위해 IPC를 사용해야 한다.
- 프로세스는 최소 1개의 쓰레드(메인 쓰레드)를 가지고 있다.
문제점
- 프로세스 생성에 큰 오버헤드가 있다. (프로세스를 생성할 때 많은 시간이 소요됨)
- 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가 큼
- 프로세스 사이에 통신이 어렵다는 점 (IPC 사용해야 함)
쓰레드
프로세스 내에서 할당받은 자원을 이용해 동작하는 실행 단위
출현 목적
- 프로세스보다 크기가 작은 실행 단위 필요
- 프로세스의 생성 및 소멸에 따른 오버헤드 감소
- 빠른 컨텍스트 스위칭
- 프로세스들의 통신 시간, 방법 어려움 해소
특징
- 쓰레드는 프로세스 내에서 Stack만 따로 할당 받고, Code, Data, Heap 영역은 공유한다.
- Stack을 분리한 이유는 Stack에는 함수의 호출 정보가 저장되는데, Stack을 공유하면 LIFO 구조에 의해 실행 순서가 복잡해지기 때문에 실행 흐름을 원활하게 만들기 위함이다.
- 쓰레드는 프로세스의 자원을 공유하기 때문에 다른 쓰레드에 의한 결과를 즉시 확인할 수 있다.
- 프로세스 내에 존재하여 프로세스가 할당받은 자원을 이용하여 실행된다.
주소공간
- 하나의 스레드가 동작하기 위해 총 6개의 공간이 있다.
- 시작공간
- 스레드 코드 공간
- 스레드 전용 전역변수 공간
- 스택 공간
- 공유공간
- 데이터 공간
- 힙 공간
- 커널 스택
요약
- 프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다.
- 프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당받는다.
- 스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다.
- 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하고 스레드는 다른 스레드와 공간과 자원을 공유하면서 사용한다.
'CS > 운영체제' 카테고리의 다른 글
Context Switching에 대해 설명해주세요. (0) | 2023.07.17 |
---|---|
Multi Process/Thread 환경에서 동기화 문제를 어떻게 해결하나요? (0) | 2023.07.17 |
Multi Process환경에서 Process간 데이터를 어떻게 주고받나요? (0) | 2023.07.17 |
Multi Process와 Multi Thread의 특징과 차이점에 대해 설명해주세요. (0) | 2023.07.17 |
사용자 수준 스레드와 커널 수준 스레드 차이에 대해 설명해주세요. (0) | 2023.07.17 |