공부/CS 스터디

[운영체제] 프로세스와 스레드의 차이

규투리 2023. 9. 22. 18:22
반응형

👩‍🏫 : "프로세스와 스레드의 차이점에 대해 설명해주세요."

🙋🏻‍♀️ : "..."

 

면접 단골 질문 프로세스와 스레드의 차이점에 대해 알아보자!!!!!!

 

0. 들어가기 전

브라우저를 웹서핑하다가 마음에 드는 게임을 찾았다!

오잉? 다운로드 버튼을 눌렀더니 갑자기 마우스도 안 움직이고 키보드도 안 먹힌다..;;

몇 분에 걸쳐 이 게임이 다 받아질 때까지 컴퓨터가 먹통이 되어 있는 거다.. ㅜ

 

뭔 이딴 컴퓨터가 다 있냐?!

라고 생각할 수 있겠지만, 옛날 컴퓨터들은 다 이런 식으로 작동했다.

게임을 다운로드 하는 작업, 마우스나 키보드로부터 입력을 받는 작업, 브라우저로 사이트를 돌아다니는 작업 과 같은 일들을 동시에 처리하지 못하고 한 번에 하나씩만 할 수 있었다.

 

컴퓨터가 프로세스 여러개를 함께 돌리는 "멀티테스킹"이 가능해지기 전까지는!!!!

 

1. 프로세스와 스레드가 뭔데?

결론부터 말하자면 이 둘을 한 마디로 정의하자면 다음과 같다.

프로세스 (Process) 운영체제로부터 자원을 할당받은 작업의 단위
스레드 (Thread) 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위

해당 개념들을 기억해두고 글을 읽어봅시다.

 

2. 프로그램과 프로세스

프로그램 : 컴퓨터에서 실행할 수 있는 파일(*.exe 파일, *.dmg 파일)
프로세스 : 프로그램이 실행 돼서 돌아가고 있는 상태, 즉 컴퓨터가 어떤 작업을 하고 있는 상태

 

우리가 오늘날처럼 쾌적하게 컴퓨터를 사용할 수 있는 이유는 운영체제가 여러 개의 프로세스를 함께 돌리고 있기 때문!!이다.

 

모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해 줘야 실행이 될 수 있다.

그래서 프로그램을 실행하는 순간 파일은 컴퓨터 메모리에 올라가게 되고, 운영체제로부터 CPU를 할당받아 프로그램 코드를 실행시켜 우리가 서비스를 이용할 수 있게 되는 것이다.

 

프로그램 프로세스
어떤 작업을 하기 위해 실행할 수 있는 파일 실행되어 작업중인 컴퓨터 프로그램
파일이 저장 장칭에 있지만 메모리에는 올라가 있지 않은 정적인 상태 메모리에 적재되고 CPU 자원을 할당받아 프로그램이 실행되고 있는 상태
코드 덩어리 코드 덩어리를 실행한 것

 

3. 스레드는 프로세스의 한계를 극복하고자 탄생하게 되었다.

브라우저도 하나의 프로그램이고, 브라우저가 돌면서 하나의 프로세스가 진행되고 있다.

이 브라우저가 일을 하고 있을 때도 우리는 게임을 다운 받으며 웹서핑을 할 수 있어야 하고, 유튜브 영상의 데이터를 받아오면서 받아진 데이터로 영상을 실행할 수도 있어야 한다.

한 프로세스 내에서도 여러 갈래의 작업들이 동시에 진행이 될 필요가 있는 것이다.

 

그렇다고 동일한 프로그램을 여러 개의 프로세스로 만들게 되면, 그만큼 메모리를 차지하고 CPU에서 할당받는 자원이 중복되게 될 것이다.

그렇게 스레드가 등장했다.

 

스레드 : 하나의 프로세스 내에서 동시에 진행되는 작업의 갈래, 흐름의 단위

 

크롬도 하나의 프로그램이다.

크롬 브라우저가 실행되면 프로세스 하나가 생성이 된다.

크롬 브라우저 안에서 파일도 다운 받고, 온라인 쇼핑도 하면서 여러가지 작업들의 흐름이 동시에 진행된다.

 

4. 동시성

한 컴퓨터에 여러 프로그램을 띄워 놓으면 우리 눈에는 모든 프로그램이 다 동시에 수행되는 것처럼 보인다.

 

하지만 그렇다고 해서 프로그램이 정말 "동시에" 수행되는 것은 아니다.

CPU는 한 시점에 오직 하나의 명령문만 수행할 수 있다. 그래서 우리는 CPU가 아주 짧은 간격으로 번갈아가며 여러가지 일을 수행하도록 설계했다. 매우 자주, 매우 빠르게 Context Switching이 일어나도록 해서 사람 눈에는 여러가지 일을 동시에 처리하는 것처럼 보이도록 만든 것이다.

더보기

Context Switching이란?
여러 개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것

 

