본문 바로가기

Operating System/Ch1)protection

Protection

OS란 무엇인가?

-Hardware을 application에게 유용한 form으로 만들어주는 kernel에서 작동하는 software이다.

OS의 main role 3가지

  • Design abstractions to use hardware
  • Protection & Isolation
  • Sharing resources

Design abstraction to use hardware

  • 중요하지 않은 detail을 무시함으로써 이해하기 쉽도록 만든 process

Provide protection, Isolation

  • 예전에는, OS kernel과 application이 같은 주소에서 동작해 App이 kernel instruction 읽기 및 수정이 가능하였다.
  • main()을 call하면 OS에게 통제권이 돌아오지 않았기에, pdf에선 “OS is just a library”라고 표현
  • 이 때, Kernel을 buggy와 malicious application으로부터 보호해야하는 문제가 생김 !
  • ⇒ Unit of protection(protection)을 정의해 each application이 different machine에서 돌아가고 있게끔 착각하게 만드는 illusion을 제공.

Unit of protection

  • 정의: An abstraction that is process
  • 한정된 접근 권한으로 program을 동작하게 하는 시스템
  • Cpu, memory, IO devices들을 abstract하기 위한 container

⇒ In this point of view, process is an abstraction of hardware,computer

그럼, 구체적으로 어떤 protection 제공?

  1. important instructions를 실행하는 application 방어
  2. 다른 app이나 kernel의 memory read/write하려는 application 방어
  3. application으로부터 통제권을 가져오는 기능

Protection design( OS혼자 X, cpu 및 hardware와 design)

  1. Privileged instruction
    • 위의 1번 사례 예방
  2. Memory protection
    • 위의 2번사례 에방
  3. (Timer) interrupt
    • 위의 3번사례

previleged instruction

  • 만약, 제한된 권한으로 program을 run시키면 매 instruction마다 권한을 체크해야하기에 느림
  • Improved design idea
    • Dual mode operation ( user/kernel mode ) : 상태비트 이용해 구분 (x86은 EFLAG register)

    • kernel mode : hardware에 대한 full privilege로 동작 : memory, I/O device 등등에 대한 모든 Read/write 권한을 가짐
    • User mode : CPU가 실행 전에 every instruction check : 권한이 OS kernel에 의해서 부여됨(허락맡고 실행)
    • User mode에서 Privileged instruction 실행하면 CPU가 OS로 Control을 넘겨 실행을 막는

⇒ 그럼, What if App want to use I/O?

  • Kernel에게 privileged instruction 실행해도 되냐 Ask
  • ⇒ kernel이 verify the request하고 괜찮으면 APP 대신 privileged instruction 시행
  • 이러한 허락과정을 구현하는 명령어를 Trap 혹은 System call(trap을 이용해 구현)이라고 부름
    • Trap 예외상황이나 오류를 처리하기 위해 발생하, exception handler routine으로 연결되어 자동으로 처리

⇒ 그렇다면, System call이란 무엇일까

System call

정의 : Programming interface to the services provided by OS

  • ex) Printf()함수를 호출하면 write() syscall로 kernel모드에서 동작한다.

Memory protection methods

  • 그렇다면, Memory는 어떻게 보호할 것인가??
  • 방법이 2가지가 있음. Software-based method, Hardware-based method

Software-based method

  • kernel이 모든 memory access를 관여해야해 매우 느리다 !

Hardware-based method(recommend)

  • Hardwared이 load와 store instruction을 intervene함.
  • 만약, target memory access가 illegal하면 바로 exception raise
  • 그럼 OS kernel이 control 뺏고 proper action을 취함

⇒ 이와같은 Design 구현하기 위해, Virtual memoring 기법 사용 (밑 참고)

Ch6. Virtual memory

 

(Timer) interrupt

  • 컴퓨터가 booting되면, kernel은 timer hardware을 동작 시작함
  • Timer은 every few milliseconds마다 주기적으로 interrupt를 raise한다
  • Interrupt가 raise되면,
    • 현재 running중인 process가 중단됨
    • 이 때 current state를 저장해놓고
    • OS에 사전 구성된 interrupt handler을 동작시킨다.

⇒ 이와 같은 방법으로 kernel은 주기적으로 control을 빼앗는다 !