운영 체제의 아키텍처는 대체로 단일 커널(monolithic kernel)과 마이크로커널(microkernel) 두 가지로 나뉜다.
- 단일 커널(monolithic kernel): 이 아키텍처에서는 운영 체제의 필수 구성 요소가 모두 단일 커널 내에 통합된다. 따라서 프로세스 관리, 메모리 관리, 파일 시스템, 디바이스 드라이버 등 모든 기능이 단일 커널 내에서 구현된다.
- 마이크로커널(microkernel): 이 아키텍처에서는 커널에는 필수적인 핵심 운영 체제 기능만 포함된다. 주로 프로세스 관리(IPC, 동기화, 기본 스케줄링) 및 기본적인 메모리 관리 능력이 있다. 그 외의 서비스들(장치 드라이버, 파일 시스템, 가상 메모리 관리자, 윈도우 시스템, 보안 서비스 등)은 사용자 공간의 외부 서브시스템으로 분리되어 구현된다.
# 1. OS Architecture: Microkernel
UNIX (System V Release 4, Solaris) 및 Linux와 같은 운영 체제는 대부분 단일 커널(monolithic kernel) 아키텍처 기반이다.
이러한 운영 체제에서는 필요한 모든 기능이 단일 커널 내에 통합되어 있다. 따라서 프로세스 관리, 메모리 관리, 파일 시스템, 디바이스 드라이버 등 모든 기능이 커널 내에서 구현된다.

# 2. OS Architecture: Microkernel
OS 아키텍처: 마이크로커널
- 마이크로커널은 커널에 주요 기능만 할당한다.
- 주요 기능은 주소 공간, 프로세스 간 통신(IPC), 기본 스케줄링 등이 있다.
마이크로커널 아키텍처는 커널이 최소한의 기능만을 담당하고, 나머지 기능은 외부의 서브시스템으로 이루어진 운영 체제를 구성한다. 이러한 아키텍처는 운영 체제의 유연성과 확장성을 높이며, 유지보수 및 개발이 용이하도록 도와 준다.

# 2-1 장점
마이크로커널 구조의 장점은 다음과 같다.
- 일관된 인터페이스: 프로세스가 요청하는 모든 서비스에 대해 일관된 인터페이스를 제공한다. 커널 수준과 사용자 수준의 서비스를 구분하지 않고 모든 서비스가 메시지 전달을 통해 제공된다.
- 확장성: 새로운 서비스를 추가할 수 있다. 즉, 시스템에 새로운 기능을 쉽게 추가할 수 있다.
- 유연성: 시스템에 기능을 추가하거나 제거할 수 있다. 이는 시스템이 변화하는 요구 사항에 적응할 수 있음을 의미한다.
- 이식성: 시스템을 새로운 프로세서로 이동할 때 필요한 변경 사항이 마이크로커널에만 적용되므로, 시스템의 이식성이 향상된다. 다시 말해, 이러한 변경 사항은 다른 서비스에 영향을 미치지 않는다.
- 신뢰성: 작은 마이크로커널은 엄격하게 테스트될 수 있다. 따라서 시스템의 신뢰성이 향상된다.
- 분산 시스템 지원: 메시지가 대상 머신을 명시하지 않고 전송된다. 이는 분산 시스템에서 특히 중요하다.
마이크로커널 구조는 유연성, 이식성, 확장성 및 신뢰성과 같은 다양한 장점을 제공하여 운영 체제의 설계와 구현을 단순화하고 개선합니다.
# 2-2 단점
마이크로커널의 단점은 다음과 같다.
- 성능: 마이크로커널은 모놀리식 커널보다 느릴 수 있다. 이는 프로세스간 통신이 필요하기 때문이다. 메시지를 구성하고 보내는 데와 응답을 수락하고 해독하는 데 추가적인 오버헤드가 발생한다.
그러나 마이크로커널의 디자인을 신중하게 계획함으로써 이러한 성능 차이를 크게 줄일 수 있다. 즉, 효율적인 메시지 패싱 및 통신 메커니즘을 구현하여 성능을 최적화할 수 있다.
# 3. Example Operation Systems
- UNIX: 단일 커널 아키텍처
- 4.4BSD
- System V 릴리스 4 (SVR4)
- Solaris
- Linux: 단일 커널 아키텍처
- 버전 2.6, 버전 3.3 등
- Windows: 단일 또는 반-마이크로커널 아키텍처
- Windows 98, 2000, NT, XP, CE, Vista, Windows 7 등
- 모바일 기기용 운영 체제: 단일 커널 아키텍처
- REX, Symbian, Linux, Linux+Android, iOS, Windows Mobile 등
- 실시간 운영 체제: 단일 커널 아키텍처
- VxWorks, RTLinux, QNX, LynxOS 등
- 임베디드 시스템용 운영 체제: 단일 커널 아키텍처
이러한 운영 체제들은 다양한 아키텍처를 사용하며, 각각의 특징에 따라 다양한 분야에 사용된다.
# 4. UNIX
UNIX는 초기에는 Multics에서 파생되었다.
Bell Labs의 Ken Thompson과 Dennis Ritchie 등에 의해 1971년에 출시되었는데 UNIX는 C 언어로 다시 작성되었으며, 1976년에 Bell Labs 외부에서 처음으로 널리 사용 가능한 버전인 버전 6이 출시되었다.
이후 다양한 기업 및 연구소에서 다양한 버전이 출시되었다. 여기에는 버클리 소프트웨어 배포판(BSD)이 포함되어 있으며, 또한 AT&T에 의해 System III, System IV, System V 릴리스 4 (SVR4) 등이 출시되었다. 또한 Sun Microsystems에서 개발한 Solaris도 있으며, 이는 SVR4 기반의 UNIX로 가장 널리 사용되고 성공한 상용 UNIX 구현이다.
UNIX는 주로 메인프레임 및 서버 컴퓨터용으로 사용되는 운영 체제이다.

