OS(2) - Interrupt-Based System
OS 관련 포스팅
- OS(1) - Introduction
- OS(2) - Interrupt-Based System
- OS(3) - Process Management
- OS(4) - CPU Scheduling
- OS(5) - Thread
- OS(6) - Classical Synchronization Problems
- OS(7) - Deadlock
- OS(8) - Monitor
- OS(9) - Midterm
- OS(10) - Main Memory Management
- OS(11) - Contiguous Memory Allocation
Interrupt
interrupt: v. 방해하다, 중단시키다
→ 어떤 일을 하고 있는데 가로채서 다른 일을 함
- 현대 운영체제는 interrupt 기반 시스템
- booting 완료 후, OS는 메모리에 상주함(resident)
- 마우스를 움직이면 전기신호(=interrupt)가 발생해 CPU의 interrupt선으로 감 <HW interrupt>
- CPU는 하던 일을 중지하고 OS안의 마우스 Interrupt Service Routine(ISR)(코드)으로 점프
- 특정 icon을 더블클릭하면 interrupt가 걸리고, 더블클릭의 routine(코드)을 실행 <SW interrupt>
- 하드 디스크 속 특정 프로그램을 메인 메모리에 올림
- 바탕화면이 바뀌며 특정 프로그램의 화면이 나옴
- IRS 종료후 다시 user program 또는 원래의 대기상태로 복귀
interrupt 기반 OS
-
OS는 여러 가지 code들의 모임
→ 평소에는 작동하지 않고 interrupt에 의해 작동함 -
평소 OS는 대기상태
- HW/SW/Internal(내부) interrupt에 의해 운영체제 코드(ISR)을 실행
- Internal interrupt
e.g.) divide by zero: 결괏값이 무한대가 되어 컴퓨터에 저장 공간이 없음
→ CPU가 내부적인 interrupt로 인식
이중 모드(Dual Mode)
- 사용 환경
- 한 컴퓨터(= 서버 컴퓨터)를 여러 사람이 동시에 사용하는 환경
- 또는 한 사람이 여러 프로그램을 동시에 사용하는 환경 (e.g.) pc, 스마트폰)
- 또는 한 사람이 특권 명령을 입력하는 경우
- 사용자 모드(User mode) vs. 관리자 모드(Supervisor mode)
- CPU 동작 모드를 두 가지로 진행
- OS 서비스가 실행될 때, HW/SW interrupt 발생할 때 관리자 모드 실행
- 사용자 프로그램이 실행될 때, OS 서비스가 끝나면 다시 사용자 모드 실행
- 사용자 모드에서는 CPU 중지 명령어(STOP, HALT, RESET 등)와 같은 치명적인 명령어를 사용하지 못하도록 함
- 관리자(supervisor) 모드 = 시스템(system) 모드 = 모니터(monitor)(감시자) 모드 = 특권(priviliged) 모드
- 레지스터에 mode를 나타내는 flag가 존재함
- register: 비트들의 모임
- flags(carry, negative, zero, overflow)에 monitor 비트를 추가해 0과 1로 이중모드를 구현
- 특권 명령(Privileged instruction)
- 특권 모드에서만 내릴 수 있는 명령어
- STOP/HALT/RESET(CPU 중지 명령어), SET_TIMER(일반 유저가 시간을 바꾸면 안 됨), SET_HW(HW의 값을 바꿈)…
-
일반 User program은 하드 디스크에 접근이 불가함
즉, 서버 컴퓨터에 접속해 타인의 파일을 열람할 수 없다는 뜻(보안 문제)
그래서 OS에 SW interrupt를 걸어 ISR을 실행해 필요한 작업을 하게 함 - 일반적인 프로그램의 실행
- power on
- booting: 하드 디스크의 프로그램이 메인 메모리에 적재
- monitor 비트 = 1 : system mode라는 뜻
- OS는 system mode에서 동작함
- 일반 user는 못 내리는 명령 수행 가능
- user mode > (키보드, 마우스) HW interrupt > system mode(ISR) > user mode > (모니터, 디스크, 프린터) > system mode > user mode
- 만약, user mode에서 CPU에 STOP 명령을 내리면,
CPU는 internal interrupt가 발생했다고 여겨 OS의 ISR로 점프해
해당 명령을 내린 프로그램을 강제 종료시켜 메모리에서 내림
→ protection과 연관됨
- 만약, user mode에서 CPU에 STOP 명령을 내리면,
하드웨어 보호
- 입출력장치 보호
→ 사용자가 input/output device에 바로 접근하는 것 불가, 반드시 OS를 거쳐야함 - 메모리 보호
→ 자신에게 주어진 메모리 영역을 넘어서는 것을 막음 - CPU 보호
→ 한 컴퓨터를 여러 명이 쓴다면, CPU 역시 침범 대상이 될 수 있음
(1) 입출력장치 보호
- 서로 다른 사용자들 간의 입출력 정보가 끼어들어 혼선이 생기는 것을 막기 위함
- 입출력 명령(
IN OUT
)을 특권 명령으로 지정함 - SW interrupt(명령어: INT) > OS에 요청(system mode로 전환) > 입출력 실행 > 다시 user mode로 복귀
- 이때, 올바른 요청인지 ISR의 초반에 확인하며, 그렇지 않다면 OS가 거부함
- user mode에서 사용자가 직접 입출력 명령을 내린다면 ISR로 점프해 해당 프로그램을 종료시킴(privileged instruction violation, 특권 명령 침범)
(2) 메모리 보호
- 다른 사용자의 메모리 혹은 OS영역의 메모리에 접근하는 것을 막기 위함
- MMU(Memory Management Unit)를 두어 다른 메모리 영역 침범을 감시함
- 일종의 문지기로 base registar와 limit register 사이의 값만 통과시킴
- Address bus에 base/limit register를 설정해두고 그 범위를 넘어서면 interrupt를 발생시킴
- 메모리에 잘못된 접근이 일어나면 ISR이 동작해 해당 프로그램을 강제 종료시킴(segment violation, 영역 침범)
(3) CPU 보호
- 한 사용자의 CPU 시간 독점이 다른 사용자의 프로그램 실행을 방해하는 것을 막기 위함
- TIMER를 두어 일정 시간 경과시 timer interrupt 발생
- timer가 cpu에 주기적으로 interrupt를 걸어줌
- interrupt가 발생 > ISR로 jump > ISR의 코드에 한 프로그램이 CPU시간을 독점하는지 감시하는 부분이 존재 > 다른 프로그램으로 강제 전환
OS 서비스
- 프로세스 관리 ★★
- process: 메모리에서 실행 중인 program
(vs. program: 하드 디스크에 존재) - process의 생성, 소멸, 활동 일시 정지, 활동 재개, 통신, 동기화, 교착상태 처리 등
- process: 메모리에서 실행 중인 program
- 주기억장치 관리 ★
- process에 메모리 공간 할당, process 종료시 메모리 회수, 가상 메모리
- 파일 관리
- 파일의 생성과 삭제, directory(folder))의 생성과 삭제, file 기본 동작, 백업
- 보조기억장치 관리
- 하드 디스크, 스마트 폰의 플래시 메모리 등
- 빈 공간 관리, 저장공간 할당, 디스크 스케줄링
- 입출력장치 관리
- 장치 드라이브, 입출력 장치의 성능 향상 …
시스템 콜
- OS 서비스를 받기 위한 호출(요청)
- 주요 시스템 콜
- Process: end(종료), abort(강제 종료), load(하드 디스크의 프로그램을 메인 메로리로 가져오는 것), execute(실행), create(process 생성), terminate(종료(=end)), get/set attributes(속성)
- Memory: allocate(새 객체 생성시 메모리가 필요해 OS에 요청), free(메모리를 다 쓰고 나서 돌려줌)
- File: create(생성), delete(삭제)