[운영체제 2-7장. 운영체제 구조]
: 현대의 운영체제는 크고 복잡한 시스템이다.
: 여러가지 접근방법이 있음
[간단한 구조(Simple Structure)]
<MS-DOS>
: 최소의 공간에 최대의 기능들을 제공하도록 구현
<구조>
: 인터페이스와 기능 계층이 잘 분리되어 있지 않다. ex)응용프로그램이 디스플레이와 디스크 드라이브에 직접 쓰기 가능
=> 오류에 취약, 사용자 프로그램 고장나면 시스템 전체 고장
< UNIX(최초형태)>
: 마찬가지로 하드웨어 기능에 의해 제한 / 본격적 다중 사용자를 위한 OS
<구성 요소>
- 시스템 프로그램
- 커널 : 시스템 호출을 통해 여러 운영체제 기능을 제공. 초기에는 이 모든게 한개의 계층으로 결합되어 있어서 구현과 유지보수에 어려웟음
=> 그래도 성능면에선 우수(오버헤드 없음) +)현재는 커널을 여러개로 분리한 형태.
[계층적 접근(Layered approach)]
:운영체제는 적절한 하드웨어 지원이 있으면, 보다 작고 적절한 조각으로 분할 가능 => 응용에 대해 훨씬 더 큰 제어 유지가능
- 이와 같은 모듈화(modularity)를 통해 운영체제가 여러층으로 나뉜다.
: 최하층 : 하드웨어 / 최상층 : 사용자 인터페이스 / 안쪽 layer기반으로 다음 layer 실행.
[마이크로커널(microkernel)]
: 대부분의 기능을 사용자공간에 넣고, 핵심기능만 가지고 있는 커널
: Message passing(메세지 전달) 을 통해 통신 제공
: 현대 OS 대부분이 이 방법 사용(mac os등)
<장점>
- OS 확장에 용이 : 새로운 서비스들이 사용자 공간에 추가되며, 커널 변경 필요없기 때문.
=> 다른 하드웨어로 쉬운 이식, 신뢰성, 안정성
<단점>
- 속도가 느리다(성능저하)
<구조>
- 마이크로커널의 대표적 3가지 기능
1) 프로세스간 통신(Interprocess Communication) : Message 송수신 역학
2) 메모리 관리(Memory Management)
3) CPU 스케줄링(CPU scheduling)
- 모든것이 Message 기반
ex)파일 읽고 싶을때, File 입출력하라고 usermode에 있는 file System에 message를 보내 요청하는 형태
[모듈(Modules)]
- 적재가능 커널 모듈(loadable kernel modules)
: 최선책모델. 커널은 핵심요소 가지고 있고, 필요할때마다 부가적 서비스들을 모듈을 통해 링크하는 모듈
# Solaris, Linux, Mac Os, windows등에서 사용
# Solaris 적재가능 모듈 생략.
[혼용 시스템(Hybrid Systems)]
: Monolitic(모놀리식) + micokernel(마이크로커널)
: 다양한 구조를 결합해 성능, 보안, 편리성 문제를 해결하려는 혼용 구조로 구성.
- 모놀리식 : Linux와 Solaris는 운영체제 전부가 주소공간에 존재해 효율적 성능 제공
- 마이크로커널 : window도 성능때문에 대부분 모놀리식이지만, 사용자 모드 프로세스로 실행되는 분리된 서브시스템을 지원.
# Mac Os X : 혼용 / Aqua : 응용환경 , Cocoa : 프로그래밍환경(API명시) 에 이용됨.
# IOS : 모바일 환경 / <구조> (위)Cocoa Touch - 미디어 서비스 - 핵심 서비스 - 핵심 OS(아래)
# Android : Linux 커널 기반
*** 모놀리식 : 하나에 전부 구성, 성능 / 마이크로커널 : 확장성, 이식성, 속도저하
'기타 > [운영체제]' 카테고리의 다른 글
[운영체제 2장 요약](작성중) (0) | 2019.03.27 |
---|---|
2-10장. 시스템 부트 (0) | 2019.03.24 |
2-6장. 운영체제 설계 및 구현 (0) | 2019.03.18 |
2-5장. 시스템 프로그램 (0) | 2019.03.18 |
2-4장. 시스템 호출의 유형 (0) | 2019.03.15 |