커널영역과 가상메모리에 대한 질문

declspec의 이미지

안녕하세요 질문이 있습니다

1. 32비트 x86 아키텍쳐에서 4기가바이트의 가상메모리 주소공간을 각각의 프로세스가 가지고있고
이것이 MMU 에 의해서 실제 메모리주소로 변환이 되잔아요?
그렇다면 커널디바이스드라이버 코드에서는 어떻게 되나요?
커널 디바이스 드라이버 코드에서(윈도우든, 리눅스든 아니면 각자 다른가요?)
만약

int* p = (int*)0x12345678;
*p = 1;

이런 코드를 짠다면 저기서 0x12345678 은 실제 메모리주소가 되나요?
아니면 가상메모리 주소가 되나요?

접근 불가능한 메모리 주소가 되서 오류가 난다고 하더라도
그 구체적인 과정이 어떻게 되는지 궁금하네요...

2. 그리고 왜 저희가 일반적인 응용 프로그램을 짜면서
메모리를 사용할때는 메모리가 페이징 아웃 되는것을 걱정하지 않는데(자동으로 페이지 폴트처리가 되는데)
커널 디바이스 드라이버를 짤때는 페이징 문제를 걱정해야 하는건가요?
1번 문제의 해답을 알면 궁금하지 않게 될것같은데...
누가 구체적으로 알려주시면 감사하겠습니다.

ps. 가상메모리주소가 MMU 에 의해서 실제 물리주소로 변환되는것을 관장하는 디바이스 드라이버가 있나요?
ps2. malloc, memcpy, free 등의 메모리 관련 API 가 사용될때 그 sub system 에서 구체적으로
어떤 일들이 일어나는지 알고싶은데 어떤 책이나 문서를 참고해야 할까요??

익명 사용자의 이미지

1. 가상메모리 주소입니다. 디바이스 드라이버의 해당 코드가 실행되고 있는 쓰레드를 가지고 있는 프로세스의 가상 공간 주소입니다. 디바이스 드라이버는 자기 프로세스가 없고 응용들의 프로세스에 빌붙어서 코드를 실행합니다.
2. 걱정해야 합니다. 페이지 아웃되지 않아야 하는 메모리를 얻으려면 반드시 메모리를 할당할 때 Nonpaged Pool에 할당해야 합니다. 이 곳에 할당되면 시스템이 페이지 아웃 시키지 않습니다.
페이지 폴트를 걱정해야 하는 경우는 IRQL이 디스패치 레벨 이상인 경우입니다.

댓글 달기

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