운영체제의 구조

원래벌레·2022년 9월 5일
0

🌞 커널의 종류

  • Monolothic kernal design ( 단일 구조 )
    커널 안에 운영체제에 필요한 모듈들을 다 가지고 있음

  • Microkernal design
    운영체제에서 필요한 모듈들이 유저단에서 가지고 있음
    커널에서는 최소한의 시스템만 가지고 있음

🌼 단일 구조 운영체제

  • 모놀리식 커널 구조

  • 운영체제의 모든 기능을 커널에 포함

  • 초기에 생겨난 가장 보편적 형태

  • 장점
    -> 자원 사용의 효율성

  • 단점
    -> 커널 크기가 커지면 버그나 오류의 원인 파악 어려움
    -> 기능 추가나 유지 보수 어려움
    -> 한 부분에서 발생한 문제로 시스템 전체에 심각한 영향 ( 악성코드로 피해 입기 쉬움 )
    -> ex) MS-DOS, 초기 Unix

🌼 계층 구조 운영체제

비슷한 기능을 수행하는 요소를 그룹화하여 계층적으로 구성

  • 운영체제가 점점 커지고 복잡해지면서 순수 단일 구조만으로는 다루기가 어려워진 문제를 해결

  • 장점
    -> 모듈화
    -> 각 계층의 설계나 구현 단순
    -> 각 계층의 거증과 오류 수정 용이 ( 위 아래층과 무관하게 수정되거나 교체될 수 있음 )

  • 단점
    -> 시스템 호출 한 번으로 서비스를 받는 단일 구조보다는 성능 낮음
    (사용자 프로세스의 요청을 수행할 때 여러 계층을 거치느라 다수의 호출 발생)
    -> 계층 나누기의 어려움

계층 나누기의 어려움

-> 각 계층은 하위 계층만 사용가능
-> 모든 함수간의 의존관계가 Directed Acyclic Graph(DAG)로 표현될 수 있어야 가능함
-> 가상메모리용 디스크의 디바이스 드라이버와 CPU 스케쥴러 간의 계층관계는?
(디스크의 디바이스와 CPU 스케쥴러는 서로 사용을 하는데, 하위 계층만 사용이 가능한데.. 이것을 어떤걸 상위 계층으로 잡아야 하는가..?)

순환의 문제가 발생 할 수 있음

🌼 마이크로커널 구조 운영체제

  • 커널은 최소 기능만 포함하고 나머지는 사용자 영역

  • 커널 영역
    -> 하드웨어 초기화, 메모리 관리(주소 공간 관리), 프로세스(스레드) 관리, 프로세스 간 통신,
    프로세스 간 협력 동기화 등 기본 기능만

  • 사용자 영역
    -> 네트워크 시스템, 파일 시스템, 장치 관리 등 나머지 대부분의 운영체제 구성 요소

  • 장점
    -> 모듈화 정도 높음
    -> 확장성 : 새로운 서비스는 커널의 변경이 필요 없이 사용자 공간에 추가
    -> 이식성 : CPU용량이 작은 시스템에도 적용 가능
    -> 보안성과 신뢰성이 높음 : 한 서버의 잘못된 수행이 서버와 커널에 영향 적음
    -> 커널 내부의 지연이 적고 예측 가능하여 실시간 시스템에 활용

  • 단점
    -> IPC(프로세스간의 통신)이 빈번하여 성능 저하
    커널과 서버들은 message passing으로 상호작용, 사용자 프로그램이 커널에 메시지를 전달하면, 커널은 해당 인터럽트(이벤트)를 처리하는 서버에게 메시지로 처리 요청

🌼 Hybrid 구조

  • 많은 현대 OS는 복합적인 구조이다. ( loadable kernel modules )로 구성

  • 여러 서비스가 모듈화 되어 있따는 면에서 마이크로 커널 구조와 유사하지만 그 모듈들이 커널안에 속하고 message passing이 필요 없음. -> 필요시 커널 안으로 적재

  • 커널이 모듈화되어 있다는 면에서 계층적 구조와 유사하지만 유연성이 높다.

  • 정해진 Interface로 모듈 간 통신


여러 프로세스들이 상하관계를 가진것이 아닌 하나의 독단적인 모듈로서 존재를 한다.

profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글