리눅스 커널 스케쥴링에서 정책과 선점/비선점의 관계에 대해 문의드립니다.

neo2014의 이미지

리눅스 커널 공부하다가 헷갈리는게 있어서 문의드립니다.
스케쥴링 정책으로 SCHED_OTHER가 일반 프로세스의 스케쥴링정책이고 리얼타임으로 하고 싶으면 SCHED_FIFO로 설정을 하면 된다고 알고있었는데요

다음과 같은 내용을 보고 혼란이 생기고 있습니다.
"리눅스 커널은 선점형 기능을 제공하고 있으며 프로세스가 동작중에 인터럽트가 발생하면 해당 인터럽트핸들러가 수행된 이후에 선점스케쥴링이 수행된다." 라는 말을 책에서 봤는데요.
저는 선점 스케쥴링이 SCHED_FIFO로 설정한 프로세스일 경우에만 선점되는걸로 이해를 하고 있었는데 그게 아닌가요?

스케쥴링 정책(SCHED_OTHER이든 SCHED_FIFO)이 무엇이든 상관없이 인터럽트 수행 후 선점스케쥴링이 동작하는것인지요?

라스코니의 이미지

보다 상세하게 답변을 하기 위해서는 전체 문맥을 봐야 하겠지만 (위 내용으로는 검색이 안되네요)
현대적 OS 및 커널은 모두 선점 스케줄링(preemptive scheduling)이 가능하다고 보셔야 합니다. 여기에서 선점은 커널이 원할 경우 (그 요구가 커널 자체로 나왔던 유저에게서 나왔던, 또는 인터럽트에서 나오던지) 현재 실행되고 있는 thread(실)를 끊고 다른 작업을 할 수 있다는 의미입니다. 당연히 리눅스 커널도 선점형입니다.

SCHED_FIFO 와 SCHED_OTHERS는 모두 선점형에 기반을 두고 있으며 단지 유저가 볼 때 쓰레드에 대한 접근성이 다르다는 차이만 있습니다. 기본적으로 인터럽트가 발생하면 커널이 반응하고 인터럽트 내용에 따른 처리가 선점적 (지금 당장 실행되든, 스케줄링 큐에 쌓아두고 나중에 실행되든) 스케줄링에 의해 이루어지게 됩니다.

댓글 달기

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