고등운영체제, 인터럽트 기반 운영체제(Operating System Interrupt)
25 Nov 2019 | OS operating system개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
경성대학교 양희재 교수님 수업 영상을 듣고 정리하였습니다.
고등운영체제
1. 다중 프로세서 시스템(Multiprocessor system)
메모리는 하나인데 cpu가 여러개인 시스템
- 병합 시스템(Parrallel system): cpu가 여러개, 병렬로 있다.
- 강결합 시스템(tightly-coupleds system): 강하게 결합, 하나의 메모리에 cpu가 여러개 강하게 결합되어있다.
- 3가지 장점(performance, cost, reliability)
- performance: 성능향상. cpu가 여러개 있으면 더 많은 계산이 가능하겠지
- const: 비용절감. 컴퓨터는 빠를 수록 좋은데 하나의 강한 cpu보다 싸지만 여러개를 cpu를 두는게 더 효율적임
- reliability: 신뢰도. 하나의 cpu가 고장나더라도 다른애들은 사용가능
다중 프로세서 운영체제(multiprocessor OS)
: 하나의 메모리에 cpu가 여러개인 것은 multiprocessor OS이다.
2. 분산시스템(Distributed system)
여러개의 컴퓨터를 근거리 통신망(LAN)
으로 연결 = cpu도 여러개, 메모리도 여러개로 이루어진 시스템
- 다중 컴퓨터 시스템(multi-computer system): 여러개의 컴퓨터가 하나의 LAN으로 연결 되어있음
- 소결합 시스템(loosely-coupled system): 메인 메모리를 공유하지 않음 (하나의 메모리, 하나의 cpu)
- 분산 운영체제(Distibuted OS): 각각의 컴퓨터에 들어있는 os는 서로 메시지를 주고받으며 하나의 공통의 일을 나누어서 함
다중 프로세서 시스템과 분산시스켐의 장점/목표는 아래와 같다.
- 성능향상: 강한 컴퓨터(성능이 좋다는건 빨리 계산한다는것)
- 비용절감
- 신뢰성(하나가 죽어도 다른일을 할 수 있음)
즉, 구현방식이 다른것이지 하고자하는 시스템을 통해 하고자하는 목표는 동일하다. 그러나 아래는 다르다.
3. 실시간 시스템(Real-time system)
계산이 시간내에 반드시 끝내야하는 시스템, 실시간 시스템이라 한다.
스마트폰에서 컴파일(하이레벨 랭귀지를 기계어로 변환하는것)을 한다고 할때,그 컴파일이 되는 시간은 반드시 몇ms안에 끝나야한다. 즉, 시간에 대한 절대적인 제한을 주는것!
- 시간제약: Deadline. 시간내에 반드시 끝나야하는 시스템. 그것을 지나가면 실패한 시스템이라 한다.(타이트한 시간제약)
- 공장 자동화(FA), 군사, 항공, 우주
- 실시간 운영체제(Real-time OS = RTOS): 3초내에 끝내야한다고 할때, 못 끝날것같으면 나머지 다른애들을 희생시키고(바쁘지 않은 어떤 프로그램) 그 시간을 좀 더 투자함으로써 반드시 시간내에 끝낼 수 있도록 실행
인터럽트 기반 시스템(Interrupt-Based System)
가로채기, 현재 운영체제는 전부다 인터럽트 기반 시스템이다!
컴퓨터의 전원을 키고 boot load를 통해 하드디스크에 설치되이었던 os가 램으로 올라가 상주하게 되면 우리 눈에는 모니터의 바탕화면이 보이고 마우스가 깜빡이는걸 볼 수 있을 것이다. 마우스에 아무런 이동을 주지 않는다면 os는 일단 아무것도 안하고 가만히 있다. 이는 즉, cpu가 아무것도 하고 있지 않음을 의미한다.
그런데 마우스를 움직으면 무슨일이 일어날까?
- 마우스에서는 전기신호가 발생해서 그 전기신호가 cpu에 보내진다.
- 마우스가 실질적으로 cpu에 연결되어 있는 것은 아님.
- 논리적으로 이 마우스가
인터럽트 선
을 통해 전기신호를 보낸다.
- cpu는 메모리 안에 os로 점프를 하게 된다.
- 인터럽트라고 하는것은 지금 하는일을 중지하고 점프를 하는 것
- os 안의 어떤일을 하라는 명령을 확인한다.
(Interrupt service routine: 인터럽트가 일어나면 이런 서비스를 해주는 코드)
즉, 우리가 바탕화면이 나타나 마우스를 움직이는 그 자체가 인터럽트가 발생한것이고 그 인터럽트 신호가 cpu에 보내지게 되면 cpu는 지금 하던일을 중지하고 os로 넘어가 os안에 들어가있는 마우스 Interrupt service routine
으로 점프한다.
어떤 코드가 들어있을까?
마우스가 움직이는대로 모니터의 커서를 옮기는 루틴이 들어있다.
Hardware Interrupt
- 마우스커서를 hwp로 움직여 더블클릭을 해본다.
- 더블클릭을 하면 인터럽트에 걸릴것이고 cpu는 os에 들어가 해당하는 코드가 무엇인지를 확인한다.
- 더블클릭에 해당하는 서비스 루틴을 확인(더블클릭의 x,y좌표에 해당하는 곳이 hwp구나 라는것을 확인)
- 마우스 인터럽트 서비스 루틴이 하드디스크를 뒤져서 하드디스크 안의 hwp를 뒤져서 확인한뒤 메인메모리로 가지고 온다.
- 메인메모리에 hwp프로그램이 올라가고 모니터에는 아래 한글 초기화면이 나타나게 된다.
키보드의 경우도 마찬가지다. 키보드의 어떤 키라도 누르면 전기신호가 가서 cpu는 하던일을 멈추고 os안의 키보드의 인터럽트 서비스 루틴으로 점프하게 된다. 즉, os는 하나의 프로그램이고 그 안에는 여러가지 코드가 있는데 그 코드는 인터럽트가 걸려오면 작동을 한다. 이렇게 해당 동작이 멈추게 되면 cpu는 다시 대기하고 있는다.
Software Interrupt > swi
- hwp 프로그램이 메인메모리로 올라오면 해당 프로그램은 실행이 된다.
- hwp 실행되다가 하드디스크의 어떤 내용을 읽어오고 싶은 경우,
하드디스크를 읽어오는 루틴(프로그램)은 os안에 들어있음
- hwp가 직접 들고오지않음 (이 또한 ISR임)
- hwp가 하드디스크의 내용을 읽어오고 싶다면,
swi
가 os에 점프 - os안에 있던 코드가 하드디스크에 가서 하드디스크 안에 있던 파일을 읽어와 메인 메모리에 가져온다.
- 다 읽고나면 다시 원래의 hwp 프로그램으로 돌아온다.
os안에는 많은 코드들이 들어있으며, os 안의 코드는 인터럽트를 통해서 실행이 된다.
Internal Interrupt
- 컴퓨터 프로그램을 짰는데, 코드내 연산에서 값이 없는 코드가 나오게 되면 그 밑의 코드로는 진행이 안된다.
- 이런 경우 컴퓨터의 입장에선 cpu에서 프로그램이 실행이 안된다.(저장이 안되니까)
- cpu는 내부적으로 인터럽트가 발생한것으로 인식
- os안에는
divide by zero
(0으로 나누면 이 코드를 실행하라)라는 코드를 실행한다. - 프로그램을 종료시킨다.