본문 바로가기

운영체제5

커널별 인터럽트 처리 # 타이머 인터럽트 처리 - 기본 원리 (일반적인 인터럽트 처리 순서를 그대로 따른다) - 인터럽트는 통상적으로 CPU 기준, 외부 인터럽트를 의미한다 > 따라서, 보통 하드웨어에서 발생한다고 생각하면 된다 - 인터럽트 발생 시, 프로세스를 PCB 저장한 뒤, 인터럽트 서비스 루틴을 수행 - 커널별 타이머 인터럽트 처리방식 1) 마이크로 커널 - 하드웨어 타이머에서 인터럽트 발생- 마이크로 커널에게 전달됨- 인터럽트 핸들 루틴을 수행한다 > 이 과정에서, 프로세스 스케쥴링이 들어간다- 스케쥴링을 통해 다음 프로세스를 선택한 뒤- 커널 서버는 해당 프로세스를 수행한다 2) 하이퍼바이저 커널 - 하드웨어 타이머에서 인터럽트 발생- 하이퍼바이저 커널에게 전달됨- 인터럽트 핸들 루틴을 수행- 하이퍼바이저 스케쥴.. 2020. 4. 26.
커널 종류 # 모노리틱 커널 - 구성 : 커널이 사용자와 같은 주소공간에 위치 - 주소 공간을 (커널코드 + 사용자) 나눠서 사용 - 특징 : 여러 개의 주소 공간들이 있는데, 이때 각 주소공간에 위치하는 커널 코드들은 물리적으로 동일하다 > 주소공간 매핑을 이용하기 때문- 장점 : - 여러 개의 주소 공간에서, 각각의 주소 공간 내에는 어플리케이션 + 커널 코드 두 개가 동시에 존재> 시스템 콜 할 때 오버헤드가 적다 ( 시스템 콜 = 사용자가 커널 레벨에 어떤 요청을 하는 것 ) - 여러 개의 주소 공간 각각에 커널 코드들이 분산됐는데, 주소공간 매핑을 통해 모든 커널들은 서로 연결되어 있다> 각 커널들간의 데이터 전달 시, 오버헤드가 적다- 단점 : - 하나의 커널 코드가 여러 개의 주소 공간들에 분포되어 있.. 2020. 4. 26.
DMA 와 메모리 # DMA - 의의 : CPU 의 인터럽트 처리 횟수를 줄여준다 > DMA 가 I/O 의 인터럽트 처리를 전담하기 때문 > CPU 에게 인터럽트를 한 번 받고, 인터럽트 처리가 모두 끝나고 나서야 CPU 에게 인터럽트를 다시 한 번 보내준다 - 순서 : https://kkhipp.tistory.com/168 참조 1) I/O 에서 DMA 로 이동한다 2) DMA 에서 RAM 에 접근한다 3) RAM 에서 업무를 수행한 뒤, DMA 로 돌아간다 4) 할 일을 다 마쳤다는 인터럽트를 CPU 에게 보낸다 5) DMA 에서 I/O 로 돌아간다 # RAM, ROM - 종류 : 메모리 - 구분 : > Random Access Memory :- 휘발성이 강하다- 빠르다 > Read only Memory :- 영구적이.. 2020. 4. 26.
선점형/비선점형 스케쥴링 방식 # 선점형 스케쥴링 방식 - 기본 원리 : 하나의 프로세스가 다른 프로세스 대신 CPU 를 차지할 수 있다> 즉, 미처 프로세스가 끝나기도 전에, 다른 프로세스로 전환될 수 있다 - 주로, 타임퀀텀을 기준으로 context switching 이 발생한다.> 타임 퀀텀이 끝나서, 다음 프로세스를 결정해야 할 때 여러가지 기준으로 다음 프로세스를 선정한다- 종류 : 1) round robin : - 가장 자연스러운 방식. - 어떤 타임퀀텀이 끝났을때, 해당 프로세스가 덜 끝났을 경우, 남은 시간만큼의 프로세스를 ready 큐 뒤에 넣는다. # 비선점형 스케쥴링 방식 - 기본 원리 : 하나의 프로세스가 끝나지 않으면, 다른 프로세스는 CPU 를 차지할 수 없다 - 종류 1) FIFO : 먼저 들어오면 먼저 나.. 2020. 4. 26.
인터럽트 # 인터럽트 과정 1) 프로세스 수행 중 특수 상황(=인터럽트) 이 발생 2) 작업 중단 - PC, 레지스터를 PCB (process control block) 에 저장 - CPU 제어를 인터럽트 서비스 루틴에 넘김3) Context Switching4) 특수 상황 먼저 처리 (인터럽트 루틴 실행)5) 원래 상황으로 복구 # PCB 란 - 약어 : Process Control Block- 위치 : 프로세스에 있는 자료구조- 저장 정보 : 프로세스 상태, ID 프로세스에 관한 정보 > 선점형 방식 스케쥴링을 하거나, 멀티레벨 피드백 큐 스케쥴링 구현시, 현재까지 해당 프로세스가 얼만큼 진행됐는지를 저장하는 필드 (수행시간 필드) 를 저장해둘 수 있도록 추가돼야 한다 # 인터럽트 종류 - CPU 기준 구분 .. 2020. 4. 26.