티스토리 뷰

SoftWare/OS

OS - 2. Operating System Structures(2)

White Whale 2016. 4. 3. 22:52
728x90

1. 운영체제 설계 및 구현 - 설계 목표

• User goals - 사용자들은 시스템이 몇몇 명백한 특성을 가지기를 원한다. 따라서 시스템은 사용하기 쉽고 편리하고, 배우기 쉽고, 믿을 수 있고, 안전하고, 신속해야한다.
• Systems goals - 설계, 구현, 유지 보수가 쉬워야 하며, 적응성, 신뢰성, 무오류, 효율성을 가져야 한다.

 

2. 운영체제 설계 및 구현 - 메커니즘과 정책

• Mechanism - 어떤 일을 어떻게 할것인가?
• Policy - 무엇을 할것인가?
• 타이머를 예로 들면 타이머의 수행하는 일은 CPU롤 보호하는 메커니즘이지만 타이머 설정에 대한 시간은 정책이다.
• 정책은 장소나 시간의 흐름에 따라 변경될 수 있다. 정책의 변경으로 새로 설계를 하는 것이 아니라 파라메터를 이용하여 변경할 수 있도록 설계한다.

 

3. 운영체제 설계 및 구현 - 구현

• 과거의 운영체제들은 어셈블리어로 작성되었지만 현재는 High Level 언어로 작성된다. 어셈블리어로 작성시 속도 부분에서 빠르지만 해당 CPU에서만 동작한다. 
• 현재 기술의 발달로 하이-레벨 언어로 운영체제를 구현하는 것은 문제가 되지 않는다.

 

4. OS Structures - Simple Structure

• MS - DOS : 최소의 공간에 최대의 기능들을 제공하도록 작성되어 있어서 묘듈들로 주의 깊게 분활되지 않았다. 이러한 이유로 프로그램이 고장나면 시스템 전체가 고장나게 된다.

• UNIX : 커널과 시스템 프로그램으로 구성되어 있다. 커널은 여러 가지 인터페이스와 장치 드라이버로 다시 분리된다. 모든 기능이 시스템콜과 하드웨어 사이에 있어서 하나의 계층으로 결합하기에는 너무 많은 기능들이 많았고 유지 보수도 어려웠다.

5. OS Structures - Layered Approach

•  하드웨어부터 사용자 인터페이스까지 N개의 계층으로 구성한 방식이다. 각 계층은 바로 하위 계층으로만 접근이 가능하다.
•  대표적인 예로는 API계층에서 시스템콜 계층을 호출하고 시스템 콜에서 해당 하드웨어의 드라이버를 호출한다. 이러한 접근 방법은 시스템의 검증과 디버깅 작업을 단순화 한다. 디버깅시 특정 계층에서 디버깅 오류가 발생하면 하위 계층에 대한 디버깅 검증은 끝난 상태이므로 해당 계층에 반드시 오류가 있다.
•  구현에 있어서는 각 계층은 자신보다 저수준의 계층에 의해 제공된 연산들만 사용하기 떄문에 해당 연산들이 어떻게 구현되었는지에 알 필요가 없고 무엇을 하는지만 알면 된다.
•  계층적 접근에서는 자신의 하위에 있는 계층만 이용할 수 있기 때문에 계층에 속하는 것을 잘 구분 해야한다. 특정 기능이 다른 A라는 기능을 사용해야하는데 A가 상위 계층에 있다면 문제가 있는 것이다.
•  계층적 구조이기 때문에 최하위의 기능을 수행하기 위해서는 모든 계층을 거쳐서 가야한다. 이러한 이유로 효율성이 떨어진다.


6. OS Structures - Microkernel

•  계층간 통신에 대한 오버헤드를 줄이기 위해 기능들을 유저 영역으로 옮기고 커널의 크기를 최소화 하였다.
•  유저 영역에 있는 기능을 이용하기 위해서는 통신을 해야하며 통신은 메시지 전달에 의해 제공된다. 
•  새로운 서비스를 유저영억에 추가하면 되기 때문에 커널의 변경이 필요없고 확장하기 용이하다.
•  서비스가 동작중 오류가 발생하여도 사용자 영역에서 동작함으로 운영체제의 다른부분에 영향을 미치지 않는다.
•  커널에 남길 기능을 결정하기가 모호하고 서비스와 메세지 전달에 대한 오버 헤드가 크다.


