xv6-book (Ch2.3-Kernel organization)
커널 구조
핵심 설계 고려사항 중 하나는 운영체제의 어떤 부분이 커널 모드에서 실행되어야 하는지입니다.
전체 운영체제가 커널에 위치하여 모든 시스템 호출의 구현이 커널모드에서 실행되는 것을 모놀리식 커널이라고 합니다.
이러한 구성에서 전체 운영체제는 완전한 하드웨어 권한을 갖고 실행됩니다.
이는 운영체제 설계자가 운영체제의 어떤 부분이 완전한 하드웨어 권한이 필요하지 않은지를 경정할 필요가 없어 편리합니다.
모놀리식 구조의 단점은 운영체제의 다른 부분 간 인터페이스가 복잡하다는 것입니다. 모놀리식 커널에서 실수는 치명적인 결과를 초래할 수 있습니다. 커널이 실패하면 컴퓨터가 작동을 멈추고, 모든 응용 프로그램도 실패합니다.
커널에서의 실수를 줄이기 위해, 운영체제 설계자는 커널 모드에서 실행되는 운영체제 코드의 양을 최소화합니다. 대부분의 운영체제를 사용자 모드에서 실행할 수 있게 하는데 이를 마이크로 커널이라고 합니다. 위의 그림에서 파일 시스템을 사용자 수준 프로세스로 실행됩니다. 프로세스로 실행되는 운영체제 서비스를 서버라고 합니다. 응용 프로그램이 파일 서버와 상호작용할 수 있도록 하기 위해 커널은 사용자 모드 프로세스에서 다른 사용자 모드 프로세스로 메시지를 보낼 수 있는 프로세스 간 통신 메커니즘을 제공합니다.
마이크로 커널에서 커널 인터페이스는 응용 프로그램의 시작, 메시지 전송, 장치 하드웨어 접근 등과 같은 몇 가지 저수준 함수로 구정됩니다. xv6는 대부분의 유닉스 운영체제와 마찬가지로 모놀리식 커널로 구현되었습니다. 따라서 xv6커널 인터페이스는 운영체제 인터페이스에 해당하며 커널은 완전한 운영체제를 구현합니다.