CS 정리

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

승헌 2022. 6. 13. 18:44

1. 프로세스(process)란? 

프로세스(process) : 디스크로부터 메모리(RAM)에 적재되어 CPU의 할당을 받을 수 있는 인스턴스화 된 프로그램

프로세스가 프로그램의 인스턴스라면 운영체제는 이 프로세스들을 관리하는 스케줄러의 역할을 한다. 이 때 운영체제는 PCB라는 자료구조를 사용한다.

 

PCB(Process Control Block)

운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성한다. 프로세스는 CPU를 할당받아 작업을 처리하다가도 프로세스 전환이 발생하면 진행하던 작업을 저장하고 CPU를 반환해야 하는데(Context Switching), 이때 작업의 진행 상황을 모두 PCB 에 저장하게 된다. 그리고 다시 CPU를 할당받을 때 저장했던 내용을 불러와 이전에 종료됐던 시점부터 다시 작업을 수행할 수 있게 된다.

PCB에는 프로세스의 식별자(PID), 상태, 다음 실행할 명령어의 주소(Program Counter), 스케줄링 정보 등을 저장한다.

 

프로세스의 구조

프로세스의 구조는 다음과 같다.

프로세스의 구조. 각자 고유의 영역을 나눠가진다.

  • Code영역

실행할 프로그램의 코드나 명령어들이 기계어 형태로 저장되는 영역이다. CPU는 코드영역에 저장된 명령어들을 하나씩 처리한다.

  • Data영역

코드에서 선언한 전역 변수와 정적 변수가 저장되는 영역이다. 프로그램이 실행되면서 할당되고 종료되면서 소멸된다.

  • Stack영역

함수 안에서 선언된 지역변수, 매개변수, 리턴값등이 저장된다. 함수 호출시 기록되고 종료되면 제거된다. LIFO(Last In First Out)으로 동작한다.

  • Heap영역

관리가 가능한 데이터 이외의 다른 형태의 데이터를 관리하기 위한 자유 공간(Free Space)이다. 프로세스 실행 중 동적 메모리 할당을 하면 이 영역에 할당된다.

 

2. 스레드(thread)란?

스레드(thread) : 프로세스의 실행 단위. 한 프로세스 내에서 주소 공간이나 자원을 공유할 수 있다.

프로세스의 구조

스레드의 구조. 스택 이외의 영역을 공유한다.

각 스레드는 고유의 스택영역을 가지기 때문에 독립적인 함수 호출, 즉 독립적인 실행 흐름이 가능하다. 따라서 각 스레드마다 독립적인 PC 레지스터를 할당하여 멀티스레딩이 가능하다.

 

3. 멀티 프로세스 vs 멀티 스레드

  멀티프로세스 멀티스레드
장점 1. 서로 독립적으로 실행되므로 하나의 프로세스가 종료되어도 다른 프로세스에 영향을 끼치지 않는다. 1. 스택 이외의 영역을 공유하므로 메모리 공간 차지가 적다.

2. 캐시 메모리를 비울 필요가 없어 컨텍스트 스위칭이 빠르다.
단점 1. 메모리 공간 차지가 크다. 1. 동기화 문제

 

4. 참고자료

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS