본문 바로가기
코딩 지식

[코딩 지식] Process 와 Thread

by 코딩하는경준 2022. 4. 29.

프로세스

프로그램(ex. Chrome, KaKaoTalk, IntelliJ, Slack 등등.. )이 동작을하면 프로세스가 되어 메모리에 올라가서 실행이 됩니다.

이때 OS 혹은 다른 프로그램에서 프로세스가 한개가 아닌 여러개가 실행되는 것을 볼 수 있는데 여러개가 동시에 실행이 된다고해서 정말 동시에 실행이 되는것이 아닙니다.

동시성

동시성은 사실 동시에 일어나는 작업이 아닌, 컨텍스트 스위칭 이라는 작업을 통해서 빠르게 한 프로세스 씩 수행하는 방법입니다.

동시에 실행하고 싶은 프로세스 두개가 있습니다.

프로세스 1 이 CPU 로 올라갑니다.

프로세스 1은 준비상태로 내려가고 프로세스 2가 다시 CPU 로 올라갑니다.

프로세스 1은 CPU로 올라가고 프로세스 2가 준비 상태로 내려갑니다.

이 과정을 컨텍스트 스위칭 이라 부릅니다.

작업이 너무 빠르게 진행되다보니 동시에 일어나는 것 처럼보여서 동시성 이라고 합니다.

 

 

프로세스와 스레드

운영체제에서는 여러개의 프로세스가 돌아가는데 그 안에서 또 실행되는 작업들은 스레드라 부릅니다.

예를들어 IntelliJ 를 켜서 코딩을 함을 동시에 크롬에는 유튜브 플레이리스트와 구글링을 동시에 한다고 가정했을때

 

프로세스 A = IntellJ

프로세스 A 의 스레드 1 = 코드 실행

프로세스 A 의 스레드 2 = 코드를 작성하는 작업

프로세스 B = Chrome

프로세스 B 의 스레드 1 = 유튜브

프로세스 B 의 스레드 2 = 구글링을 하는 작업

 

이라고 볼 수 있습니다.

 

멀티 프로세스와 멀티 스레드

멀티 프로세스와 멀티스레드는 처리 방식의 일종입니다.

 

예시를 들자면 다음과 같습니다.

 

다들 Chrome, Internet Exprlor 써보신적 있으시죠??

Chrome 은 멀티 프로세스 방식으로 한 탭에 문제가 생겨도 다른 탭에 영향이 가지 않는 특징이 있습니다.

반면 Internet Exprlor 는 멀티 스레드 방식으로 한 탭에 문제가 생기면 다른 탭이 모두 꺼져버리는 특징이 있습니다.

( 중학교때 과제하느라 창을 엄청 많이 켜뒀는데 오른쪽 화면처럼 경고창이 뜨면서 다 꺼졌었던 기억이 있네요.. )

 

다음에는 자바를 이용하여 제가 최근 프로젝트를 하면서 겪었던 스레드와 동시성 문제에 대해 다뤄보도록 하겠습니다.

 

Reference

- https://www.youtube.com/watch?v=1grtWKqTn50&t=631s

- https://www.youtube.com/watch?v=iks_Xb9DtTM

- https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

댓글