티스토리 뷰
프로세스 정의
- 실행 중인 프로그램(program in execution)
- CPU를 할당하는 대상(dispatchable objects of CPU)
- 시스템 내부에서의 작업 단위 (unit of works in system)
- PCB에 존재하는 개체(entity of PCB)
- 하나의 스래드(thread)로 구성된 태스크(task)
- 비동기적(asynchronous) & 독립적이다.
프로세스 상태
- 준비(ready) : CPU 할당을 기다리고 있는 상태
- 실행(running) : CPU가 할당된 상태
- 대기(waiting) : 요청된 사건(ex: 입출력 사건) 발생이 처리되기를 기다리고 있는 상태
ex: C언어 프로그램 main() 함수 안에서 scanf() 함수를 만났을 때, 실행상태에서 대기상태로 변경되어 마우스 입력을 기다림. 마우스 인터럽트 발생 시 대기상태에서 준비상태로 변경.
* CPU 할당시간(time quantum): 시분할(time-sharing) 시스템을 위하여 프로세스당 할당된 CPU 사용 시간.
프로세스 주소 영역
- 코드(code) : 프로그램의 코드(명령어)가 저장된 영역.
- 데이터(data) : 프로그램의 데이터가 저장된 영역.
- 스택(stack) : 프로그램이 실행되는 과정에서 일시적인 데이터(ex: 함수호출 반환주소)를 저장하기 위한 영역.
* 운영체제에는 코드와 데이터 영역만 존재하며 스택 영역이 없다.
* 프로세스가 필요로 하는 스택 영역의 크기는 예측할 수 없다.
* 프로세스마다 CPU가 필요하기 때문에 운영체제는 CPU를 프로세스에게 할당한다. 따라서 프로세스는 "CPU를 할당하는 대상" 이라고 할 수 있다.
프로세스 제어블록(PCB)
- 프로세스 관리에 필요한 정보들을 보관하기 위한 운영체제 내부의 자료구조.
- 프로세스마다 PCB가 필요하므로 운영체제는 프로세스를 생성할 때 PCB를 할당한다. 즉, 프로세스는 'PCB에 존재하는 개체'라고 할 수 있다.
- 프로세스 식별자(PID: Process Identification), 프로세스 상태, 프로세스 스케줄링을 위한 우선순위, 프로세스가 적재된 메모리 주소공간, CPU 레지스터 값, 부모 프로세스 식별자(PPID), 자식 프로세스 식별자(CPID) 등 아주 많은 정보를 저장.
프로세스 문맥 교환 (Context Switch)
: 현재 실행 중인 프로세스의 정보를 PCB에 저장하고, 다른 프로세스의 정보를 PCB로부터 복구시키는 작업
프로세스 생성 및 종료
시스템 호출(system call)에 의해 생성 및 종료
- 생성: PCB 엔트리를 할당하고 PID 번호를 부여하고 프로세스를 위한 메모리 공간을 확보한다. PCB 자료구조의 모든 정보를 초기화한다.
- 종료: 할당된 PCB 엔트리를 삭제한다.
'cs > operating system' 카테고리의 다른 글
[운영체제/OS] 프로세스 스케줄링 (선점/비선점) (0) | 2021.03.28 |
---|---|
[운영체제/OS] 스래드 정의, 단일/다중 스래딩, 프로세스와 비교, 스래드 생성 (0) | 2021.03.26 |
[운영체제/OS] 운영체제 진입점(Entry Points) (0) | 2021.03.14 |
[운영체제/OS] 운영체제 기능 (0) | 2021.03.14 |
[운영체제/OS] 다중 프로그래밍 기법 (0) | 2021.03.14 |