커널이 주변장치를 지원한다는 건 무슨뜻인가요?

김대원의 이미지

제가 애기하고자 하는 내용과 관련된 글입니다.
url : http://bbs.kldp.org/viewtopic.php?t=26734&highlight=%C4%BF%B3%CE++%C1%F6%BF%F8+%C7%CF%B5%E5%BF%FE%BE%EE

>리눅스에서는 윈도우즈와는 달리 디바이스에 의존하지 않고 커널에 의한 모듈>관리로 의존한다고 할 수 있습니다.
>예를 들어 윈도우즈에서는 하드웨어를 사용하기 위해서는 디바이스 드라이버>의 계념이 빠져버리면
>그에 해당 되는 장치는 동작이 되지 않는다고 볼 수 있습니다.
>그리고 리눅스에서는 커널에서 해당되는 장치가 지원되지 않으면 동작되지 않>고 혹 지원이 된다 하더라도
>모듈을 상주시켜 주지 않으면 동작이 되지 않는다고 볼 수 있고요…
>그래서 리눅스에서는 윈도우와는 달리 커널 하드웨어지원 목록이 라는 것이 문>서화 되어 존재를 합니다.
>윈도우에서는 그냥 해당하는 드라이버만 설치하면 됩니다.
>리눅스에서는 만일 쓰고자 하는 하드웨어가 지원이 되지 않으면 해당되는 지원>이 되는 커널로 컴파일 하게 되지요…

제 생각엔 장치드라이버라는게 소프트웨어 컴포넌트처럼
요구되는 특정이름의 함수만 정의 해주면(혹은 요구되는 뭔가를 정의해주면)
장치드라이버가 실제 어떤 녀석을 제어하는가에 상관없이
커널은 장치드라이버를 통해 하드웨어를 제어할수 잇는거 아닌가요?

커널이 하드웨어를 지원한다는 의미는 도데체 뭘 말하는건가요?

--------------------------------------------------
:cry: 언제쯤 고수가 되려나 -_-;

lobsterman의 이미지

Quote:
제 생각엔 장치드라이버라는게 소프트웨어 컴포넌트처럼
요구되는 특정이름의 함수만 정의 해주면(혹은 요구되는 뭔가를 정의해주면)
장치드라이버가 실제 어떤 녀석을 제어하는가에 상관없이
커널은 장치드라이버를 통해 하드웨어를 제어할수 잇는거 아닌가요?

리눅스는 드라이버라는 계념에서 보면 /etc/module.conf 파일에서 커널에서 해당하는 장치를 호출합니다.
아마도 리눅스가 설치되어 있는 컴퓨터가 있으시면 그 파일을 잘 살펴보세요.
그에 해당되는 주변장치에 대한 커널 호출 관련 명령어 들이 있습니다.
만일 지원이 되는 하드웨어를 설치하였는데도 하드웨어가 동작되지 않으면
호환되는 모듈을 올리게 됩니다. 운이 좋으면 동작을 하지만 그렇지 안으면
그 하드웨어를 제작한 회사까지 전화를 걸어 그 하드웨어 대한 모듈정보를 알아 내야지만 리눅스에서는 하드웨어가 동작이 됩니다.
(하지만 제작회사에서도 이러한 스펙이 없는 경우가 흔합니다.)
보통 비디오 장치에 대한 관련 모듈은 이러한 상황까지 오게 되는 경우가 흔히 있습니다.
저 같은 경우에는 싸구려 TV카드 사용해서 1년동안 소리없이 TV를 시청한 적이 있는데…
1년 정도 걸려 운이 좋게 해당 모듈을 올린 경우가 있습니다.^^

무한한 상상력과 강한실행욕구는 엔지니어의 마지막 무기~

fibonacci의 이미지

이리저리 수정을 좀 합니다. 잘못쓴 내용이 있어서.

리눅스의 커널과 장치의 개념은 기본적으로 커널과 장치의 직접 대화방식입니다.
윈도우처럼 장치드리이버가 따로 있어서 커널과의 중재를 해 주는 방식이 아닙니다. 장치드라이버가 커널속에 들어간 것이라고 상상하면 됩니다. 장치드라이버를 커널속에 내장함으로서 퍼포먼스가 증가하는 대신 유연성이 떨어집니다.

흔히들 장치 드라이버와 모듈을 혼동하기 쉽습니다만, 모듈이라는 것은 커널이 너무 커져서 메모리를 낭비하는 것을 막기 위하여 커널의 일부를 작동시에만 동적으로 적재하도록 하는 개념입니다. 커널과 모듈은 같은 몸뚱이라고 생각해도 무방합니다. 결국은 장치드라이버란 것은 리눅스에서는 없습니다. 커널 내부에서 어떻게 장치가 인식되는가를 연구해야 갈 것입니다.

No Pain, No Gain.

fibonacci의 이미지

마이크로 커널과 모놀리틱 커널에 대하여 상세히 나와있습니다. 참조하세요.

http://linuxkernel.net/kernel/intro/#kernel04
http://cbbrowne.com/info/microkernel.html

No Pain, No Gain.

김대원의 이미지

솔로몬의 그것처럼..:D

명쾌한~ 설명였습니다.
정말 많은 도움이 됐습니다~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.