1. 프로세스란?
- 프로그램을 구동하여 프로그램 자체와 프로그램의 상태가 메모리 상에서 실행되는 작업 단위
- 컴퓨터에서 연속적으로 실행되고 있는 프로그램
- 사용 중인 파일, 데이터, 프로세서 상태, 메모리 영역 주소 공간, 스레드 정보 전역 데이터가 저장된 메모리 부분 등 수 많은 자원을 포함하는 개념
- 스케줄링의 대상이 되는 작업(task)
2. 프로세스의 메모리 영역
Code(Text) : 실행되는 코드
Data : 전역변수
Heap : 프로그램 런타임 중 동적 할당되는 메모리
Stack : 함수 실행 시 임시적으로 사용되는 저장공간 (지역변수, 매개변수)
3. 프로세스의 상태
커널 내에는 준비 큐, 대기 큐, 실행 큐 등의 자료구조가 있으며 커널은 이것들을 이용해 프로세스 상태를 관리한다.
- 생성(new/create) : fork()를 받아 프로세스가 생성되는 중이다.
- 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.
- 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.
- 대기(waiting / block) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료(I/O completion), 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.
- 종료(terminated) : 프로세스의 실행이 종료되었다.
4. 프로세스의 상태전이
프로세스의 상태전이가 일어나면 각각의 프로세스의 PCB를 linked list로 ready queue / waiting queue로 옮기며 스케줄링이 진행된다.
하나의 프로그램이 실행되면 그 프로그램에 대응되는 프로세스가 생성되어 준비 리스트의 끝에 들어간다. 준비 리스트 상의 다른 프로세스들이 CPU를 할당받아 준비 리스트를 떠나면, 그 프로세스는 점차 준비 리스트의 앞으로 나가게 되고 언젠가 CPU를 사용할 수 있게 된다.
a. 디스패치(dispatch)
준비 리스트의 맨 앞에 있던 프로세스가 CPU를 점유하게 되는 것, 즉 준비 상태에서 실행 상태로 바뀌는 것을 디스패치라고 하며 다음과 같이 표시한다.dispatch (processname) : ready → running
b. 보류(block)
실행 상태의 프로세스가 허가된 시간을 다 쓰기 전에 입출력 동작을 필요로 하는 경우 프로세스는 CPU를 스스로 반납하고 보류 상태로 넘어 간다. 이것을 보류라고 하며 다음과 같이 표시한다.block (processname) : running → blocked
c. 깨움(wakeup)
입출력 작업 종료 등 기다리던 사건이 일어났을 때 보류 상태에서 준비 상태로 넘어가는 과정을 깨움이라고 하며 다음과 같이 표시한다.wakeup (processname) : blocked → ready
d. 시간제한(timeout)
운영체제는 프로세스가 프로세서를 계속 독점해서 사용하지 못하게 하기 위해 clock interrupt를 두어서 프로세스가 일정 시간 동안만 (시분할 시스템의 time slice) 프로세서를 점유할 수 있게 한다timeout(processname) : running -> ready
참고용어
- 프로그램: 하드 디스크 등의 저장 공간에 저장되어 있는 실행 코드
- 커널: 운영체제 프로그램 중에서 가장 핵심적인 부분, 기능을 묶은 것
- 프로세서:컴퓨터 운영을 위해 기본적인 명령어들을 처리하고 반응하기 위한 논리 회로, CPU라는 용어를 대체
- 스레드: 어떤 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위, 프로세스가 세분화된 작은 일들
참고문헌
'Computer Science > 운영체제' 카테고리의 다른 글
논리게이트 AND OR NAND XOR NOR XNOR NOT buffer 정리 (0) | 2021.05.30 |
---|---|
멀티프로세싱, 멀티프로그래밍,멀티태스킹,멀티스레딩 (0) | 2021.05.29 |
운영체제란? (0) | 2021.05.29 |
프로세스와 스레드의 차이 (0) | 2021.05.29 |
인터럽트(Interrupt)의 종류와 처리과정 (0) | 2021.05.26 |
댓글