+++ (참고)
프로그램(Program)
프로그램은 컴퓨터에서 실행할 수 있는 명령어들의 집합
일반적으로 소스 코드로 작성되며, 컴파일러나 인터프리터를 통해 실행 가능한 형태로 변환
예) 어떤 작업을 수행하는 소프트웨어 애플리케이션 또는 스크립트
프로그램은 저장 매체에 저장되어 있으며, 실행되기 전에는 정적인 상태프로세스(Process)
프로세스는 실행 중인 프로그램의 인스턴스(instance)
프로그램이 메모리에 적재되어 실행되면, 해당 프로그램은 프로세스로서 동작
각각의 프로세스는 운영체제에 의해 독립적으로 관리되며, 각자의 주소 공간, 레지스터, 스택 등을 가지고 있음프로세서(Processor)
프로세서는 컴퓨터 시스템에서 연산과 데이터 처리를 수행하는 하드웨어 장치
프로세서는 명령어를 해석하고 실행하여 프로그램의 연산을 처리하고 데이터를 조작
프로그램은 실행 가능한 명령어들의 집합, 프로세스는 실행 중인 프로그램의 인스턴스, 프로세서는 프로세스를 실행하고 명령어를 처리하는 하드웨어 장치
인스턴스(Instance)는 객체 지향 프로그래밍에서 사용되는 개념, 클래스(Class)를 기반으로 생성된 구체적인 객체를 의미. 클래스는 객체의 설계도이고, 이를 실제로 메모리에 할당하여 사용할 때 그것이 인스턴스
프로세스가 실행 중인 프로그램의 인스턴스라는 말은, 프로그램이 실행될 때 해당 프로그램의 복제본이 메모리에 로드되어 실제로 실행되는 상태~

모든 상황은 CPU는 1개인 상황을 가지고 설명
프로세스는 상태(state)가 변경되며 수행된다.
Running: CPU를 잡고 instruction을 수행중인 상태
Ready
- CPU를 기다리는 상태(메모리 등 다른 조건을 모두 만족하고)
Blocked(wait, sleep)
- CPU를 주어도 당장 instruction을 수행할 수 없는 상태
- Process 자신이 요청한 event(예: IO)가 즉시 만족되지 않아 이를 기다리는 상태
- 예) 디스크에서 file을 읽어와야 하는 경우
New: 프로세스가 생성중인 상태
Terminated: 수행(execution)이 끝난 상태
Suspended(stopped)
- 외부적인 이유로 프로세스의 수행이 정지된 상태
- 프로세스는 통째로 디스크에서 swap out된다.
- 예) 사용자가(사람이) 프로그램을 일시 정지시킨 경우(break key) → 사람이 다시 재개해야
- 시스템이 여러 이유로 프로세스를 잠시 중단시킴
(메모리에 너무 많은 프로세스가 올라와 있을 때) - 중기 스케줄러가 메모리를 빼앗는 상황
- blocked: 자신이 요청한 event가 만족되면 Ready 상태로 돌아갈 수 있다.
- Suspended: 외부에서 정지시켰기 때문에 외부에서 다시 resume해 주어야 Active한 상태가 될 수 있음.
- 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보
- 다음의 구성요소를 가진다.(구조체로 유지)
- OS가 관리상 사용하는 정보
- Process state(실행중/대기중/중지된 상태 등), Process ID(각 프로세스를 고유하게 식별하는 번호)
- scheduling information , priority - 우선순위 값
- CPU 수행 관련 하드웨어값 - 프로세스의 문맥 표시
- Program counter, registers
- 메모리 관련
- Code, data, stack의 위치 정보
- 파일 관련
- Open file descriptors 등
- 운영체제는 PCB를 통해 프로세스를 관리, 자원 관리 가능
-사진 출처: https://aktnfl.tistory.com/25
- Job queue <- ready, device queue 포함됨
- 현재 시스템 내에 있는 모든 프로세스의 집합, 메모리에 적재되지 않은 모든 프로세스들이 대기
- Ready queue - cpu를 할당받기 위해 기다림
- 현재 메모리 내에 있으면서 CPU를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device queues
- IO device의 처리를 기다리는 프로세스의 집합
- 각 IO 장치 마다 해당 장치를 사용하기 위해 대기 중인 프로세스들이 별도의 큐에 포함됨
프로세스들이 자원을 공정하게 이용할 수 있도록 자원의 할당을 관리
Long-term scheduler(장기 스케줄러 / job scheduler) ⇒ 메모리
Short-term scheduler(단기 스케줄러 / CPU scheduler) - 짧은 시간 단위
Medium-term scheduler(중기 스케줄러 / swapper) - 너무 많이 올라가있으면 쫓아낸다.