System call 도 Interrupt 인가요??

jsharp의 이미지

음.. 프로그램도 초보고 KLDP 도 초보입니다..;;;
여기다가 이런 글을 쓰는게 맞는건지도 모르겠네요...

음.. System call 은 Application에서 Kernel로 접근하는 거고..
Interrupt는 주로 하드웨어에서 Kernel로 접근하는 거니까..

또 처리루틴도.. Interrupt가 발생하면 그 전에 하던일을 멈추고 interrupt를 처리하게 되지만
System call이 호출되는건 Application에서 접근하는것이니까 Scheduler에 선택되고 나서 처리가 되는거니

두개가 당연히 다른거다.. 라고 생각했는데

IDT(Interrupt Description Tabel)을 보니까 0x80에 System call 이 있네요..
System call도 Interrupt의 한 부분인건가요??

또 Interrupt나 System call이나 처리과정에서 다른 Interrupt가 발생하지 못하도록 막는 과정이 있잖아요.
그럼 그 사이가 비록 짧은 시간이긴 하지만 그 사이에 Interrupt가 발생하면
무시되게 되는건가요? 아니면 어디 Queue 같은곳에 쌓이게 되나요?

wish의 이미지

인터럽트에는 컨텍스트가 유지되는 인터럽트가 있고, 유지되지 않는 인터럽트가 있습니다. 이게 명칭을 붙이기 나름인데 인텔의 경우는 전자를 예외, 후자를 인터럽트라고 부르고 있다고 합니다(Understanding linux kernel에서)

예를 들어,

1) 시스템 콜을 호출한다거나, 0으로 나누는 명령이 떨어진 등등은 현재 프로세스 컨텍스트를 유지할 수 있고,
2) 하드웨어에서 들어온 인터럽트 같은 것들은 프로세스 컨텍스트를 유지할 수 없습니다.

그런데, CPU는 이 둘을 비슷한 메커니즘으로 처리하기 때문에 IDT에 시스템 콜도 들어가 있습니다. 커널 입장에서는 다르게 처리할 수도 있지만, CPU 입장에서는 거의 동일하게 처리되는 거죠.

음 다시 책을 찾어보니 전자를 동기적 인터럽트라고 하고, 후자를 비동기적 인터럽트라고 되어 있네요(역시 Understading linux kernel에서)

Quote:

또 처리루틴도.. Interrupt가 발생하면 그 전에 하던일을 멈추고 interrupt를 처리하게 되지만
System call이 호출되는건 Application에서 접근하는것이니까 Scheduler에 선택되고 나서 처리가 되는거니

예 그렇습니다. 그런데 유저 모드에서 커널 모드로 전환하려면 결국 특정 CPU 인스트럭션이 필요하고 이 인스트럭션은 현재 유저 주소 공간에 있는 실행 코드가 아닌, 커널 주소 공간에 있는 실행 코드로 실행 경로를 "점프시켜야" 합니다. 그냥 점프를 하면 보호 모델이 깨지는 것이므로, CPU에 인터럽트를 걸어야 하는 거죠. 굳이 인터럽트가 아닌 다른 방법을 고안하겠다고 한다면 못 할것도 없습니다만, 하는 짓이 일반적인 인터럽트와 비슷하니까요.

jsharp의 이미지

감사합니다 >_<

댓글 달기

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