• 실행중인 프로그램
• 프로세스 상태(모든 정보)를 문맥으로 가진 실행 흐름
• 프로그램은 수동적 / 프로세스는 능동적
• 프로그램은 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태
• 프로세스는 실행되고 있는 컴퓨터 프로그램
• 스레드는 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로
• Memory context: 코드, 데이터(전역변수), 스택(매개변수, 지역변수), 힙
• Hardware context: 레지스터 값들 CPU, I/O
• System context: 테이블 / OS커널이 관리하는 정보 / 시스템에서 부여한 정보들 / PCB, 오픈파일테이블
• Uniprogramming(옛날)
-한 번에 하나의 프로세스만 메모리에 저장
• Multiprogramming(메모리 관점)
-메모리에 여러 개의 프로세스
• Multiprocessing(CPU 관점)
-다중 처리. CPU코어가 2개 이상으로 여러 개가 동작.
-다중 처리를 위해 멀티 프로그래밍이 무조건적. (반대는 반드시 성립은 X)
• PCB(process control block)을 프로세스마다 할당
• 프로세스 관련 정보를 저장하는 자료구조 / 식별
• 커널 영역에 생성됨 / 프로세스 생성 시에 만들어지고 실행이 끝나면 폐기됨
PCB에 담기는 정보:
• 프로세스 상태
• 프로그램 카운터-다음에 실행할 명령의 위치 (임시보관)
• 레지스터 (임시보관)
• 프로세스 테이블-메인 메모리에 저장되어 있음
(실시간 업데이트는 X. 책상에서 벗어날 때 업데이트)


Queues 대기열
• Ready queue: 메인 메모리의 모든 프로세스 집합
- 돌아갈 수는 있는데 CPU 자리가 없는 경우
• Device queue(I/O 대기): 각각의 I/O장치 큐 관리
• Job queue: 시스템의 모든 프로세스 집합
상태 전환
• 다양한 대기열 간의 프로세스 이동
✔ Short-term scheduler(or CPU scheduler):
- 다음에 실행할 프로세스 선택 및 CPU 할당
- ready 큐 중 선택(OS 역할)
- 자주 호출됨. 빨라야 함
✔ Long-term scheduler(or job scheduler):
- ready큐에 어떤 프로세스를 가져올지 선택
- 드물게 호출됨. 느려질 수 있음
- 멀티 프로그래밍의 정도를 제어
• 프로세스의 두 가지 종류
- I/O bound process: 연산보다 I/O에 더 많은 시간 소요. 짧은 CPU burst
- CPU bound process: 계산에 많은 시간 소비. 긴 CPU burst
- CPU가 다른 프로세스로 전환할 때: 상태 저장 및 context switch (문맥을 CPU에)
- PCB에 표현된 프로세스의 문맥(context)
- 컨텍스트 전환 시간이 오버헤드. 전환하는 동안 시스템이 작업을 수행하지 않음
- 하드웨어 성능에 따라 시간이 달라짐