인터럽트 처리 부분에 궁금한것이 있습니다.

chadr의 이미지

만약에 cli를 통해서 인터럽트를 금지 시켰을 때 인터럽트 요청이 들어올 경우에는 어떻게 처리되나요?
cpu가 인터럽트를 sti를 통해 재개 시키고 나면 금지 시켰던 동안 들어온 인터럽트가 차례로 들어오는지
아니면 인터럽트를 금지시켰을 때 들어온 인터럽트는 모두 무시 되는지 궁금합니다. x86의 경우 입니다.

또한 cli를 이용해서 인터럽트를 전부 중지시키는 것 보다는 pic의 레지스터를 통해서 선택적으로 인터럽트를
금지시켜도 되는지 궁금합니다.

만약에 pic의 레지스터를 통해서 선택적으로 인터럽트를 중지 시키면 인터럽트가 중지된 동안에 들어온 인터럽트
또한 추후 해당 인터럽트를 재개 했을때 연속적으로 밀린 인터럽트가 들어오는지 아니면 무시가 되는지 궁금합니다.

Hyun의 이미지

인터럽트는 보통 앞단에 펜딩 레지스터가 있고, 그 펜딩 레지스터를 마스크 레지스터를 이용해 마스킹을 한 다음 CPU쪽으로 전달합니다. 그래서 마스크 레지스터를 이용해 인터럽트를 활성화, 비활성화 시키죠.
인터럽트를 비활성화 시키더라도 펜딩 레지스터는 그대로 동작합니다. 마스크 레지스터를 이용해 인터럽트를 다시 활성화 시키면 펜딩 레지스터에 있는 인터럽트 신호가 그대로 CPU쪽으로 전달됩니다. 그래서 보통 마스크 레지스터를 설정하기 전에 펜딩 레지스터를 한번 지워주기도 합니다.
그리고, 보통 인터럽트 루틴에서 인터럽트 수행 후 인터럽트 컨트롤러의 펜딩 레지스터를 지워주는 루틴이 있습니다. 그 펜딩 레지스터를 지워주지 않고 인터럽트 수행을 끝내면 다음에 연달아서 해당 인터럽트가 걸리게 됩니다. 그렇기에, CPU의 STI 명령어 후에 인터럽트 컨트롤러에 펜딩 된 인터럽트가 인터럽트 우선순위에 따라 순서대로 호출되지 않을까 생각합니다.

참고로 x86의 상황은 잘 모르겠으며, 보통의 인터럽트 수행에 대한 얘기였습니다. 자세한건 해당 칩의 인터럽트 컨트롤러 문서를 보시는게 명확할 것 같습니다. 아니면, 다음분이... 자세히...


나도 세벌식을 씁니다

댓글 달기

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