/ OS

OS(2) - Interrupt-Based System

OS 관련 포스팅

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을 실행해 필요한 작업을 하게 함

  • 일반적인 프로그램의 실행
    1. power on
    2. booting: 하드 디스크의 프로그램이 메인 메모리에 적재
      • monitor 비트 = 1 : system mode라는 뜻
      • OS는 system mode에서 동작함
      • 일반 user는 못 내리는 명령 수행 가능
    3. user mode > (키보드, 마우스) HW interrupt > system mode(ISR) > user mode > (모니터, 디스크, 프린터) > system mode > user mode
      • 만약, user mode에서 CPU에 STOP 명령을 내리면,
        CPU는 internal interrupt가 발생했다고 여겨 OS의 ISR로 점프해
        해당 명령을 내린 프로그램을 강제 종료시켜 메모리에서 내림
        → protection과 연관됨

하드웨어 보호

  1. 입출력장치 보호
    → 사용자가 input/output device에 바로 접근하는 것 불가, 반드시 OS를 거쳐야함
  2. 메모리 보호
    → 자신에게 주어진 메모리 영역을 넘어서는 것을 막음
  3. 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 registarlimit 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 서비스

  1. 프로세스 관리 ★★
    • process: 메모리에서 실행 중인 program
      (vs. program: 하드 디스크에 존재)
    • process의 생성, 소멸, 활동 일시 정지, 활동 재개, 통신, 동기화, 교착상태 처리 등
  2. 주기억장치 관리 ★
    • process에 메모리 공간 할당, process 종료시 메모리 회수, 가상 메모리
  3. 파일 관리
    • 파일의 생성과 삭제, directory(folder))의 생성과 삭제, file 기본 동작, 백업
  4. 보조기억장치 관리
    • 하드 디스크, 스마트 폰의 플래시 메모리 등
    • 빈 공간 관리, 저장공간 할당, 디스크 스케줄링
  5. 입출력장치 관리
    • 장치 드라이브, 입출력 장치의 성능 향상 …

시스템 콜

  • OS 서비스를 받기 위한 호출(요청)
  • 주요 시스템 콜
    • Process: end(종료), abort(강제 종료), load(하드 디스크의 프로그램을 메인 메로리로 가져오는 것), execute(실행), create(process 생성), terminate(종료(=end)), get/set attributes(속성)
    • Memory: allocate(새 객체 생성시 메모리가 필요해 OS에 요청), free(메모리를 다 쓰고 나서 돌려줌)
    • File: create(생성), delete(삭제)