- 프로세스(process)란 실행중에 있는 프로그램을 의미한다.
[운영체제로부터 자원을 할당 받은 작업의 단위]- 스케줄링의 대상이 되는 작업(task)과 같은 의미
- 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고있고, 실제로는 쓰레드 단위로 스케줄링을한다.
- 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가게 된다. 이 순간부터 프로세스라 불린다.
아~ 프로그램이 실행되지 않으면 프로세스라고 할수없네
메모리 할당과 그 순간에 바이너리 코드가 올라갈때 프로세스라하는군 기억 해두자
- Code 영역: 프로그램을 실행시키는 실행 파일 내의 명령어 == 소스코드가 올라간다고 생각하자
- Data 영역 : 전역변수, static 변수의 할당
- Heap 영역 : 동적할당을 위한 메모리 영역 == mallo& free, new, delete
- Stack 영역 : 지역변수, 함수 호출 시 전달되는 인자(파라미터)를 위한 메모리 영역
- 생성 (new) : 프로세스 생성 상태
- 실행 (running) : 프로세스가 CPU에 할당되어 실행 중인 상태
- 준비 (ready) : 프로세스가 CPU에 할당되기를 기다리는 상태
- 대기 (waiting) : 보류(Block)라고도 하며, 프로세스가 입출력이라 이벤트를 기다리는 상태
- 종료 (terminated) : 프로세스 상태
아... 상태변화는 알겠는데.. 저 검은색은 상태 전이라고 하는데... 저건뭘까..?
- 승인 (Admitted) : 프로세스 생성이 가능하여 승인됨.
- 스케줄러 디스패치 (Scheduler Dispatch) : 준비 상태에 있 는 프로세스 중 하나를 선택하여 실행시키는 것
- 인터럽트 (Interrupt) : 예외, 입출력, 이벤트 등이 발생하여 현재 실행 중인 준비 상태로 바꾸고, 해당 작업을 먼저 처리하는 것
- 입출력 또는 이벤트 대기 (I/O or Event wait) : 실행 중인 프로세스가 입출력이나 이벤트를 처리해야하는 경우, 입출력/이벤트가 모두 끝날때까지 대기 상태로 만드는 것.
- 입출력 또는 이벤트 완료 (I/O or Event Completion) : 입출력/이벤트가 끝난 프로세스를 준비 상태로 전환하여 스케줄러에의해 선택될 수있도록 만드는것