728x90

프로세스(process)와 스레드(thread)

1. 개요

프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.
각 프로세스는 독립적인 리소스를 할당받는다.
스레드는 프로세스 내에서 실행되는 실행 흐름의 단위이다.

2. 구분

프로세스는 서로 독립적으로 실행된다.
추상화를 통해 마치 하나의 PC를 할당받는다는 환상 속에서 작업이 진행된다.
때문에 프로세스끼리는 서로 영향을 미치지 않고, 운영체제 스케줄링에 의해서
CPU와 메모리 등 리소스를 할당받아 작업이 진행된다.
프로세스 간에 정보 교환은 IPC라는 통신을 통해 이루어진다.

하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.
같은 프로세스의 스레드는 프로세스가 할당받은 리소스를 공유한다.
하나의 스레드가 메모리 등을 변경하면 다른 스레드도 영향을 받는다.

3. 특징

프로세스 내에서 스레드의 전환이 프로세스의 전환보다 빠르다.
프로세스가 여러 프로세스에서 돌아가는 것은 멀티 프로세싱이라 하고
스레드가 여러 프로세서에서 돌아가면 이를 멀티 스레딩이라 한다.
두 기법 모두 여러 흐름이 동시에 진행되지만 멀티 프로세싱은 독립적으로,
멀티 스레딩은 리소스를 공유하며 동시에 수행될 수 있다.
멀티 스레딩의 문제는 어떤 스레드가 먼저 실행될 지 보장하지 않는다는 것이다.
이러한 경쟁 조건을 막기 위해서는 세마포어 등으로 공유 데이터에 접근한
스레드의 수를 제한하는 방법이 있다.

728x90

'TIL > 기본' 카테고리의 다른 글

[TIL] Base64  (0) 2023.03.29
[TIL] UTF-8  (0) 2023.03.28
[TIL] 1byte가 나타낼 수 있는 숫자  (0) 2023.03.28
[TIL] 1pixel은 용량이 얼마나 될까?  (0) 2023.03.28
[TIL]HDD와 SSD, DRAM  (0) 2023.03.28

+ Recent posts