운영체제의 소프트웨어 구조(architecture)에 대해 알아보도록 하겠습니다.
이전 글에서 커널은 운영체제의 핵심 기능을 가지고 있는 부분이라고 했었습니다.
따라서 커널의 구조에 대해서 알아보도록 할 건데요.
커널의 구조로는 크게 모노리식 커널(Monolithic-Kernel) 구조, 마이크로 커널(Micro-Kernel) 구조 이렇게 두 가지가 있습니다.
모노리식 커널(Monolithic Kernel) 구조
모노리식 커널 구조란?
커널의 기능들이 커널 내부에 한 덩어리로 구현되어 있는 구조입니다.
위 그림은 모노리식 커널 구조를 보여줍니다.
모노리식은 단일체라는 의미입니다. 즉, 모노리식 커널이라는 것은 커널 소프트웨어가 한 덩어리로 모여있다는 뜻이죠.
그림에서도 확인할 수 있듯이 모노리식 커널에서는 커널의 기능들인 메모리 관리, 파일 관리, 프로세스 관리 등의 기능들이 모두 커널 내부에 구현이 되어 있고,
그 기능들은 서로 내부 Funtion Call(함수 콜)을 통해 정보를 주고받기 때문에 일의 처리 속도가 빠릅니다.
그렇기 때문에 모노리식 커널은 마이크로 구조로 만들어진 운영체제보다 실행 속도가 빠르기 때문에 컴퓨터 성능이 좋다는 장점이 있습니다.
하지만, 모노리식 커널의 단점도 있는데요.
소프트웨어가 모두 한 덩어리로 이루어져 있기 때문에 상대적으로 작은, 그러니까 커널의 모든 기능이 필요하지는 않은 운영체제를 필요로 하는 기기에 사용하게 된다면 메모리 공간이 낭비되게 됩니다.
또, 모노리스 커널에서 내부 코드를 수정하기 위해서는 전체 커널을 새로 컴파일하고, 시스템을 껐다가 다시 켜야하기 때문에 코드 수정이 어렵다는 단점도 있습니다.
모노리스 커널 구조로 만들어진 운영체제의 예로는 UNIX(유닉스)와 Linux(리눅스)가 있습니다.
마이크로 커널(Micro Kernel) 구조
마이크로 커널 구조란?
커널의 기능들이 운영체제의 외부에 구현되어 있는 구조입니다.
위 그림은 모노리식 커널과 마이크로 커널을 비교한 것이고, 그림의 S1, S2, S3는 운영체제의 기능들을 나타낸 것입니다.
그림을 보면 모노리식 커널에서는 S1, S2, S3가 모두 커널 내부에 구현되어 있고,
마이크로 커널에서는 커널 밖에 구현되어 있는 것을 볼 수 있죠.
원래 커널 내부에 있어야 할 기능들을 밖으로 뺐기 때문에 커널의 크기가 작아 마이크로 커널이라는 이름이 붙은 것입니다.
마이크로 커널은 커널의 크기가 작아서 작은 운영 체제를 필요로 하는 스마트폰이나 사물인터넷 장치 등에 효과적으로 사용할 수 있다는 장점이 있습니다.
그런데 모든 기능을 커널 밖으로 뺄 수 있는 것은 아닙니다.
하드웨어를 직접 제어하는 기능, 프로세스 메모리 영역을 보호하는 기능, 프로세스 스케줄링 등의 기능들은 마이크로 커널이라도 커널 내부에 꼭 남아있어야 합니다.
마이크로 커널에서는 운영체제(커널)의 기능들이 커널의 밖에 구현되어있기 때문에 응용프로그램처럼 운영체제의 위에서 프로세스의 형태로 실행되게 됩니다.
그래서 마이크로 커널에서는 꼭 필요한 기능들만 실행시키면 되기 때문에 운영체제를 커스터마이징 하기에 좋고, 메모리 공간을 줄일 수도 있습니다.
그리고 내부 코드를 수정해야 하는 경우에 마이크로 커널은 수정한 코드에 해당하는 기능만 새로 컴파일을 하고 다시 실행시키면 되기 때문에 전체를 다시 컴파일해야 하는 모노리식 커널과는 다르게 나머지 기능 또는 커널에는 전혀 영향을 주지 않습니다.
하지만, 마이크로 커널에도 단점은 존재하는데요.
위에서 모노리식 커널에서는 기능들이 서로 정보를 내부 Function-Call을 통해 주고받기 때문에 일의 처리 속도가 빠르다고 했었죠.
반면에 마이크로 커널은 기능들이 커널의 밖에 구현되어 있기 때문에 서로 정보를 주고받을 때 커널을 통해서 전달해야 합니다. 그래서 일의 처리 속도가 상대적으로 늦어지게 됩니다.
운영체제의 예시
1. UNIX
2. Linux
3. Windows
-> 개인용 pc나 서버와 같이 일반적인 목적으로 사용하는 컴퓨터에는 UNIX, Linux, Windows가 많이 사용됩니다.
4. Operating Systems for mobile devices
-> 모바일 디바이스의 운영체제로는 안드로이드와 IOS가 많이 사용됩니다.
cf) 안드로이는 그 자체가 운영체제는 아닙니다. 밑에 리눅스 커널이 있고 그 위에서 운영체제의 기능들을 별도로 구현한 것입니다.
5. Real time OS
-> 어떤 상황이 발생했을 때 그것을 빨리 감지하고, 정해진 시간 이내에 처리를 해야한다는 특징을 가진 컴퓨터입니다.
-> ex) 의료기기
6. Operating Systems for embedded systems
-> 내장형 시스템의 운영체제는 일반 pc에서 사용되는 운영체제와는 기능의 범위가 다릅니다. 더 안전하고 정확하게 조작할 수 있고, 신속하게 반응할 수 있도록 기능이 강화되어 있습니다.
-> ex) 냉장고에 들어가는 컴퓨터
UNIX
유닉스는 서버 컴퓨터에서 주로 사용되는 운영체제로, 현재도 서버 컴퓨터 운영 체제로 널리 이용되고 있습니다.
1969년에 AT&T 벨 연구소에서 개발된 운영체제입니다.
처음에는 어셈블리어로 개발되었지만 이후에 데니스 리치가 팀에 합류하며 C언어로 UNIX를 다시 작성했습니다.
UNIX가 등장하기 이전에는 컴퓨터 제조사가 하드웨어와 운영체제를 모두 개발해서 판매해야 했었습니다.
그러다보니 하드웨어가 변경될 때마다 운영체제를 새로 구현하고 포팅하는 작업을 해야했고, 시간과 비용이 많이 든다는 어려움이 있었습니다.
그런데 UNIX에서는 운영체제가 High Level Language인 C언어로 작성되었기 때문에 하드웨어가 달라져도 C언어로 작성된 소프트웨어를 새로 컴파일만 하면 쉽게 하드웨어 위에 포팅할 수 있게 되었습니다.
이렇게 운영체제의 역사에 혁신적인 변화를 가져온 UNIX는 당시 AT&T 회사가 규정때문에 컴퓨터 사업에 진출할 수 없었기 때문에 학교나 연구소에 연구용으로 무료로 배포되었습니다.
그래서 UNIX는 계속해서 그 기능이 발전되어 현재까지 오게된 것입니다.
위 그림에서 왼쪽은 UNIX의 구조를, 오른쪽은 UNIX 커널의 내부 구조를 나타낸 것입니다.
UNIX는 모노리식 커널 구조인 것을 알 수 있습니다.
그리고 UNIX의 구조를 보면 커널과 응용프로그램 사이에 System Call이 있는 것을 볼 수 있는데요.
이렇게 System Call이 커널을 감싸고 있기 때문에 응용프로그램에서는 커널을 직접 보지 못하고 System Call을 통해서만 명령을 전달할 수 있는 것입니다.
✔️ System Call은 응용 프로그램들이 운영체제를 사용할 수 있도록 인터페이스 역할을 하는 함수들의 집합입니다.
Linux
UNIX가 널리 이용되게 되면서 사람들은 UNIX 운영체제를 개인 pc에서도 사용하고 싶어했습니다.
그래서 pc용 UNIX를 만들기 위한 연구들이 일어났고, 리누스 토발즈가 UNIX 커널을 재설계해서 Linux 커널을 구현했습니다.
그리고 후에 자신이 만든 소스를 공개해 많은 개발자들이 Linux 커널을 개발하는데 참여했고, Linux는 오늘 날에 고성능 운영체제로 pc와 서버 모두에 널리 이용되고 있습니다.
위 그림은 Linux 커널의 내부 구조도인데 UNIX와 같이 모노리스 커널 구조를 가지고 있습니다.
리누스 토발즈가 빠른 실행 속도를 목적으로 Linux를 개발했기 때문에 모노리스 커널 구조를 사용한 것입니다.
Windows
Windows도 PC에서 많이 사용되는 운영체제입니다.
Windows의 특징은 UNIX, Linux와는 달리 마이크로 커널 구조를 가진다는 건데요.
그렇기 때문에 위 그림에 보이는 것처럼 운영체제의 기능들이 애플리케이션처럼 User Mode(사용자 모드)에서 실행됩니다.
'운영체제' 카테고리의 다른 글
혼자 공부하는 컴퓨터구조 + 운영체제 8장 정리 (0) | 2024.03.31 |
---|---|
[운영체제] 프로세스의 정의와 프로세스의 상태 (0) | 2023.04.05 |
[운영체제] 운영체제의 구성 (0) | 2023.04.03 |
[운영체제] Timesharing (0) | 2023.04.02 |
[운영체제] Multi Programming vs Multi Processing (0) | 2023.04.02 |