Linux 커널에서는 Task Switching 이나, Paging이 어떻게 이루어

dgsquare의 이미지

OS를 공부하고 있는 학생입니다.
현재 보고 있는 책은 '만들면서 배우는 OS...' 이라는 한빛미디어의 책이구여- 여기 보면 CPU에서 지원하는 형태로의 Task switching이나, 직접 구현한 Task switching 이 각각 나와있습니다.
보다 보니 갑자기 궁금해진 내용이, Linux커널에서는 이러한 CPU의 기능을 사용해서 할지, 아니면 직접 다루는지 알고 싶어졌습니다. 각기 장단점이 있을 것 같은데여^^
커널 공부하신 분들은 잘 아실것 같은데, 대략적으로 어느정도 이용하는지 알려주셨으면 고맙겠습니다.
그 외 두가지 형태의 장단점에 대해서도 알려주시면 좋겠습니다.
그럼, 수고하세여-

ssehoony의 이미지

dgsquare wrote:
Linux커널에서는 이러한 CPU의 기능을 사용해서 할지, 아니면 직접 다루는지 알고 싶어졌습니다.

cpu 에서 지원하는 스케줄링이라...
무슨 내용인지 잘 모르겠군요.
혹시 선점형과 비선점형에 대한 이야기를 말 씀 하시는 걸까요?
(선점형은 하드웨의 지원이 있어야만 구현이 가능한데...)
이 질문이 맞다면 리눅스는 선점형입니다.
(비선점형이면 범용 OS가 될 수 없다고 봐도 될 듯 하네요.)

페이징 역시 하드웨어의 도움이 필요합니다.

http://kldp.org/Translations/html/The_Linux_Kernel-KLDP/The_Linux_Kernel-KLDP.html
의 3장 메모리와 4장 프로세스를 보시면 도움이 될 듯 하네요.

익명 사용자의 이미지

gdt같은걸 말씀하시는모양..

dgsquare의 이미지

예. gdt의 경우는 보호모드로 들어갈때 사용하므로 꼭 필요할 것 같구여.
제가 궁금한것은 TSS(TR Register)같은 i386이상에서 지원하는 기능을 그대로 쓰는지 아니면 따로 스택영역을 만들어서 그곳에 레지스터등의 정보를 저장하는지 여부입니다. 페이징의 경우도 x86에서 지원하는 cr3레지스터를 활용해서 하는지 알고 싶구요.
어디서 듣기로는 Linux에서는 여러 CPU의 호환성을 위해서 x86에서 지원하는 몇몇 기능들을 사용하지 않는 다고 알고 있는데여-

제 질문이 명확하지 않아서 혼동하신것 같네여. ^^;
ps) 돌도끼문서 잘볼께여. 찾아봐야겠습니다.

jiee의 이미지

커널 2.4버전에서는 task switching을 소프로웨어적으로 처리한다는군요.

그 이유로는,

* 일련의 mov명령어를 이용해 점진적으로 프로세스를 전환하면, 복구하는 데이터가 올바른지 더 확실히 통제할 수 있다. 특히 세그먼트 레지스터 값을 검사할 수 있다. 이런 종류의 검사는 간단히 far jmp명령어를 사용하는 경우에는 불가능하다.

* 이전 접근 방법을 사용할 때 걸리는 시간과 새로운 방법을 사용할 때 걸리는 시간은 거의 같다. 그러나 현재 프로세스 전환 코드는 앞으로 개선할 수 있지만, 하드웨어 context switching을 최적화하는 것은 불가능하다.
(리눅스 커널의 이해2판, p139)

그럼, 열공하세요~~ :)

토나오게...

댓글 달기

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