프로세스의 개념
프로세스(process)는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.
프로세스의 상태 (Process State)
프로세스는 상태(state)가 변경되며 수행된다.
Running
CPU를 잡고 instruction을 수행 중인 상태
Ready
CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고)
Blocked (wait, sleep)
CPU를 주어도 당장 instruction을 수행할 수 없는 상태
Process 자신이 요청한 event(예: I/O)가 즉시 만족되지 않아 이를 기다리는 상태
New
프로세스가 생성 중인 상태
Terminated
수행(execution)이 끝난 상태
Suspended (stopped)
외부적인 이유로 수행이 정지된 상태.
ex) 사용자가 프로그램을 일시 정지시킨 경우 (break key)
시스템이 여러 이유로 프로세스를 잠시 중단시킴 (메모리에 너무 많은 프로세스가 올라와 있을 때)
Process Control Block (PCB)
특정한 프로세스를 관리할 필요가 있는 정보를 포함하는 운영체제 커널의 자료구조이다.
(1) OS가 관리상 사용하는 정보
- Process state, Process ID
- scheduling information, priority
(2) CPU 수행 관련 하드웨어 값
- Program counter, registers
(3) 메모리 관련
- Code, data, stack의 위치 정보
(4) 파일 관련
- Open file descriptors...
문맥 교환 (Context Switch)
CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정이다.
CPU가 다른 프로세스에게 넘어갈 때 운영체제는 다음을 수행한다.
- CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장한다.
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어온다.
(1) 일반적으로 문맥 교환은 서로 다른 사용자 프로세스 간에 일어나는 일이다.
사용자가 system call을 했거나 외부로부터 interrupt가 들어왔다면, CPU 제어권은 kernel로 넘어간다.
(이 경우에는 다른 프로세스로 넘어가지 않아 문맥 교환이 발생하지 않는다.)
(2) timer interrupt, I/O system call 이 발생하면 다른 프로세스로 넘어가며 문맥 교환이 일어난다.
그에 따라 cache memory flush 작업을 수행하게 되기 때문에 시스템에 부하를 주게 된다.
프로세스 스케줄링 큐 (Process Scheduling Queue)
프로세스 스케줄링이란 수행 가능한 여러 프로세스들 중에서 하나의 프로세스를 선택하는 것이다.
Job Queue (작업 큐)
현재 시스템 내에 있는 모든 프로세스의 집합이다.
Ready Queue (준비 큐)
현재 메모리 내에 있으면서, CPU를 잡아서 실행되기를 기다리는 프로세스의 집합이다.
Device Queue (장치 큐)
I/O device의 처리를 기다리는 프로세스의 집합이다.
스케줄러 (Scheduler)
Long-term scheduler (= job scheduler, 장기 스케줄러)
- 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정
- 프로세스에 memory를 주는 문제
- degree of Multiprogramming을 제어
- time sharing system에는 보통 장기 스케줄러가 없음 (무조건 ready)
Short-term scheduler (= CPU scheduler, 단기 스케줄러)
- 어떤 프로세스를 다음 번에 running 시킬지 결정
- 프로세스에 CPU를 주는 문제
- 충분히 빨라야 함 (millisecond 단위)
Medium-Term Scheduler (= Swapper, 중기 스케줄러)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫒아냄
- 프로세스에게서 memory를 뺏는 문제
- degree of Multiprogramming을 제어
🙋♂️ 면접 예상 질문 ~.~
Q1. 프로그램과 프로세스의 차이를 설명하시오.
A1. 프로그램은 컴파일 코드, 변수, 문자열, 상수 등 정적 데이터를 가진 정적인 객체입니다.
프로세스는 스택, 힙 데이터와 메모리 구조, 레지스터 등 현재 관리하는 자원 정보를 가진
동적인 객체입니다.
Q2. PCB가 무엇인지 설명하시오.
A2. Process Control Block의 약자로, 프로세스에 대한 정보를 저장하고 있는 자료구조 단위입니다.
프로세스의 pid, 메모리 정보, 프로세스 상태 정보, cpu 스케줄링 정보 등을 담고 있습니다.
Q3. Context-Switiching이 무엇인지 설명하시오.
A3. 현재 실행되고 있는 프로세스의 상태를 저장하고 새로운 프로세스에 CPU를 넘겨주는 과정입니다.
일반적으로 timer interrupt나 I/O system call 때문에 다른 사용자 프로세스로 넘어가면서 발생합니다.
'Study in SSAFY > Computer Science' 카테고리의 다른 글
[운영체제] 파일 시스템 (0) | 2023.02.28 |
---|---|
[운영체제] 프로세스 동기화 (0) | 2023.02.06 |
[컴퓨터 구조] 범용 레지스터 구조 (0) | 2023.01.25 |
[컴퓨터 구조] 보수(Complement) (0) | 2023.01.17 |
[컴퓨터 구조] 데이터의 종류(Data Types) (0) | 2023.01.17 |