커널 스택 조사와 질문..

이종인 2011.04.03 18:51 조회 수 : 7013 추천:1

자세한 정보는 아래 글을 참조 하시면 될 것 같습니다.


커널 스택의 이용 : http://kldp.org/node/73308

커널 스택에 대한 기본적 정보 : http://blog.naver.com/puertok?Redirect=Log&logNo=140041524904



위의 정보를 종합해 보면


1. 커널 스택은 각 프로세스마다 할당 된다.( 일반적으로 2page, 8KB (1page가 4KB라면, 32bit 아키텍쳐 기준) )

    *커널 스택의 아래 부분에 thread_info 구조체 포인터에서 task_struct 구조체 포인터를 얻을 수 있다.

2. 유저 공간에서 커널 공간으로 넘어가면( system call 같은 )

    * 스택을 가르키는 esp 레지스터가 유저공간 stack 영역을 가르키다가 커널 스택을 가르킨다. (x86 아키텍쳐 기준에서)

      (커널 공간에서 수행하는 함수들이 이 스택에 쌓인다.)

    * 유저 공간에서 쓰였던 register값(해당 프로세스의 context 중 일부인 )들은 커널 스택 상위 pt_regs 부분에 저장된다.

3. 인터럽트 되는 경우, 경우에 따라서 현재 실행중인 프로세스의 커널 스택을 이용 한다.


저는 3번은 쉽게 와닿지가 않아요 ;;


제가 한 고민은 3번이 의미하는게 2가지 중 하나일 수 있다는 겁니다. (2.6커널 부터는 선점형 커널 이므로)

1. 커널 공간에서 실행 되다가 인터럽트 신호 받는 경우

2. 유저 공간에서 실행 되다가 인터럽트 신호 받는 경우


2번째 경우는 인터럽트 신호 받을 때 실행 하던 프로세스의 커널 스택을 사용하면 될 것 같은데

1번째 경우는 이미 커널 스택을 사용하던 상태에서 또 해당 커널 스택을 사용하는 걸까요 -_-;;


만약 그럴 경우에는 커널 공간에서 유저 공간으로 넘어갈 때 필요한 레지스트값들의 정보 뿐만아니라

인터럽트 영역을 실행하고 나중에 다시 커널 공간으로 복귀 할 때(커널 공간에서 선점되었으므로)필요한 레지스트값들을

또 해당 프로세스의 커널 스택의 pt_regs부분에 저장저장해야 할 것 같습니다. 여기까지 제 생각이네요..


너무 어렵게 생각 한건지 모르겠네요:D

하지만 예전 부터 궁금한 부분입니다.


아 그리고 혹시 궁금해 하는 분이 있을 것 같아서

스터디때 어느 분(ㅠ기억이 안나네요;;)께서 말씀 하신 사이트 입니다.

http://kernelnewbies.org/
리눅스 버전 업데이트시 무엇이 업데이트 되었는지 알려주는 사이트.
한 주간의 리눅스 소스에 대한 논쟁 거리 요약해서 알려줌.
(가난한 버전과 부자 버전? 이 있다.)


번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2200
1545 버디 알고리즘... 김범환 2007.11.11 7172
1544 책 왔네요. [1] 서정민 2010.11.08 7163
1543 [질문] 선점형 커널이란?? [4] 송형주 2007.09.11 7132
1542 [DKS - 011] Flattened Device Tree 박세율 2012.07.07 7108
1541 elf 의 실행... bin 의 실행... [4] 배병일 2010.04.14 7095
1540 Linux-ARM-Mailing List 게시판 링크 [5] 유경환 2011.08.23 7070
1539 BIG KERNEL 압축 해제 루틴 설명 자료 (2nd edition) file 지현구 2007.05.25 7067
1538 콜백 함수는... [8] 홍문화 2011.05.11 7065
1537 2진수, 16진수, 10진수 변환기 [1] file 맥주 2007.05.21 7039
1536 SMP 지원하는 u-boot source 주소입니다. [2] 박대원 2010.04.05 7023
» 커널 스택 조사와 질문.. [5] 이종인 2011.04.03 7013
1534 [소개] ARM core 강좌 김동혁 2010.04.16 6998
1533 이번주 1주년 파티?? [2] 노서영 2010.05.24 6996
1532 [ARM중] struct list_head 의 비밀 [2] 홍문화 2012.01.18 6979
1531 spinlock의 이해 [8] 홍문화 2011.04.17 6949
1530 nested interrupt 관련 참조 문서 유강희 2011.07.11 6910
1529 커널 압축 해제 루틴 설명 자료 [1] file 지현구 2007.05.19 6903
1528 [소개] Cortex-A8 프로세서 아키텍처 과정 런칭 세미나 [1] 김동혁 2010.05.06 6883
1527 ARM AP의 메모리관련 정보 [7] 서정민 2011.03.21 6882
1526 WIKI 페이지 생성했습니다. [1] 권기봉 2010.04.06 6879
XE Login