프로세스를 생성한다 = 보조기억 장치에 저장된 프로그램을 메모리에 적재하고 실행한다.
데몬
, 윈도우 운영체제에서는 서비스
라고 부른다.운영체제마다 차이가 있지만 대표적인 정보는 다음과 같다.
- **프로세스 ID**
특정 프로세스를 식별하기 위해 부여하는 고유한 번호
- **레지스터 값**
해당 프로세스가 실행하며 사용했던 프로그램 카운터를 비롯한 레지스터 값들
프로세스는 이전까지 진행했던 작업들을 그대로 이어 실행하기 위해 자신의 실행 차례가 돌아오면 이전까지 사용했던 레지스터의 중간값들을 모두 복원한다.
- **Proram Counter**: 해당 프로세스가 이어서 실행해야 할 명령의 주소를 가리키는 카운터이다.
- **프로세스 상태**
프로세스의 상태 정보
- **CPU 스케줄링 정보**
프로세스가 언제, 어떤 순서로 CPU를 할당받을지에 대한 정보
- **메모리 관련 정보**
프로세스마다 메모리에 저장된 위치가 다르다. 그래서 PCB에는 프로세스가 어느 주소에 저장되어 있는지에 대한 정보가 있어야 한다. 프로세스의 주소를 알기 위해 페이지 테이블 정보를 담고 있다.
- **사용한 파일과 입출력 장치 목록**
프로세스가 실행 과정에서 특정 입출력 장치나 파일을 사용하면 PCB에 해당 내용이 명시된다.
문맥: 하나의 프로세스 수행을 재개하기 위해 기억해야 할 정보. 하나의 프로세스 문맥은 해당 프로세스의 PCB에 표현되어 있다.
문맥 교환: 기존 프로세스의 문맥을 PCB에 백업하고, 새로운 프로세스를 실행하기 위해 문맥을 PCB로부터 복구하여 새로운 프로세스를 실행하는 것이다.
프로세스가 CPU를 사용할 수 있는 시간이 다 되거나 예기치 못한 상황이 발생하여 인터럽트가 발생하면 문맥 교환이 발생한다.
문맥 교환이 자주 발생하면 우리 눈에는 프로세스들이 동시에 실행되는 것처럼 보인다. 문맥 교환을 너무 자주 하면 오버헤드가 발생할 수 있기 때문에 문맥 교환이 자주 일어난다고 해서 반드시 좋은 것은 아니다.
동적 할당 영역
: 데이터를 일시적으로 저장하는 공간. 매개 변수, 지역 변수가 대표적. 일시적으로 저장할 데이터는 스택 영역에 PUSH 되고, 더 이상 필요하지 않은 데이터는 POP 됨으로써 스택 영역에서 사라진다.동적 할당 영역
: 프로그래머가 직접 할당할 수 있는 저장 공간. 메모리 공간을 반환하지 않는다면 할당한 공간이 메모리 내에 계속 남아 메모리 낭비를 초래하는 메모리 누수
가 발생할 수 있다.정적 할당 영역
: 잠깐 썼다가 없앨 데이터가 아닌 프로그램이 실행되는 동안 유지할 데이터가 저장되는 공간. 대표적으로 전역변수가 있다.정적 할당 영역
: 텍스트 영역이라고도 불리며 기계어로 이루어진 명령어가 저장된다. CPU가 실행할 명령어가 담겨 있기 때문에 쓰기가 금지되어 있다. 읽기 전용 공간이다.> `동적 할당 영역`: 프로세스 실행 과정에서 크기가 변할 수 있는 영역. 힙 영역은 메모리의 낮은 주소에서 높은 주소로 할당되고, 스택 영역은 높은 주소에서 낮은 주소로 할당된다. 그래야만 힙 영역과 스택 영역에 데이터가 쌓여도 새롭게 할당되는 주소가 겹치지 않는다.
>
> `정적 할당 영역`: 프로세스 실행 과정에서 크기가 변하지 않는 영역.
>
프로세스는 모두 저마다의 상태가 있으며 운영체제는 프로세스의 상태를 PCB에 기록하여 관리
운영체제는 프로세스의 상태를 PCB를 통해 인식하고 관리. 프로세스의 상태를 표현하는 방식은 운영체제마다 차이가 있지만 대표적인 상태는 다음과 같다.
디스패치(dispatch)
라고 한다.[참고자료]
혼자 공부하는 컴퓨터구조+운영체제(저자: 강민철, 출판사: 한빛미디어)