- 프로세스의 개념
저장장치에 저장되어있는 정적인 상태의 프로그램을 실행을 위해 메모리에 올려놓은 동작인 상테
- 프로그램에서 프로세스의 전환
운영체제는 프로그램을 메모리의 적당한 위치로 가져온 뒤 작업 지시서인 프로세스 제어 플록(Process Control Block, PCB) 를 만듦
운영체제로부터 PCB 를 받았다는 의미
- 프로세스 제어 블록
프로세스를 처리하는데 필요한 다양한 정보
운영체제가 해당 프로세스를 위해 관리하는 데이터 구조이기 때문에 운영체제 영역에 만들어짐
프로세스가 종료되면 메모리에서 삭제되는 동시에 제어 블록도 폐기됨
- 운영체제 프로세스
운영체제도 프로세스 이기 때문에 프로세스 형태로 실행됨
부트스트랩이 많은 운영체제 관련 프로세스 실행시킴
컴퓨터에는 사용자 프로세스와 커널 프로세스가 섞여서 실행됨
- 프로세스의 상태
운영체제에서 여러 이유로 프로세스 상태가 변화됨
- 일괄 작업 시스템
프로세스 생성 후 CPU 얻어 실행 후 작업 마치면 종료됨.
생성, 실행, 완료 상태만 있음
- 대화형(시분할) 시스템
- 생성 상태
프로그램이 메모리에 올라오고 운영체제로부터 PCB 를 할당한 상태
생성된 프로세스는 바로 실행되지 않고 준비상태에서 기다리며 PCB 도 같이 준비 상태로 옮겨짐
- 준비 상태
실행 대기 중인 모든 프로세스가 자기 순서를 기다리는 상태
PCB 는 준비 큐 에서 기다리며 CPU 스케줄러에 의해 관리됨
다수의 준비 큐가 운영됨
- 실행 상태
프로세스가 CPU 를 할당받아 실행되는 상태
실행 상태에 들어가는 프로세스는 CPU 의 개수 만큼
- 완료 상태
프로세스가 종료되는 상태
사용하던 메모리를 삭제하고 PCB 폐기
정상 종료는 exit() 처리
비정상적으로 종료 시 코어 덤프
- 코어 덤프
프로세스가 비정상적으로 종료 시 디버깅하기 위해 강제 종료 직전의 메모리 상태를 저장장치로 옮기는 작업
- 대기 상태
우선순위 별로 따로 큐로 운영됨
실행 상태에 있는 프로세스가 입출력 요청시 입출려깅 완료될 때 까지 기다리는 상태
입출력 완료 시 인터럽트 발생하고 대기 상태에 있는 해당 프로세스의 인터럽트로 깨어날 프로세스를 찾아 준비상태로 옮김
인터럽트는 입출력 외에도 있음
- wakeup(PID)
인터럽트의 프로세스를 찾아 PCB 를 준비상태로 이동시키는 것
- 휴식 상태
프로세스가 일시적으로 쉬는 상태
메모리에 그대로 있고 PCB 도 유지됨
- 보류 상태
프로세스가 메모리에서 잠시 쫒겨난 상태
여러 이유로 인해 보류 상태로 됨
메모리 밖으로 쫓겨나 스왑 영역에 보관됨
- 스왑 영역
메모리에서 쫓겨난 데이터가 임시로 보관되는 곳
- 보류 대기 상태
대기 상태에서 옮겨진 보류
- 보류 준비 상태
준비 상태에서 보류된 상태
입출력 완료 시 활성 상태가 아닌 보류 준비 상태로 옮겨짐
- CPU 스케줄러
PCB 를 관리함
- dispatch
큐에 있는 어떤 PCB 를 실행 상태로 보낼지 결정하는 작업
프로세스 우선순위를 기준으로 작업함
- 타임아웃
실행 상태에 있는 프로세스는 자신에게 주어진 시간인 타음 슬라이스 동안만 작업 가능하며 그 시간 다 사용 시 timeout(PID) 가 실행됨
작업 완료/미완료 시 exit(PID)/timeout(PID) 로 프로세스 종료/준비 상태로 옮김
- block
실행 상태에 있는 프로세스가 입출력 관리자에게 입출력 요청하고 block(PID) 실행