task_struct와 thread_info, kernel stack의 실제 가상공간에서의 질문

erdos의 이미지

안녕하세요.

리눅스 커널 이론에 관해서 공부하던도중 도무지 이해가 안가서 질문드립니다.

위 제목과 같은 질문입니다.

task_struct와 thread_info, kernel stack 이것이 실제로 가상주소공간의 커널 영역에 어떻게 위치하는지 모르겠습니다.

task_stuct 같은 경우는 실행단위가 생성될때마다 디스크립터가 형성된다고들었습니다. 그리고 그 디스크립터들은 환형 링크드 리스트로 구성된다고 하죠.

거기에 더불어 다른 필드를 이용하여 우선순위 별로 또다른 링크드 리스트를 구성하여 실행큐에서 참조한다고 알고 있습니다.

딱히 책에서는 언급된 부분을 찾을수 없지만 , 추측컨데 해당 task_struct가 커널 영역에서 단순히 하나만 존재하는 것이 아니라 시스템상에 존재하는 모든 실행중인 디스크립터들이

모두 올라와있다고 생각했습니다. <이것이 옳은 것인이 아닌지 궁금합니다.>

또한 커널 스텍과 더불어 thread_info 구조체가 8k 즉, 2페이지에 할당된다고 하던데, 자료를 찾아보니 이것도 커널 영역에 있더군요.

문제는 이것 같은 경우 위의 task_struct와 같이 여러개가 동시에 올라와있다고 추측할 만한 증거가 충분치 않습니다.

모두 올라와있어서 컨텍스트 스위칭할때 커널 스텍을 가르키는 포인터 값만을 바꾸는 것인지

아니면 페이지 아웃을 통해서 프로세스 영역을 내릴때 같이 내리고 교환하는 것인지 모르겠습니다.

그리고 커널 영역에서도 페이지 아웃되는 경우가 어느때인지 궁금합니다.

그리고 또 한가지 의문이 드는 것은

쓰레드 그룹과 프로세스 그룹입니다. 개념을 알아본 책이 리눅스 커널의 이해, 리눅스 커널 구조와 원리

이 두책인데 둘다 애매모호하게만 나와있고 정확하게 집합적으로 설명이 나와있지 않습니다.

서로간의 관계에 대해서 정확하게 비교해서 설명되있다면 명확했을 텐데 이랬다 저랬다 하는 표현 방식을

쓰니까 전혀 알아먹지 못하겠습니다...

도움 부탁드립니다.

shint의 이미지

저도 잘 모르니까. 책 밖에 알려드릴것이 없네요. ㅇ_ㅇ;;
태그를 하나씩 검색해서 떼다 붙이고 정리해서 완성된 문서와 링크를 드리고 싶지만.
말이 많네요. ㅡ_ㅡ;; 그냥 좋은 책과 강의 보시는게 좋을거 같습니다.

- 리눅스 커널 만들기 책
- 윈도우즈 원리와 구조 관련 책
- 개념을 알아본 책이 리눅스 커널의 이해, 리눅스 커널 구조와 원리

- OS 제작하기
- 64 비트 OS 제작하기
- 임베디드 OS 제작하기
- OLC 공개 강좌도 있습니다. http://olc.oss.kr/main.jsp

- 데브피아도 있으니까. 참고해보세요.
http://www.devpia.com/DevStudy/Lecture/allLecture.aspx?DzID=8

- 그리고... 너무 뻔해서 적지 않게 됐던. ㅡ_ㅡ... kldp 위키 문서...
http://wiki.kldp.org/wiki.php
오른쪽 위에 링크 있습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

댓글 달기

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