개발 CS지식 정리 - Process와 Thread의 차이

진형욱·2022년 11월 9일
0

개발면접공부

목록 보기
4/8
post-thumbnail

개발 cs지식 스터디를 하며 내가 학습한 부분을 정리하는 공간입니다.

운영체제

프로세스와 스레드의 차이점에 대한 질문의 의도 => 운영체제가 시스템의 자원을 어떤 단위로 할당하고, 프로세스와 스레드는 이 자원을 어떻게 사용하는가?에 대한 질문이다.

Process

프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어
CPU의 할당을 받을 수 있는것을 말한다.

운영체제로부터 자원(주소 공간, 파일, 메모리)을 할당받는 작업의 단위를 총칭하여 프로세스라고 한다.

프로세스 제어 블록(Process Control Block, PCB)

PCB는 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료구조이다.
운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성한다.

프로세스는 CPU를 할당받아 작업을 처리하다가 프로세스 전환이 발생하면 진행하던 작업을 저장하고
CPU를 반환해야 하는데, 이때 작업 진행 상황을 모두 PCB로 저장한다.
그리고 CPU를 할당받게 되면 PCB에 저장되어있던 내용을 불러와 이전에 종료됐던 시점부터 다시 시작한다.

Thread

프로세스가 할당받은 자원을 이용하는 실행의 단위이고, 프로세스 내에 여러개 생길 수 있다.
프로세스 내의 주소 공간이나 자원들은 같은 프로세스 내에 스레드끼리 공유한다.

어플리케이션 하나가 프로세스이고, 그 안에서 분기 처리가 스레드가 되는 셈이다.

하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고
자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩이라고 한다.

각각의 스레드는 독립적인 작업을 수행해야 하기 때문에 각자의 스택과 PC 레지스터 값을 갖고 있다.

스택을 스레드마다 독립적으로 할당하는 이유

스택은 함수 호출 시 전달되는 인자와 되돌아갈 주소값 및 함수 내에서 선언하는 변수 등을 저장하기 위해 사용되는 메모리 공간이다.
그러므로 스택 메모리 공간이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 뜻이고 곧 독립적인 실행 흐름이 추가되는것이다.
따라서 스레드의 정의에 따라 독립적인 실행 흐름을 추가하기 위한 최소 조건으로 독립된 스택을 할당한다.

참고자료 - Process, Thread 차이가 뭔가요?
https://brunch.co.kr/@babosamo/100

참고자료 - 프로세스와 스레드의 차이
https://brunch.co.kr/@kd4/3

profile
90% of my problems magically disappeared when I slept well, ate well and went on regular walks

0개의 댓글