오늘 알아볼 내용은 프로세스(Process)와 스레드(Thread)입니다.
프로세스란
프로세스란 "컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램" 쉽게 말해 실행되고 있는 프로그램을 의미합니다.
프로세스의 특징은 다음과 같습니다.
- 프로세스는 각각 독립된 메모리 영역(Code, Head, Data, Stack)을 할당받는다
- 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다.
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
- 한 프로세스가 다른 프로세스의 자원에 접근하기 위해선 프로세스 간의 통신(IPC)을 사용해야 합니다
Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용
스레드란?
스레드란 "프로세스 내에서 실행되는 여러 흐름의 단위"라고 설명할 수 있으며,
프로세스의 특정한 수행 경로라고도 할 수 있습니다.
스레드의 특징은 다음과 같습니다.
- 프로세스 내부에 존재하기 때문에 프로세스의 데이터 영역에 접근이 가능하며, 스레드들끼리 서로의 데이터도 접근 가능하다.
- 프로세스와 달리 Stack메모리 공간만 가지게 된다.
- 한 개의 프로세스는 여러 개의 스레드를 가질 수 있다.
프로세스와 스레드의 주요 차이점이라 하면 스레드는 공유 메모리 공간에서 실행되지만
프로세스는 별도로 주어진 메모리 공간에서 실행된다는 차이가 있습니다.
스레드의 장단점
앞서 말했듯 스레드는 프로세스 내부에 존재하여 작업을 처리하는 것에 있어 장점도 있지만 단점도 있습니다.
장점
- 프로세스가 여러 프로세스로 분할되어 일부 스레드의 처리가 늦어지더라도 다른 스레드는 계속해서 작업을 처리할 수 있습니다.
- 한 개의 프로세스 안에 다중 스레드가 있는 경우 다중 프로세서에서 다중 스레드의 예약이 가능합니다. 이는 프로세스 성능을 향상할 수 있다는 말과 같습니다.
- 프로세스 간의 통신은 특정 통신 기법(IPC)이 필요하지만, 스레드는 주소 공간을 사용하면 되기에 데이터를 교환할 때 특별한 기법 없이 데이터를 교환할 수 있습니다.
단점
- 스레드를 많이 생성하게 되면 각각의 스레드들이 병렬로 실행되는데, 이때 스위칭이 빈번하게 발생해야 하기 때문에 성능이 저하될 수 있다.
- 스레드는 개별적인 실행흐름을 가지고 있기 때문에 각각의 스레드마다 메모리 자원을 소비합니다. 따라서 스레드의 수가 많아진다면 메모리 사용양도 같이 늘어나게 되어 한정되어있는 시스템 자원이 한계점에 도달할 수 있습니다.
출처
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
'OS' 카테고리의 다른 글
리눅스 기본 명령어 (1) | 2023.11.20 |
---|---|
캐시와 버퍼 (0) | 2023.11.18 |
파일 시스템 (0) | 2023.11.14 |
메모리 관리 (1) | 2023.11.12 |
컴퓨터 구조의 시작 (0) | 2023.11.08 |