지난 포스팅에 이어 프로세스 관리에 대해 공부한 내용을 적어보고자 한다.
1. 인터럽트
인터럽트란 외부에서 발생한 예상치 못한 이벤트이다. 나를 프로세서, 운영체제 공부를 프로세스라고 가정해보자.
도서관에서 나는 운영체제 공부를 열심히 하고있다. 갑자기 친구(인터럽트) 가 찾아와 내게 아는 척한다. 나는 운영체제 공부를 멈추고 해당 페이지에 펜을 올려놓은 뒤 친구를 쳐다본다. 친구는 내게 네트워크 스터디(새로운 프로세스) 를 하러 가자고 한다. 나는 공부하고 있던 운영체제 책의 100p를 접어놓고 지난 스터디에 이어 네트워크 4강을 함께 공부하러 떠난다. 시간이 흘러 다시 자리에 앉아 100p부터 운영체제 공부를 시작한다.
위 과정을 인터럽트가 발생, 처리되는 과정이라고 할 수 있다. 프로세스는 인터럽트를 받을 때, 커널에 프로세스를 PCB 형태로 저장해둔다. 그리고 커널에서 인터럽트 핸들링을 진행한다. 이 인터럽트를 무시하고 지나갈지, 인터럽트에 따라 다른 과정을 진행할지 정한뒤 그에 알맞게 서비스를 진행한다. 그리고 다른 프로세스가 프로세서에 들어와 작동한다.
인터럽트의 종류는 아래와 같다.
- I/O 인터럽트 - 입력, 클릭
- Clock 인터럽트 - CPU
- Machine check 인터럽트 - 하드웨어
- Inter-process 인터럽트 - 다른 프로세스
2. Context Switching
Context란 프로세스와 관련 정보들의 집합이다. 작동중인 프로세스는 CPU 내 레지스터에 보관되고, 그렇지 않은 프로세스는 main memory에 저장되어 있다.
Context Switching을 위해 몇가지 알아둬야 할 개념이 있다.
1. Context Saving
현재 진행되고 있는 프로세스의 register context를 메모리에 PCB 형태로 저장한다.
2. Context restoring
메모리에 저장되어 있는 Register context를 다시 프로레스로 복구하는 작업
위 두 과정이 이뤄질 때를 바로 Context Switching 이라 칭한다.
Context Switching에 사용되는 비용은 OS마다 상이하며 OS 성능에 큰 영향을 주기 때문에 불필요한 Context Switching을 줄이는 것이 가장 중요하다. 줄이는 방법에 대해서는 Thread를 공부하고 다시 알아볼 예정이다!
'운영체제' 카테고리의 다른 글
3-1 프로세스 관리 (0) | 2022.01.06 |
---|---|
2. 운영체제 개요 (0) | 2022.01.05 |
1. 컴퓨터 시스템 개요 (0) | 2022.01.04 |