task_struct와 thread_info, kernel stack의 실제 가상공간에서의 질문
안녕하세요.
리눅스 커널 이론에 관해서 공부하던도중 도무지 이해가 안가서 질문드립니다.
위 제목과 같은 질문입니다.
task_struct와 thread_info, kernel stack 이것이 실제로 가상주소공간의 커널 영역에 어떻게 위치하는지 모르겠습니다.
task_stuct 같은 경우는 실행단위가 생성될때마다 디스크립터가 형성된다고들었습니다. 그리고 그 디스크립터들은 환형 링크드 리스트로 구성된다고 하죠.
거기에 더불어 다른 필드를 이용하여 우선순위 별로 또다른 링크드 리스트를 구성하여 실행큐에서 참조한다고 알고 있습니다.
딱히 책에서는 언급된 부분을 찾을수 없지만 , 추측컨데 해당 task_struct가 커널 영역에서 단순히 하나만 존재하는 것이 아니라 시스템상에 존재하는 모든 실행중인 디스크립터들이
모두 올라와있다고 생각했습니다. <이것이 옳은 것인이 아닌지 궁금합니다.>
또한 커널 스텍과 더불어 thread_info 구조체가 8k 즉, 2페이지에 할당된다고 하던데, 자료를 찾아보니 이것도 커널 영역에 있더군요.
문제는 이것 같은 경우 위의 task_struct와 같이 여러개가 동시에 올라와있다고 추측할 만한 증거가 충분치 않습니다.
모두 올라와있어서 컨텍스트 스위칭할때 커널 스텍을 가르키는 포인터 값만을 바꾸는 것인지
아니면 페이지 아웃을 통해서 프로세스 영역을 내릴때 같이 내리고 교환하는 것인지 모르겠습니다.
그리고 커널 영역에서도 페이지 아웃되는 경우가 어느때인지 궁금합니다.
그리고 또 한가지 의문이 드는 것은
쓰레드 그룹과 프로세스 그룹입니다. 개념을 알아본 책이 리눅스 커널의 이해, 리눅스 커널 구조와 원리
이 두책인데 둘다 애매모호하게만 나와있고 정확하게 집합적으로 설명이 나와있지 않습니다.
서로간의 관계에 대해서 정확하게 비교해서 설명되있다면 명확했을 텐데 이랬다 저랬다 하는 표현 방식을
쓰니까 전혀 알아먹지 못하겠습니다...
도움 부탁드립니다.
OS 만들기 책이 있습니다.
저도 잘 모르니까. 책 밖에 알려드릴것이 없네요. ㅇ_ㅇ;;
태그를 하나씩 검색해서 떼다 붙이고 정리해서 완성된 문서와 링크를 드리고 싶지만.
말이 많네요. ㅡ_ㅡ;; 그냥 좋은 책과 강의 보시는게 좋을거 같습니다.
- 리눅스 커널 만들기 책
- 윈도우즈 원리와 구조 관련 책
- 개념을 알아본 책이 리눅스 커널의 이해, 리눅스 커널 구조와 원리
- 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
댓글 달기