파게로그

운영체제의 작동 본문

콤퓨타 왕왕기초/OS

운영체제의 작동

파게 2020. 11. 17. 11:31
1.5 Operating-System Operations

 

현대 운영체제는 interrupt driven이다. events는 항상 interrupt나 trap의 발생에 의해 신호된다. trap(exception)은 소프트웨어에 의해 발생된 인터럽트로서 에러 또는 운영체제의 서비스가 실행되어야 하는, 사용자 프로그램에 의한 특정한 요청에 의한 것이다.

운영체제와 사용자가 컴퓨터 시스템의 HW, SW 자원을 공유하기에, 사용자 프로그램에서의 에러는 실행 중인 하나의 프로그램에 대해서만 문제를 일으키도록 할 필요가 있다. sharing이 존재하는 한, 하나의 프로그램에서 발생한 버그가 많은 프로세스들에 영향을 끼칠 수 있다. 예를 들어, 하나의 프로세스에서의 무한 루프가 다른 많은 프로세스의 적절한 작동을 막을 수 있고, 하나의 에러가 다른 프로그램의 데이터나 심지어 운영체제를 수정해버릴 수도 있다.

 

1.5.1 Dual-Mode and Multimode Operation

운영체제의 적절한 작동을 위해서, operating-system code의 실행과 user-defined code의 실행을 구분할 수 있어야 한다. 대부분의 컴퓨터 시스템에서는 실행의 다양한 모드를 구별할 수 있는 하드웨어의 지원을 통해 구분하고자 한다.

최소한 2개의 modes가 필요한데, user mode(mode bit = 1. supervisor mode, system mode, privileged mode)와 (mode bit = 0)이다. mode bit은 현재 모드를 지시하기 위해 컴퓨터에 추가되는 하드웨어에 추가된다.

system boot time에는, 하드웨어는 커널 모드에서 시작한다. 운영체제가 로드되고, 유저 모드에서 유저 어플리케이션을 시작한다. 언제라도 trap이나 interrupt가 발생하면, 하드웨어는 유저 모드에서 커널 모드로 전환한다. 즉, 운영체제가 컴퓨터의 제어권을 얻으면 이는 커널 모드이다. 시스템은 유저 프로그램에 제어권을 넘겨주기 전, mode bit을 1로 세팅함으로써 유저 모드로 변경한다.

운영체제 또는 사용자를 보호하는 것은 해로울 수 있는 machine instructions를 privileged instructions로 지정하여, 이러한 인스트럭션은 커널 모드에서만 실행될 수 있도록 하는 것이다. 유저 모드에서 이러한 인스트럭션이 실행되려고 시도되면, 하드웨어는 실행하지 않고 이를 illegal한 것으로 간주하여 운영체제에 trap(sw interrupt)을 발생시킨다. 커널 모드로 바꾸는 insrtruction도 privileged instruction의 예시이다. 

(virtual machine manager ... more than two modes)

 

시스템 콜은 다양한 경로로 유발되는데, 내재하는 프로세서에 의해 제공되는 기능에 좌우된다. 어떤 형태에서든 시스템 콜은 프로세스가 사용하는 메서드로서 운영체제의 동작을 요구하기 위한 것이다. 시스템 콜은 대개 trap의 형태를 띠어 인터럽트 벡터의 특정 위치를 가리킨다. 이 trap은 generic trap instruction에 의해 실행되는데, 그럼에도 어떤 시스템(MIPS와 같은)은 시스템 콜을 invoke하기 위한 syscall이라는 인스트럭션을 가지고 있다.

 

1.5.2 Timer

유저 프로그램이 무한 루프에 갇히거나 시스템 서비스를 호출하는 데 실패해서 운영체제에게 제어권을 돌려주지 못하는 일은 없어야 한다. 이를 위해서는 timer가 이용되는데, 타이머는 특정 기간 후에 interrupt를 발생시킬 수 있다. period는 fixed할 수도 있고, variable할 수도 있다. variable timer는 주로 fixed-rate clock과 counter을 통해 구현된다.

운영체제는 카운터를 설정하고, clock이 째깍일 때마다 counter는 감소한다. 카운터가 0에 도달하면 인터럽트가 발생한다. 예를 들어, 1ms clock과 함께 있는 10bit counter는 1ms부터 1024ms의 간격으로 인터럽트를 발생시킬 수 있다.

사용자 프로그램이 지나치게 오래 실행되는 것을 막는 방법은, 다음과 같은 예시로 알 수 있다. 프로그램이 7분이라는 실행 시간 제한을 지닌다면 카운터는 420으로 초기화될 것이다. 매 초마다 카운터는 1만큼 감소하며, 타이머는 인터럽트를 발생시킨다. 카운터가 양수인 한 제어권은 user program에 반환되고, 그렇지 않으면 운영체제는 프로그램을 종료시킨다.

'콤퓨타 왕왕기초 > OS' 카테고리의 다른 글

보호 및 보안  (0) 2020.11.23
프로세스 관리  (0) 2020.11.17
운영체제의 구조  (0) 2020.11.13
컴퓨터 시스템 아키텍쳐  (0) 2020.11.10
컴퓨터와 시스템의 작동과 구조  (0) 2020.11.10
Comments