운영체제 아주 쉬운 세 가지 이야기
- 프로세스: 실행 중인 프로그램
- 프로그램: 디스크상 존재, 실행을 위한 명령어와 정적 데이터의 묶음
- 시분할:
- 하나의 프로세스를 샐행
- 얼마후 중단하고 다른 프로세스 실행
- 이 작업을 반복하며 하나(또는 소수)의 CPU로 여러개의 가상 CPU가 있는듯한 환상을 만들어냄
- 스케줄링 정책에 의해 뭘 실행할지 결정 됨
4.1 프로세스의 개념
프로세스: 아시겠지만 역시나 실행중인 프로그램
프로세스 구성요소를 이해하려면 하드웨어 상태를 이해해야 함
프로그램이 실행되는 동안 하드웨어 상태 읽기 / 갱신 가능
중요한 하드웨어 구성요소
- 메모리(주소 공간)
- 명령어는 메모리에 저장
- 실행프로그램이 읽고 쓰는 데이터 도 메모리에 저장
- 레지스터
- 프로그램카운터(PC, 명령어 포인터IP): 프로그램의 어느 명령어가 실행중인지 알려줌
- 스택포인터와 프레임 포인터: 함수의 변수와 리턴 주소를 저장하는 스택 관리
4.2 프로세스 API
OS가 반드시 API로 제공 해야 하는 몇몇 기능들
- 생성: 새로운 프로세스를 생성
- 제거: 프로세스를 강제로 제거
- 대기: 프로세스의 실행 중지를 기다림
- 각종 제어: 프로세스를 일시 정지 하거나 다시 시작하는 등의 기능 제공
- 상태: 프로세스 상태 정보를 얻어냄
4.3 프로세스 생성 : 좀 더 자세하게

프로그램 실행을 위해 OS가 하는 첫 작업은
프로그램 코드와 정적 데이터(스테틱 데이터, 초기값을 가지는 변수 등)를 메모리, 프로세스의 주소 공간에 탑재(load)
- 프로그램은 디스크 또는 플래시 기반 SSD에 실행 파일 식으로 존재
코드, 정적 데이터 메모리 탑재 후 OS가 하는 일
4.4 프로세스 상태

실행: 프로세스가 프로세서에서 실행중(명령어를 실행중)
준비: 프로세스 실행 준비는 되었지만 OS가 다른 프로세스 실행중 등의 이유로 대기중
대기: 프로세스가 다른 사건을 기다리는 동안 프로세스의 수행을 중단시키는 연산(디스크 입출력 요청 등)
4.5 자료 구조
OS도 일종의 프로그램
다른 프로그램 처럼 다양한 정보를 유지하기위해 자료구조 갖고있음
- 프로세스 리스트: 프로세스 상태 파악하기 위한 리스트
- 준비 상태 프로세스를 위함
- 실행중인 프로세스를 명시하기 위한 부가적 자료구조도 유지
- 레지스터 문맥: 프로세스 중단 시 해당 프로세스의 레지스터 값 저장
- 이 레지스터 값을 복원해 OS는 프로세스 실행 재개(문맥교환)