# 5. Linux
리눅스
- IBM PC용 UNIX의 변형으로 시작됨
- 리누스 토르발스(핀란드의 컴퓨터 공학 학생)가 초기 버전을 작성함
- 리눅스는 1991년에 인터넷에 처음으로 게시됨
- 현재는 여러 플랫폼에서 실행되는 완전한 기능의 UNIX 시스템임
- 무료이며 소스 코드가 제공됨
- 리눅스 커널 아카이브: https://www.kernel.org/
- 성공의 핵심 요소는 무료 소프트웨어 패키지의 제공임
- 매우 모듈화되어 있고 쉽게 구성할 수 있음
리눅스는 초기에는 개인 컴퓨터 사용자를 대상으로 시작되었지만, 이제는 서버, 임베디드 장치, 모바일 기기 등 다양한 환경에서 널리 사용되고 있다. 오픈 소스로서, 전 세계의 개발자들이 기여하고 있으며, 그 결과로 지속적인 개선과 업데이트가 이루어지고 있다.

# 6. Windows
Windows는 마이크로커널과 사용자 모드 프로세스로 구성된다. 사용자 모드 프로세스는 다음과 같은 요소들로 구성된다.
- 시스템 지원 프로세스:
- 세션 관리자, 인증 서브시스템, 서비스 관리자, 로그온 프로세스 등과 같은 시스템을 관리하는 데 필요한 프로세스입니다.
- 서비스 프로세스:
- 프린터 스풀러, 이벤트 로거, 장치 드라이버와 협력하는 사용자 모드 구성 요소 등과 같은 네트워크 서비스와 같은 서비스를 제공합니다.
- 이러한 서비스는 마이크로소프트와 외부 소프트웨어 개발자가 시스템 기능을 확장하기 위해 사용됩니다.
- 응용 프로그램:
- 사용자가 시스템을 사용하는 데 필요한 기능을 제공하는 실행 파일(EXE) 및 DLL로 구성됩니다.
- 환경 서브시스템:
- 다른 운영 체제 환경을 제공합니다. (예: Win32 및 POSIX)

'Computer Science > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스 상태도 (0) | 2024.07.29 |
---|---|
[운영체제] 프로세스에 대하여 .. (0) | 2024.04.24 |
[운영체제] 분산 시스템과 Command-Interpreter System (0) | 2024.04.23 |
[운영체제] Multi-programming과 Timesharing (1) | 2024.04.23 |
[운영체제] 운영체제란 무엇인가 ? (0) | 2024.04.22 |