개발 무지렁이

[Essential Concepts] 프로세스(Process)와 스레드(Thread) 본문

Backend/백엔드 필수개념

[Essential Concepts] 프로세스(Process)와 스레드(Thread)

Gaejirang-e 2022. 11. 29. 14:47

프로세스


컴퓨터가 어떤 작업을 하고 있는 상태를 말한다.

멀티태스킹을 가능하게 하는 동시성과 병렬성

❓ 운영체제(OS)가 어떻게 여러개의 프로세스를 함께 돌릴까?

동시성*

프로세서가 여러개의 작업을 일부분씩 진행하는 것을 말한다.
※ 진행중인 작업을 바꾸는 것을 ' Context Switching '이라 한다.
※ Context Switching 이 매우 빠르게 일어나 동시에 일어나는 것처럼 보인다.

병렬성*

프로세서 하나에 여러개의 코어가 동시에 작업을 진행하는 것을 말한다.
(멀티코어 프로세서)

스레드


멀티태스킹을 가능하게 하는 여러개의 프로세스(Process),
각각의 프로세스 안에서의 여러개의 갈래(작업)를 스레드라고 한다.

컴퓨터는 프로세스마다* 자원을 분할해서 할당하는데
여기서 하나의 프로세스의 여러개의 스레드가
같은 변수에 동시에 접근하면 에러가 생긴다.

따라서, 이를 방지하기 위한 장치들이 있는데
예를들어, 자바에는 synchronized 블럭이 있다.
이 블럭 안에 있는 변수는 한 번에 하나의 스레드만 접근할 수 있다.

Comments