CS | 프로세스와 스레드

Wonhee 📘·2022년 5월 21일
0

CS

목록 보기
2/2
post-thumbnail

개발 하면서 구글링을 하다보면 프로세스와 스레드 대한 얘기가 나와서
이것이 무엇인지 알아보기위해 포스팅하려고합니다.

프로세스와 스레드란?

  • 프로세스 : OS에서 실행중인 하나의 애플리케이션,
    프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
    기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다
  • 사용자가 애플리케이션을 실행하면 OS로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 , 이것을 프로세스 라고
    부른다.
  • 하나의 애플리케이션은 다중 프로세스를 만들기도 한다.
    ex) Chrome 브라우저를 2개실행 : 두개의 Chrome 프로세스가 생성된 것.

멀티 태스킹 : 2가지 이상의 작업을 동시에 처리하는 것.

OS는 멀티 태스킹을 할 수 있도록 CPU 및 메모리 자원을 프로세스마다 적절히 할당해주고 병렬로 실행시킨다.
ex) 워드로 문서 작업 + 윈도우 미디어 플레이어로 음악 듣기

Ctrl + Alt + Del 키를 눌러 작업관리자를 실행하면 아래와같은 화면을 볼 수 있습니다.
아래에서 프로세스탭에는 실행되고있는 애플리케이션이 있고, 그 옆에는 해당 애플리케이션이 할당받은 CPU와 메모리를 확인할 수 있다.

멀티 태스킹과 멀티 프로세스의 차이

멀티 태스킹이 꼭 멀티 프로세스를 뜻하는 것은 아니다.
한 프로세스 내에서도 멀티 태스킹을 할 수 있도록 만들어진 애플리케이션도 있다.
(미디어 플레이어, 메신저 등)
ex) 메신저 : 채팅 기능을 제공하면서 동시에 파일 전송 기능을 수행.
how? 🤔 => 멀티 스레드를 이용!

스레드 : 하나의 코드 실행 흐름을 의미한다.
한 프로세스 내에 스레드가 2개라면, 2개의 코드 실행 흐름이 생긴다는 의미.

멀티 프로세스는 애플리케이션 단위의 멀티 태스킹
멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹

멀티 프로세스들은 OS에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 서로 독립적이다. 따라서 하나의 프로세스에서 오류가 발생해도 다른 프로세스에게 영향을 미치지 않는다.
하지만 멀티스레드는 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있어 다른 스레드에게 영향을 미치게 된다.

ex) 멀티 프로세스인 워드와 액셀을 동시에 사용하던 중, 워드에 오류가 생겨서 먹통이 되더라도 엑셀은 여전히 사용 가능하다.
ex2) 멀티 스레드로 동작하는 메신저의 경우, 파일을 전송하는 스레드에서 예외가 발생하면 메신저 프로세스 자체가 종료되므로 채팅 스레드도 같이 종료된다
( 예외처리 중요 !! )

📃 Context Switching이 무엇인가?

프로세스와 스레드를 좀더 깊게 공부하다보면 Context Switching 라는 단어가 보이는데 Context Switching란, 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다.

즉 CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는데 이과정을 Context Switching 이라고 한다.

profile
오늘 걷지 않으면 내일은 뛰어야한다 🚶‍♂️ 🏃‍♀️

0개의 댓글