- 분류: 운영체제
- 주제: 프로세스와 스레드, Paging과 Segmentation
- 날짜: 23/01/20
프로세스
- 실행 중인 프로그램
- 메모리에 적재되어 CPU의 할당을 받을 수 있는 것
- 운영체제로부터 주소 공간, 파일, 메모리 등의 시스템 자원을 할당받는 작업의 단위
- 함수의 매개변수, 복귀주소, 로컬변수와 같은 임시 자료를 갖는 프로세스 스택과 전역변수들을 수록하는 데이터 섹션, 그리고 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다.
- 프로세스는 최소 하나의 스레드(메인 스레드)를 보유하고 있음
- 프로세스 간에는 메모리 등의 자원을 공유하지 않음 (독립적으로 자기만의 영역을 가지고 있음)
- 프로세스 제어 블록(PCB): 특정 프로세스에 대한 중요 정보를 저장하고 있는 운영체제의 자료구조
- 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성함.
- 프로세스 전환 발생 시 진행하던 작업을 저장하고 CPU를 반환해야 하는데, 작업의 진행 상황을 전부 PCB에 저장하여 다시 CPU를 할당받게 되면 PCB에 저장되어 있던 내용을 불러와 이전 종료 시점부터 다시 작업을 수행함.
- 멀티 프로세스: 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것
스레드
- 프로세스의 실행 단위
- 한 프로세스 내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소 공간이나 자원을 공유할 수 있다.
- 스레드 ID, 프로그램 카운터, 레지스터 집합, 그리고 스택으로 구성된다.
- 하나의 프로세스가 여러 개의 스레드를 가질 수 있고, 스레드들은 부모 프로세스의 자원을 공유함 (같은 메모리에 접근 o)
- 한 프로세스에서 여러 스레드가 자원을 공유하기 때문에 다른 스레드에도 영향을 미침