[OS] System call

YHW·2021년 11월 7일
0
post-thumbnail

정확하지 않은 정보일 수 있습니다.

Protecting the System

application은 여러 instruction 을 가지고 있는데, 이때 강제종료하는 instruction 같은 HLT instruction은 어떻게 실행을 해야 할까?

Previleged Instructions

위에서 말했다 싶이 HLT instruction 같은 경우들은 조심히 사용해야한다. 조심히 사용 해야 하는 instruction 같은 경우는

  • 직접적으로 IN/OUT하는 접근을 하게되는 instruction
  • system register들에 접근하거나 그것들을 조종하는 instruction
  • 메모리 상태를 관리하는 intruction
  • HLT instruction
    등이 있다.

때문에 이러한 것들을 privileged instructions라 하고, 이러한 것들은 kernel mode에서 관리한다. 이떄 user mode에서 사용하려고 kernel mode를 침범하게 되면, exception을 발생시킨다.

Interrupt vs. Exception

  • Interrupt
    interrupt란 하드웨어 디바이스에 의해서 발생되는것, 저번 글 처럼 bus에 전류를 발생시키는 경우!
    asynchronously하게 발생 될 수 있다.
  • Exception
    exception이란 소프트웨어가 instrucions들을 수행할때 발생되는 것으로, cpu가 instruction을 수행할 때 발생할 수 있으므로 synchronously하게 발생된다.
    trap이나 fault 형태로 발생되고, interrupts같이 다뤄짐! (interrupt와 exception 둘다 동일하게 구현됨)

Transition from User to Kernel Mode

privileged instruction을 사용하기 위해서 user mode에서 kernel mode로 전환하는 경우에는 두가지 경우로 전환시킬 수 있다.

  1. Interrupt로 전환시키기
  • 보통 하드웨어에 의해서 실행된다
  • Asynchronous하게 실행됨.
  • user mode 중 interrupt할 때 잠깐 kernel mode로 바뀐 뒤 interrupt handler 실행함.
  1. System call로 전환시키기
  • Synchronous하게 실행된다.
  • 보통 소프트웨어에 의해서 실행된다.
  • user process 직접 못할땐 운영체제가 대신 진행해줌. 어떻게? system call로!

System Calls

  • System call이란? OS가 제공하는 programming interface 서비스다.
  • 대부분 직접적으로 system call을 이용하기 보단 high-level API 를 통해 program에 접근하게 된다.

Type of System Calls

  • process control
  • file management
  • device management
  • information maintenance
  • communications
  • protection

OS Relationship

 open() 이란 명령어를 user application에서 실행했을 때 실행 경로는 다음과 같다.

OS Implementation

OS 는 많은 변화를 해왔고, 현재 C/C++ 이 대부분이다. (C++은 상속을 많이 하기 때문에 실행이 힘들어 보통 C로 하긴 함)

  1. MS-DOS : single tasking, single memory space를 갖는다. 시스템 부팅 시에 Shell이라고 하는 command interpreter가 실행된다.

  1. Layered Approach
  • 8개의 층으로 나뉘어져, 각 층 사이에서만 통신 할 수 있게 만들어진 os구조이다.

  • 바깥 layer에서 안쪽 layer까지 들어가기엔 시간이 오래걸려 중간에 저장을 해서 빠르게 정보를 읽어오는 과정을 했는데, 이는 layer의 붕괴를 가져오게되는 단점이 있다.

  1. Traditional UNIX System Structure

이것을 보완한 것이 Monolithic구조이다.

  1. Monolithic
    큰 한 덩어리라는 뜻으로, single large한 software system이다. 융통성과 성능을 모두 올린 os구조이다.
  • Advantage: 성능이 좋음
  • Disadvantages : 상호 의존도가 높기 때문에 유지와 업그레이드가 힘들고, 보안과 신뢰도 문제가 있다.
  1. Microkernel
  • 핵심적인 것만 kernel 모드에 넣고, 나머지는 다 user 모드에 집어넣음. 그리고 kernel mode와 user mode간에 message를 통해서 communication을 진행한다.

  • 장점
    extend 가 쉽고, port가 쉬우며 보안과 신뢰도가 monolithic 보다 높은 편

  • 단점
    performance overhead가 발생할 수 있다.

  • microkernel 종류
    1. The Mach
    2. L3/L4 (L4는 수학적으로 증명된 software kernel임)

  1. Modules
  • 필요한 kernel module만 다운 받아 system을 implement 하기도 함.
profile
으악!

0개의 댓글

관련 채용 정보