7. OS Structures - Module

•  커널이 모듈의 핵심적인 구성 요소의 집합을 가지고 있는 부팅 때 또는 실행중에 부가적인 서비스들을 링크한다. 
•  이러한 설계는 핵심 서비스를 제공할 수 있게 할 뿐 아니라 특정 기능들을 동적으로 구현 할 수 있게 한다.
•  커널이 하드웨어를 다룰 수 있는 인터페이스를 가짐으로서 계층적 구조를 다루고 있지만 모듈은 임의의 모듈들을 모두 메모리에 올려서 사용하는 것이 아니라 필요에 따라 모듈들을 적재함으로 마이크로커널과 유사하다. 그러나 통신하기위한 메세지 전달을 호출할 필요가 없어 더욱 효율적이다(시스템 콜 이용).


8. OS Structures - Hybrid System

•  Max OS X는 계층적인 구조를 보이고 있다. 하위에는 커널환경이 있는데 여기에는 Mach와 BSD가 있다. Mach와 BSD 이외에 커널 환경 커널 확장을 통해 사용할 수 있다.

•  ISO는 Max OS X의 기본 커널 환경 위에 모바이 장치를 위한 서비스를 제공하는 계층들이 있다.
•  Android 역시 계층적 구조를 가지고 있으며 아래에서 2번째 계층에 라이브러리 및 Dalvik 가상머신이 있다.

9. OS 디버깅

•  디버깅은 하드웨어와 소프트웨어에서의 시스템의 오류를 발견하고 수정하는 행위이다. 성능 조정 역시 디버깅에 포함된다.
•  장애분석(Failure Analysis) : 커널 장애는 충돌(crash)라 부르고 커널 장애 발생 시 crash dump 파일이 커널 메모리에 저장된다. 메모리 장에시 core dump file이 프로세스의 메모리에 저장된다.


10. DTrace

•  DTrace는 실행 중인 시스템, 사용자 프로세스와 커널 모두에 동적으로 탐색점을 추가할 수 있는 툴이다.


11. 시스템 부트

•  운영체제가 생성 후에, 하드웨어가 사용이 가능하고 커널을 적재하여 컴퓨터를 시동하는 절차가 부팅이다.
•  대부분 컴퓨터는 부트스트랩 프로그램이 커널을 찾고, 메모리에 적재시킨 후 수행을 한다. 특정 컴퓨터는 작은 부트스트랩이 큰 부트스트랩을 호출하는 식의 2단계를 거친다.
•  부트스트랩 프로그램은 ROM에 존재하며 실행 되면 하드웨어의 상태를 진단하는 작업을 하고 부팅 절차를 진행한다.
•  ROM에 부트스트랩 프로그램이 저장되기 떄문에 만약 부트스트랩 코드가 변경되면 ROM 하드웨어 칩을 변경해야한다. 그렇기 떄문에 쓰기 명령어가 들어오지 않으면 읽기 전용이 유지되는 EPROM을 이용한다.
•  ROM은 하드웨어와 소프트웨어의 중간적 특성을 가지고 있기 떄문에 firmware라 부른다.
•  모든 부트 프로그램이 적재되면 파일 시스템을 탐색하여 운영체제 커널을 찾아내고 메모리에 적재한 후 시작한다. 이 시점부터 시스템이 실행 중이라고 말할 수 있다.


'SoftWare > OS' 카테고리의 다른 글

OS - 3. Process(2)  (0) 2016.04.10
OS - 3. Process(1)  (0) 2016.04.08
OS - 2. Operating System Structures(1)  (0) 2016.03.28
OS - 1. Introduction(4)  (0) 2016.03.27
OS - 1. Introduction(3)  (0) 2016.03.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함