Shine's dev log

운영체제의 구조 (BIOS, Policy & Mechanism) 본문

운영체제

운영체제의 구조 (BIOS, Policy & Mechanism)

dong1 2020. 4. 5. 19:28

1. 컴퓨터가 켜지는 과정

 

우리가 컴퓨터를 켜기 위해서 전원 버튼을 누르는 순간, CPU에 전원이 들어가게 된다.

 

CPU의 Program Counter는 전원이 들어오는 순간, 컴퓨터 메모리 중 롬(ROM)에 저장되어 있는 코드를 실행시킨다.

 

이 과정에서 1) PC의 전체적인 상태를 점검하고(POST; Power On Self Test), 2) Bootstrap Program (BIOS)을 실행시켜 3) Boot loader를 RAM에 적재하여 실행시킨다. 이후 4) Boot loader가 운영체제를 메모리에 올려 실행시킨다.

 

하지만 운영체제는 크기가 큰 프로그램이기 때문에 한번에 운영체제의 모든 부분이 로드되기는 힘들다. 그래서 운영체제 중 핵심적인 기능이 모여있는 부분이 먼저 실행이 된다.

 

그 후, 핵심적인 운영체제들이 자신들의 하위 운영체제 기능들을 부르는 형태로 작동하게 된다. 즉, 운영체제는 한번에 로드되어 실행되는 것이 아니라, 여러 단계를 거쳐서 실행되는 것이다.

 

이렇게 운영체제가 실행되고나서야 비로소 사용자가 컴퓨터를 손쉽게 사용할 수 있게 된다.

 

 

 

2. Policy(정책)와 Mechanism(메카니즘)

 

OS를 디자인 한다고 했을 때 여러가지 고려해야 할 점들이 많이 있지만, PolicyMechanism을 잘 만들어야 한다.

 

Policy란 "무엇을 해야 하는가" 라고 설명할 수 있고

Mechanism이란 "결과물을 얻기위해 수행하는 일련의 기술, 프로세스" 라고 설명할 수 있다.

 

따라서 특정 Policy를 실현하기 위해서, 특정 Mechanism을 사용하는 것이다.

 

보통 운영체제를 만들 때  Policy와 Mechanism을 잘 분리해서 설계해야 하는데, 그 이유는 다음과 같다.

 

Policy는 상황에 따라서 잘 변하는 가변적인 것이다. 만약, Policy와 Mechanism을 잘 분리해서 설계하지 못했다면, Policy가 변할 때마다 Mechanism도 계속해서 변해야 한다.

 

하지만, 잘 분리해서 설계해놓았다면, Policy가 아무리 변해도 Mechanism은 수정할 필요가 없는 것이다.

 

이렇게 Policy와 Mechanism을 잘 구분해서 운영체제를 설계한다면, 더 모듈화시키기 쉽고, 확장성도 좋게 만들 수 있게 된다.

 

Policy와 Mechanism에 대한 예를 하나 들어보자. CPU Scheduler는 어떤 시점에 어떤 프로세스가 CPU를 사용할지 관리하는 프로그램이다. 이 CPU 스케쥴러에서의 Policy는 어떤 프로세스를 어떤 식으로 줄세울지 관리하는 알고리즘이다.

 

즉, 어떤 CPU 스케쥴러의 Policy가 FIFO알고리즘을 사용한다고 하면, 들어온 프로세스의 순서대로 CPU를 사용하게 할 것이다. 이런 Policy는 알고리즘마다 다르므로 관리자가 다른 알고리즘을 선택하면 Policy 자체가 바뀌므로 가변적이라고 할 수 있다.

 

반면, Mechanism으로는 프로세스를 교체하는 기능, 프로세스의 실행시간을 측정하는 기능 등 앞서 밝힌 Policy를 realize하는데 필요한 기능들이라고 할 수 있다.

 

이런 메카니즘들은 Policy가 아무리 바껴도 수행하는 기능들은 같으므로, Policy와 Mechanism이 잘 분리되었다고 할 수 있다.

 

 

 

오늘 내용 정리해보면,

 

1. 컴퓨터가 시작될 때, Bootstrap이 시스템을 초기화 시켜주고, Bootloader가 운영체제를 실행시켜준다.

 

2. 운영체제를 설계할 때 Policy와 Mechanism은 잘 분리시켜야 한다.

 

 

본 내용은 공부하며 작성한 것으로, 오류가 있을 수 있습니다.

'운영체제' 카테고리의 다른 글

프로세스 생성, 대체, 종료  (0) 2020.04.09
프로세스의 개념  (0) 2020.04.08
운영체제의 구조 (2)  (0) 2020.04.07
시스템 콜 (System call)  (0) 2020.04.01
운영체제란?  (0) 2020.03.31