커널 구조에 대한 질문

windows_jjang의 이미지

마이크로 커널과 모놀리식 커널 구조의 차이점에 대한 글을 읽었는데 이해가 잘 안되는 부분이 있어서 질문 드립니다.

글 본문 내용에서요

"마이크로 커널은 핵심적인 기능(스케줄링, 메모리관리 등) 만을 포함하고
나머지는 유저모드에 추가되는 식이다. 예를 들면 디바이스드라이버, 파일시스템은 유저모드에 들어간다."

라고 되어있었고, 마이크로 커널의 예시로 윈도우즈를 들었는데요.

1. windows에도 파일시스템과 디바이스드라이버가 전부 커널모드에 있지 않나요? ( 물론 유저모드랑 조금 나뉘지만요... 예를들면 pnp관리자가 usermode pnp 관리자 / kernelmode pnp 관리자 나뉘는 것처럼요)

뭔가 직관적으로 이해할만한 예시가 있을까요 ??

2. 리눅스에서는 드라이버 추가시 커널을 재빌드 한다고 하는데 정말인가요?
윈도우즈는 드라이버를 서비스처럼 등록해주는 것에 비해 리눅스에서의 드라이버 추가는 굉장히 큰 일 처럼 느껴지네요

3. 모놀리식 구조라면 커널의 크기가 상대적으로 클텐데, 임베디드 시스템에서 주 os로 리눅스기반을 선택하는 이유가 무엇인가요 ??

세벌의 이미지

리눅스 하는 사람들 많이 오는 곳에 windows_jjang 을 필명으로 들고 오시다니 파란만장하겠네요.

익명 사용자의 이미지

그런 거 신경 안 쓰는 사람도 있습니다.

저만 해도 Windows, 다양한 배포판의 Linux, MacOS, 안드로이드, iOS를 모두 일상생활과 업무에서 잘 사용하고 있고, 만약 이 중 하나라도 없어지면 매우 불편할 겁니다.

대체 이런 것에 과몰입해서 대립각을 세우는 사람들을 이해를 못하겠어요.
운영체제 전쟁이니 에디터 전쟁이니, 저는 농담인 줄 알았는데 진지하게 받아들이는 사람들도 있는 모양이더라고요.
세상에 편 갈라 싸울 만한 사안이 너무나 부족해서 보태 줘야겠다고 생각하는 모양이지요.

세벌의 이미지

뭔가 오해하신 것 같은데 내 말은 싸우자는 게 아닙니다.
편 갈라 싸울 일이 생길까봐 걱정을 한 거죠.
아주 사소한 게 불씨가 되어 큰 불이 난 걸 자주 보았거든요.

vagabond20의 이미지

스택오버플로우에는 무슨 답이든 있군요. 덕분에 배우고 갑니다.

Monolithic kernel is a single large process running entirely in a single address space. It is a single static binary file. All kernel services exist and execute in the kernel address space. The kernel can invoke functions directly. Examples of monolithic kernel based OSs: Unix, Linux.

In microkernels, the kernel is broken down into separate processes, known as servers. Some of the servers run in kernel space and some run in user-space. All servers are kept separate and run in different address spaces. Servers invoke "services" from each other by sending messages via IPC (Interprocess Communication). This separation has the advantage that if one server fails, other servers can still work efficiently. Examples of microkernel based OSs: Mac OS X and Windows NT.

더 자세한 내용은 이곳을 방문해 보시기 바랍니다.
https://stackoverflow.com/questions/4537850/what-is-difference-between-monolithic-and-micro-kernel

*
Copied from stackoverflow.com
(발췌내용이 문제가 된다면 지우겠습니다.)

여의도자바

세벌의 이미지

저는 궁금한 게 있을 때 키워드를 영어로 넣고 구글 검색하면 스택오버플로에서 잘 찾아주더군요.

같은 키워드라도 한글(예를 들어 computer 아니고 컴퓨터)로 치고 네이버에서 검색하면 틀린 얘기를 맞는 얘기라고 우기는 글이 자주 나오죠.

발췌내용이 문제가 될 건 없어보입니다.

windows_jjang의 이미지

궁금합니다.! 아니면 스택오버플로우 검색 키워드를 어떻게 작성해야할까요?

vagabond20의 이미지

오래된 UNIX/Linux 의 monolithic kernel 의 성능 대비, 계속 발전해온 micro / hybrid kernel 의 성능이 많이 (50% 느리던것이 2% / 4 % 느린정도로 향상) 따라 잡은것 같군요. 제가 리눅스와 윈도우즈를 지금까지 써 본 경험상 대체로 맞는 말 같습니다만, 그래도 아직은 리눅스가 좀 더 (대충 20~30% ?) 빠른것 같다는 생각입니다.

*
무엇인가 모르는게 있으면 무조건 '구글신' 께 물어봅니다, 간단한 영어로.
(위에서 세벌님께서 말씀하신 방식과 같습니다.)

이번 질문은 그냥 'microkernel Vs. monolithic kernel' 라고 쳐 넣었고, 검색결과중에 스택오버플로우로부터 나온 'What is difference between monolithic and micro kernel ...' 를 선택해서 들어가 본 겁니다.

만약 스택오버플로우에서 직접 검색했다면 조금 다른 검색결과가 나올 수 있습니다.
스택오버플로우가 검색기능에서는 구글을 못 따라간다는 느낌을 항상 받았습니다 (순전히 개인적인 느낌일겁니다).

여의도자바

AustinKim의 이미지

도움을 드리는 차원으로 질문에 간단히 답을 드리면요;

1. 윈도우 커널 개발자가 아니면, 직관적으로 예시를 들 수 있는 분이 있을런지 의문이네요.

2. 리눅스에서는 드라이버를 모듈 형식으로 빌드하면, 커널을 재빌드하지 않고 설치할 수 있습니다.
아마 insmod 란 명령어를 사용할꺼에요. 이를 서비스를 등록한다고 말할 수 있을런지는 모르겠네요.

3. 리눅스가 모놀리식 구조라서 사용되기 보다는 (현실적으로) 가격 대비 성능이 좋기 때문인 듯 합니다.
또한 무엇보다 개발자의 생태계가 리눅스로 자리 잡혀 있는게 가장 큰 이유인 것 같아요.

모놀리식 구조 관점으로 보자면, 몇 가지 커널 설정 파일을 만지면 대부분 디바이스에서 리눅스가 돌아가는데요.
요즘에는 욕토 프로젝트가 대세인데, 3~4개 정도 파일만 수정하면 리눅스 전체 배포판을 빌드할 수 있어요.

(개인블로그)
http://rousalome.egloos.com

windows_jjang!의 이미지

답변 정말 감사드립니다>!! 책 구매해서 리눅스 커널에 대해서도 공부할 예정입니다.!
윗 답변자분도 그렇고 .. 전문가에게 이런질문의 답을 얻을 수 있다는게 너무 기쁘네요
KLDP 너무 좋은 사이트 인것같아요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.