PC에서 부트로더에서 인터럽트관련 코드작성중에 질문입니다.

sjg0120의 이미지

OS수업을 마친후 지금 커널코드를 간단하게나마 연습삼아 짜보고있는데요
인터럽트 디스크립터 테이블과 서비스루틴까지 작성하고
이제 제대로 동작하나 확인할려고 인터럽트를 활성화 시켰는데
바로 인터럽트가 걸려버리네요;;; 인터럽트를 비활성화 시켰다가
다시 활성화 시킬때 걸리는 인터럽트도 있나요??
그후 인터럽트 명령어로 인터럽트를 발생시키면 정의해 두었던
인터럽트들은 제대로 동작합니다.
참고로 사용하는 어셈블러는 nasm입니다. 인터럽트를 활성화 시킬때 사용했던
명령어는 sti이구요...

익명사용자의 이미지

아마도 타이머 인터럽트 (INT 08h)일 겁니다. IRQ 0번이 8254 타이머 인터럽트인데 이게 INT 08에 매핑되어 있습니다. 사용하지 않는 인터럽트 벡터는 모두 IRET을 가리키게 해 두는 것이 안전합니다.

Necromancer의 이미지

BIOS에서 초기화를 끝내고 부트로더를 로딩할 때에는 IRQ가 아래와 같이 매핑되어 있습니다.

IRQ0~7 = INT 0x08~0x0F
IRQ8~15 = INT 0x70~0x77

타이머 인터럽트는 1초에 18.2씩 계속 발생합니다. 그래서 Enable과 동시에 들어오고요.
(타이머 설정에 따라 1초에 100번에서 1000번까지 나오게도 할 수 있습니다.
설정할려면 timer에 in, out 명령을 내려줘야 하고요. BIOS의 디폴트 설정치가 초당 18.2회죠.)

추가로 하드웨어 인터럽트(IRQ)는 I/O 명령으로 8259A칩의 설정을 바꿔서 막는것도 있습니다.
리눅스 커널소스를 보셨다면 port 0x20, 0x21, 0xa0, 0xa1으로 in, out 명영을 내리는 부분이 있는데
이부분이 하드웨어 인터럽트를 막고 푸는 8259A I/O 부분입니다.
리얼모드와 보호모드 간을 전환할 때는 위 두가지 방법을 병행해서 인터럽트를 막습니다.

Written By the Black Knight of Destruction

댓글 달기

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