size가 커져버린 kernel을 위해 GDT phase1에서 허가하는 size

kodol의 이미지

안녕하세요

소프트웨어를 kernel mode에서만 동작하도록 코딩하다보니
size가 커져버려서 7Mbyte를 넘어버리더니 bootstrap code를 수행하는 도중에 reset이 되어버리는데요..

kernel 책에는 GDT setup routine의 첫번째 phase에서
허가하는 영역이 0x100000 - 0x800000 인걸로 나왔는데요..

혹시 이 영역을 더 늘릴 수 있는 방법이 없나요?
아시고 계시는 분은 좀 가르쳐주시면 감사하겠습니다

익명 사용자의 이미지

kodol wrote:
안녕하세요

소프트웨어를 kernel mode에서만 동작하도록 코딩하다보니
size가 커져버려서 7Mbyte를 넘어버리더니 bootstrap code를 수행하는 도중에 reset이 되어버리는데요..

kernel 책에는 GDT setup routine의 첫번째 phase에서
허가하는 영역이 0x100000 - 0x800000 인걸로 나왔는데요..

혹시 이 영역을 더 늘릴 수 있는 방법이 없나요?
아시고 계시는 분은 좀 가르쳐주시면 감사하겠습니다


사용하시는 기종이 x86이라면, 그런 제한은 없습니다. 부트스트랩 루틴의 버그 같군요.
kodol의 이미지

x86 맞고요

이런 제한이 있는 건 맞습니다
Provisional kernel Page Table을 초기화시 linear address, physical address 8Mbyte 영역에 대해서 initialize한다고 Linux kernel
책(by Daniel P. Bovet & Marco Cesati)에 나오더군요..

그리고 실제로 bootstrap과 상관없이 전체 size가 8Mbyte를 넘어가느냐 마느냐에 따라서 죽고살고 있습니다

익명 사용자의 이미지

kodol wrote:
x86 맞고요

이런 제한이 있는 건 맞습니다
Provisional kernel Page Table을 초기화시 linear address, physical address 8Mbyte 영역에 대해서 initialize한다고 Linux kernel
책(by Daniel P. Bovet & Marco Cesati)에 나오더군요..

그리고 실제로 bootstrap과 상관없이 전체 size가 8Mbyte를 넘어가느냐 마느냐에 따라서 죽고살고 있습니다


그 제한은 부트스트랩 루틴에서 임의로 설정해 놓은 것이고, x86 구조 자체에는 8MB와 연관된 어떠한 제한도 존재하지 않습니다. 가령 책 1판에는 그 숫자가 4MB로 나옵니다. 4MB였다가 어느 순간 8MB로 점프했으니 다시 12MB로 점프하지 말란 법이 없겠지요. 다른 운영 체제에서는 커널을 0x100000-0x800000 영역이 아닌 부분에 로드하기도 하므로 꼭 그 부분만을 써야 한다는 제한도 물론 없습니다.
kodol의 이미지

그렇다면 그 임의로 설정해놓은 값을 바꾸려면 어떻게 하지요?
부트스트랩 코드를 들여다봤는데 마땅히 쎄팅해놓을만한데가 보이지 않는데요..
혹시 아신다면 말씀해주시겠어요?

댓글 달기

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