on
운영체제 - 3
KOCW 운영체제 3강
양희재 교수님 강의를 듣고 쓴 글입니다.
고등 운영체제
Multiprocessor System
Processor(CPU)가 여러개 있는 시스템. Parallel system이다.
- 쓰는 이유
- CPU가 여러개 있으면 성능향상이 되기 때문이다.
- 하나의 비싼 CPU 보단, 여러개의 값싼 CPU가 비용적으로 더 저렴하기 때문이다.
- 여러개의 CPU 중 하나의 CPU가 고장이 나더라도, 나머지가 정상적으로 일을 처리해 줄 수 있기 때문이다. Reliability 높다.
여러개의 CPU를 쓰는 만큼 여기에 맞는 OS(Multiprocessor OS)를 써야한다.
Distributed System
Multi-computer system. 여러대의 컴퓨터가 하나의 큰 일을 할 수 있다. Ex) 전국 날씨 예측.
Multiprocessor system
처럼 하나의 메인 메모리에 여러개의 processor들이 있는 것이 아닌, 각각이 독립적으로 LAN에 연결되어 있는 형태다. distributed OS가 쓰인다.
Real-time System
컴퓨터 계산이 어떤 시간 내에 반드시 끝나야 하는 시스템. 군사목적, 공장 자동화에 사용된다.
Interrupt 기반 운영체제
Interrupt-Based System
현대 운영체제는 Interrupt-Based System
이다.
컴퓨터 부팅 시 ROM의 boot loader
가 우리의 저장소에서 OS를 찾아 메인 메모리에 올려준다. 그 이후 OS는 항상 메인 메모리에 상주한다.
- #1 : 컴퓨터 부팅이 완료된 상황에서 ‘바탕화면’의 ‘word’라는 프로그램을 실행시키기 위해 마우스로 ‘word’프로그램을 더블클릭해서 마우스의 신호가 CPU에게 갔다.
- #2 : 명령을 받길 대기하던 CPU는 마우스의 신호를 받고 OS의
ISR(Interrupt Service Routine)
을 실행시킨다. - #3 :
ISR
로 인해 OS는 저장소 안에 있는 ‘word’프로그램을 찾는다. - #4 : OS는 찾은 ‘word’프로그램을 메인 메모리에 load한다. 이제 우리의 모니터에 ‘word’프로그램이 뜨는 것이다.
ISR(Interrupt Service Routine)
Interrupt - [출처 wikipedia]
Interrupt란 마이크로프로세서(CPU)가 프로그램을 실행하고 있을 때, 입출력 하드웨어 등의 장치에 예외상황이 발생하여 처리가 필요할 경우에 CPU에게 알려 처리할 수 있도록 하는 것을 말한다
CPU는 Interrupt를 감지하면 지금 실행중인 기계어 코드를 중단하고 해당 Interrupt를 위한 처리 프로그램으로 점프하여 해당 일을 수행 한다. Interrupt 처리를 위한 루틴을 ISR(Interrupt Service Routine)
이라고 한다.
-
HW interrupt : 하드웨어적으로 인터럽트를 발생시키고 OS의
ISR
을 실행시킨다.Ex) 마우스가 ‘word’라는 바탕화면의 아이콘을 클릭했을 때 인터럽트가 발생되고, CPU는 OS에서
ISR
실행한다.ISR
은 저장소에서 해당 프로그램을 찾은 후 메인메모리에 올려준다. -
SW interrupt : 컴퓨터의 명령어 중에서 인터럽트 명령어를 실행하면 인터럽트가 발생된다. 이렇게 SW적으로 인터럽트가 발생되면,
ISR
실행.Ex) ‘word’라는 프로그램에서 불러오기라는 기능을 사용했을 때 SW interrupt 발생. OS내부의
ISR
이 실행되고, 저장소에 있는 문서를 불러온다.
- #1 : ‘word’프로그램이 실행되는 중이다. 그러나 사용자가 불러오기라는 기능을 프로그램에서 실행시켰기 때문에 저정소에 접근할 일이 생겼다. 프로그램은 저장소에 접근할 수 있는 권한이 없기에 OS에게 저장소의 문서를 달라고 요청해야 한다. 따라서 불러오기로 SW 인터럽트 발생.
- #2 : 인터럽트가 발생했기에 OS의
ISR
루틴 실행. - #3 : 요청된 문서를 저장소에서 찾음.
- #4 : 찾은 문서를 프로그램에게 돌려준다. 그리고 OS는 다시 대기상태. word 프로그램이 다시 실행된다.
Internal Interrupt
예를 들면 C코딩에서 5를 0으로 나누면 에러가 발생하는 상황에서 인터럽트 발생. 0으로 나누는 시도가 발생하면 OS의 ISR
이 해당 프로그램을 강제로 종료시킨다.