그래서 사실 컴퓨터가 어떤 것을 동시에 수행한다는 것은 정말로 여러 일을 한 시점에 처리한다는 것이 아니라, 그 일들이 동시에 수행되는 것처럼 보이도록 CPU 스케줄링을 수행한다는 것을 의미한다.

https://hi-claire.tistory.com/48

 

[운영체제] 1. CPU 스케줄링(개념, 알고리즘)

💡 CPU 스케쥴링(CPU Scheduling)이란? : OS가 CPU를 사용하는 프로세스들 사이의 우선순위를 관리하는 작업이다. 즉 한정된 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것이다. 1. 스케

hi-claire.tistory.com

 

5. 멀티 프로세스(Multi-Process)와 멀티 스레드(Multi-Thread)

멀티 프로세스(Multi-Process)

멀티 프로세스 : 메모리에 여러 프로세스가 동시에 로드되어 수행되는 것

멀티 프로세스는 운영체제에서 하나의 응용 프로그램에 대해 동시에 여러 개의 프로세스를 실행할 수 있게 하는 기술이다.

보통 하나의 프로그램 실행에 대해 하나의 프로세스가 메모리에 생성되지만, 부가적인 기능을 위해 여러 개의 프로세스를 생성하는 것이다.

 

웹 브라우저의 상단 탭이나 새 창이 가장 대표적이 예시 중 하나이다.

각 브라우저 탭은 같은 브라우저 프로그램 실행이지만, 각기 다른 사이트 실행을 행사하기 때문이다.

 

재밌는 실험을 하나 해볼 수 있는데,

여러 개의 탭을 띄운 뒤, 하나의 탭에서는 개발자 도구를 열어 while(1) {} 와 같은 무한 루프 코드를 실행해보자.

해당 탭은 먹통으로 아무 것도 할 수 없지만, 다른 탭에서는 정상적으로 브라우징이 되는 신기한 경험을 할 수 있다.

 

이는 탭마다 다른 프로세스로 동작하기 때문이다.

 

멀티 스레드(Multi-Thread)

멀티 스레드 : 하나의 프로세스 안에서 동시에 실행되는 흐름이 여러 개인 것

카카오톡에서 내가 메세지를 전송하는 동안 카카오톡은 중단되지 않고, 상대방 메세지가 도착하는 대로 바로 화면에 띄워준다.

내 메세지를 전송하는 기능, 새 메세지를 수신하는 기능, 화면에 메세지를 출력하는 기능이 모두 각각의 실행 흐름으로서 동시에 멀티스레드로 수행되고 있는 것이다.

 

6. 멀티 프로세스와 멀티 스레드의 차이점

멀티 프로세스는 웹 브라우저에서의 여러 탭이나 여러 창이다.

반면, 멀티 스레드는 웹 브라우저의 단일 탭 또는 창 내에서 브라우저 이벤트 루프, 네트워크 처리, I/O 및 기타 작업을 관리하고 처리하는 데 사용된다.

 

멀티 프로세스와 멀티 스레드의 장단점에 대해서 알아보자.

멀티 스레드

장점 단점
적은 메모리 공간 차지 동기화로 인한 성능 저하
효율적인 자원 활용 가능 하나의 스레드 장애로 전체 스레드가 종료될 위험 존재
Context Switching이 빠르다 데드락 (다른 프로세스가 점유된 자원을 기다리는 상황에서 발생하는 교착 상태)
응답 시간 단축 디버깅이 어렵다

 

멀티 프로세스

장점 단점
독립적인 메모리 공간 Context Switching Overhead
프로그램의 높은 안정성 자원 공유 비효율성
시스템 확장성 많은 메모리 공간 차지
  CPU 시간 차지

 

운영체제는 시스템의 자원을 효율적으로 관리하기 위해서 스레드를 사용한다.

멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.

또한, 프로세스 간의 통신보다 스레드 간의 통신 비용이 적으므로 작업들 간 통신의 부담이 줄어든다.

 

그렇다면 무조건 멀티 스레드가 좋은가?

그건 또 아니다.

스레드를 활용하면 자원의 효율성이 증가하지만, 스레드 간의 자원 공유는 전역 변수를 이용하므로 동기화 문제가 발생할 수 있기 때문에 주의가 필요하다.

 

결론!

두 방법은 동시에 여러 작업을 수행하는 점에서 동일하지만, 각각의 장단이 있으므로 적용하는 시스템에 따라 적합한 동작 방식을 선택하고 적용해야 한다!!!

 

 

[참고]

https://youtu.be/iks_Xb9DtTM?si=HuWxjpjCUWbQ-id1

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%E2%9A%94%EF%B8%8F-%EC%93%B0%EB%A0%88%EB%93%9C-%EC%B0%A8%EC%9D%B4

https://inpa.tistory.com/entry/%F0%9F%91%A9%E2%80%8D%F0%9F%92%BB-multi-process-multi-thread

반응형