05_운영체제 구조_설계 및 구현
설계 및 구현에서는 운영체제를 설계하고 구현할 때 우리가 당면하는 문제점을 논의한다.
[설계 목표]
시스템을 설계하는데 있어 첫 번째 문제점은 시스템의 목표와 명세를 정의하는 일이다. 시스템 설계는 하드웨어와 시스템의 유형(일괄처리, 시분할 처리, 단일 사용 자 등)의 선택에 의해 영향을 받는다.
시스템 설계의 요구 조건들을 명세하는 것은 매우 어려운 일이지만 크게 사용자 목적과 시스템 목적 두 그룹으로 나눌 수 있다.
사용자 목적은 사용자들은 시스템이 사용하기 쉽고 편리하며 배우기 쉽고 안전해야 하는 등 요구사항이 있다. 이러한 명세는 어떻게 목적을 달성할 것인가에 대한 합의가 없기 때문에 시스템 설계에 있어 특별히 유용하지는 않다. 즉 운영체제는 설계, 구현, 유지보수가 쉬워야 하며 적응성, 선뢰성, 무오류, 효유율성을 가져야 한다.
[메커니즘과 정책(Mechanism and Policy)]
설계 시 중요한 원칙 중 하나가 메커니즘(Mechanism)으로부터 정책(Policy)을 분리 하는 것이다.
메커니즘은 어떤 일을 어떻게 할 것인가를 결정하는 것이고 정책은 무엇을 할 것인가를 결정하는 것이다. 정책은 장소가 바뀌거나 시간이 흐름에 따라 변경 될 수 있다. 최악의 경우 정책에 따라 메커니즘의 변경을 요구하게 된다.
정책 결정은 모든 자원 할당 문제에 있어 중요하다. 자원의 할당 여부를 결정할 필요가 있을 때마다 정책 결정을 해야 한다.
질문이 무엇(What)이 아니라 어떻게(How) 일 때마다 반드시 결정되어야 하는 것은 메커니즘이다.
[구현(Implementation)]
운영체제가 일단 설계 되면 구현하는데 운영체제는 어셈블리어로 작성 되었다. 그러나 지금은 C나 C++등의 고급언어로 작성 된다.
운영체제를 구현하기 위해 고급 언어나 최소한 시스템 구현 언어를 사용함으로써 얻어지는 장점이 있다.
- 코드를 빨리 작성 할 수 있으며
- 코드가 더욱 간결하고 이해하기 쉬우며
- 디버그도 쉽다.
- 더욱이 컴파일러 기술의 향상은 단순히 재컴파일만 하더라도 전체 운영체제 코드를 향상 시킬 것이다.
- 마지막으로 다른 하드웨어로 옮기는 이식이 쉽다. 예를 들면 MS-DOS는 intel8080 어셈블리어로 제작되어 Intel 계열의 CPU에서만 수행 된다. 대조적으로 Linux의 경우 대부분 C로 작성되었으며 따라서 Intel 80X86, Motorola 680X0, SPARC, MIS RX000 등 다수의 다른 CPU에 이용이 가능하다.
단점은 속도가 느리고 저장장치가 많이 소요된다. 하지만 이와 같은 문제는 현재의 시스템에서는 더 이상 주된 문제가 아니다. (하드웨어 성능의 발전으로 인한 효과)
어셈블리어 프로그래머는 효율적인 작은 루틴을 생산할 수 있지만 현대의 컴파일러는 대규모 프로그램을 위해 복잡한 분석을 수행하고고 그리고 정교환 최적화를 적용하여 우수한 코드를 생산 할 수 있다.
운영체제의 주요 성능 향상은 우수한 어셈블리어 코드보다 좋은 자료구조와 알고리즘의 결과일 가능성이 크다.
'SW Engineering > OS Concept' 카테고리의 다른 글
07_가상 머신(Virtual Machine) (0) | 2015.07.16 |
---|---|
06_운영체제 구조 (0) | 2015.07.16 |
04_운영체제 구조_시스템 프로그램 (0) | 2015.07.16 |
03_운영체제 구조_시스템 호출의 유형 (0) | 2015.07.16 |
02_운영체제 구조_시스템 호출 (System Call) (0) | 2015.07.16 |