中庸
article thumbnail

1. 운영체제 구조. 모놀리식과 마이크로

운영체제의 구조는 크게 두가지로 나뉩니다. 모놀리식커널 구조와 마이크로 커널구조입니다.

 

2. MonolithicKernel Architecture

모놀리식 커널 구조의 모습

 

모놀리식 커널구조에는 커널 내에 기능을 다 때려넣은 구조입니다. 각 기능들이 모두 커널 안에 들어있기 때문에 기능들간 통신, 호출하는 속도가 빠릅니다. 단점은 커널 안에 많은 기능이 들어있다보니 커널이 무겁습니다.

 

3. MicroKernel Architecture

마이크로 커널 구조의 모습

 

마이크로커널 구조는 모놀리식 형태와는 달리, 커널에 아주 핵심적인 기능(프로세스 관리, 기본적인 메모리 관리)만을 넣어두고, 나머지 부가기능들은 커널 위에서 돌아가는 프로세스(실행중인 프로그램)로 구현합니다.

 커널 안에 핵심적인 기능만 담아두기 때문에 커널이 가볍지만, 커널 밖의 부가기능들간 통신을 위해서는 커널을 통해 통신을 해야하므로, 모놀리식 커널에 비해 기능들간 통신, 호출의 속도가 느려지는 단점이 있습니다.

 하지만, 기능들이 프로세스로 구현되기 때문에 확장성, 이식성이 좋습니다. 만약 모놀리식 구조였다면 커널의 크기가 매우 크기 때문에 조금의 기능 수정을 하고 다시 빌드하려고 해도 많은 시간이 소요될 것입니다. 하지만 마이크로 커널 구조는 프로그램처럼 구현되기 때문에 그냥 프로그램을 고치는 것과 같습니다.

 

4. 대표적인 운영체제와 그것의 구조

4.1. Unix

 운영체제의 역사에서 유닉스의 등장은 큰 의미가 있습니다. 유닉스 이전의 운영체제들은 어셈블리어로 작성되어 하드웨어 종속적이었습니다. 즉, 새로운 프로세서가 개발되면 그에 맞추어 새로운 운영체제를 개발해야 했습니다. '어셈블리어로 작성하면 속도도 빠를거고 개발하면 되지 뭐가 문제야? ' 라고 생각할 수도 있지만 어셈블리로 코딩하는 것은 굉장히 속도가 느립니다. 운영체제의 개발속도가 느려지면 새로운 하드웨어 개발속도도 늦춰질 수밖에 없는 등 부작용이 많습니다.

 이런 문제점을 가지고, UNIX 가 개발되었습니다. 유닉스는 C 언어로 작성되어 하드웨어 종속적인 부분을 매우 많이 제거했습니다. (하드웨어 종속적인 부분이 극히 일부 존재하긴 한다고 합니다.)

 

다음은 유닉스의 구조입니다. 그림에서 볼 수 있듯이 유닉스는 모놀리식 커널 구조로 개발되어있습니다.

전통적인 유닉스 구조

 

5. Linux

리눅스는 리누스 토발즈가 개발한 공개된 유닉스를 바탕으로 개인용 PC 에 이식된 운영체제입니다. 지금까지도 리눅스는 많은 곳에서 사용되고 있습니다.

 

리눅스의 구조는 다음과 같습니다.

리눅스 커널 구조

 

6. Windows

윈도우즈는 MicroKernel 구조로 구현된 운영체제입니다. 지금은 많은 부분이 커널 안으로 들어가 모놀리식과 현저하나 차이가 없지만 기본적으로 마이크로 커널 구조의 컨셉을 따릅니다. 몇가지 System Support 기능과 서비스 기능 등이 User-Mode (OS 밖, 즉, OS 위에서 돌아가는) Process 로 구현되어 있습니다.

 

윈도우즈 커널의 구조는 다음과 같습니다.

윈도우즈 커널 구조

 

profile

中庸

@짱일모

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!