Whaeun Story

프로세스와 스레드 본문

공부/CS 스터디

프로세스와 스레드

whaeun 2022. 10. 30. 23:05

1. 프로세스

컴퓨터에서 실행중인 프로그램을 의미하며 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 의미한다. 운영체제로부터 Code, Data, Stack, Heap을 할당받은 상태이다. 프로세스는 프로그램 코드 및 관련 데이터, 그리고 프로세스 제어블록으로 구성된다고 볼 수 있다.

 

1.1 프로세스 제어블록 (PCB)

프로세스 제어블록은 Process Control Block을 줄여 PCB라고 불리며 프로세스에 대한 정보를 저장하고 있는 자료구조 단위이다. 프로세스 제어블록은 운영체제가 다수의 프로세스를 지원하고 멀티프로세싱을 제공할 수 있게 해주는 주요 도구이며 수행 프로세스를 인터럽트한 후 나중에 그 인터럽트가 발생되지 않은 것처럼 프로세스 수행을 재개할 수 있도록 충분한 정보를 유지하는 역할을 한다. PCB에 대한 작업은 빈번하게 일어나기 때문에 기본적으로 메모리에 저장된다.

PCB에는 일반적으로 다음과 같은 정보를 저장한다.

  • 식별자: 프로세스의 고유한 정수 번호이며 다른 프로세스와의 구별을 위해 사용된다.
  • 상태: 프로세스의 상태를 의미하며 준비, 실행, 대기, 보류 등의 상태를 나타낸다.
  • 우선순위: 스케줄링할 때 사용되는 우선순위로 다른 프로세스들에 대한 상대적인 우선순위 수준을 나타낸다.
  • 프로그램 카운터: 다음에 실행될 명령어 주소 값을 가지고 있다.
  • 매모리 포인터: 프로세스와 연계된 프로그램 코드 및 데이터, 다른 프로세스들과 함께 공유되는 메모리 블록들에 대한 포인터를 포함한다.
  • 문맥 데이터: 문맥교환 시에 CPU 레지스터 값들을 저장하는 영역이다.
  • 입출력 정보: 미해결 입출력 요청, 프로세스에 할당된 입출력 장치, 프로세스에 의해 사용 중인 파일들의 리스트 등을 포함한다.
  • 어카운팅 정보: 사용된 처리기 시간 및 클록 시간, 시간 제한, 계쩡 번호 등을 포함할 수 있다.

 

1.2. 문맥 교환

CPU 스케줄러가 프로세스를 전환하는 것을 의미한다. CPU는 여러 프로세스를 번갈아 가며 실행하게 되는데 레지스터에 저장되어 있던 PCB를 이용하여 프로세스의 정보를 교환하는 것을 이야기한다.

 

2. 스레드

스케줄링의 단위를 의미한다. 스레드들은 프로세스가 가지는 자원을 공유하면서 각자는 프로그램 카운터로 표현되는 현재의 실행 위치와 스택, 레지스터 값들을 따로 가지게 된다.

2.1 스레드의 장점

  1. 프로세스를 생성하는 시간보다, 기존 프로세스 내에서 새로운 쓰레드를 생성하는 시간이 더 짧으며 프로세스 종료시간 보다 쓰레드 종료시간이 더 짧다. 교환시에도 프로세스간 교환보다 같은 프로세스에 있는 두 쓰레드 간 교환이 더 효율적이므로 스레드를 사용하게 될 경우, 스레드의 생성, 삭제, 스위칭에 소요되는 시간과 비용이 프로세스 단위로 이루어질 때보다 빠르고 저렴하게 이루어진다.
  2. 프로세스 간의 통신에서는 커널의 개입을 필요로 하지만, 한 프로세스 내의 스레드 간 통신은 메모리와 파일을 공유하고 있기 때문에 커널의 개입이 필요없다.

 

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

스택 영역에는 함수 호출 시 전달되는 인자, 복귀 주소 값, 함수 내에서 사용되는 지역 변수 등을 저장하고 있다. 때문에 Stack 영역을 독립적으로 두어야 독립적인 함수 호출, 실행 흐름 추가가 가능해진다.

 

📚 참고 자료 📚 

'공부 > CS 스터디' 카테고리의 다른 글

CPU 스케줄러  (0) 2022.11.04
스케줄러  (0) 2022.11.04
멀티 스레드와 멀티 프로세스  (1) 2022.10.31
웹 통신의 큰 흐름  (4) 2022.10.31
DNS Round Robin  (0) 2022.10.31