[완료] task_struct 에서 stack 값은 무엇을 가르키는 것인가요?
글쓴이: inamind / 작성시간: 목, 2010/05/27 - 2:03오후
안녕하세요.
제가 linux 의 특정 프로세스에서 task_struct 의 값을 보고 있습니다.
(struct task_struct*)0xDAE889C0 = 0xDAE889C0 -> (
state = 0,
stack = 0xD833A000,
usage = (counter = 2),
flags = 4194624,
ptrace = 0,
lock_depth = -1,
prio = 120,
...
stack 값이 다음과 같은데
stack = 0xD833A000,
cat /proc/[PID]/maps 로 보면 실재 stack 의 범위는 다음과 같습니다.
...
45a27000-45a37000 rw-s 800001d8000 00:0d 5196 /dev/pvrsrvkm
45a37000-45a47000 rw-s 800000fd000 00:0d 5196 /dev/pvrsrvkm
45a47000-45aa7000 rw-p 45a47000 00:00 0
45aa7000-45ae7000 rw-p 45aa7000 00:00 0
becf6000-bed2b000 rwxp befcb000 00:00 0 [stack]
그렇다면 task_struct 의 stack 의 값은 무엇을 가르키는 것인가요? 혹시 thread_info 인가요?
Forums:
커널 스택이요.
커널 스택이요. 쓰레드인포도 붙어있어요.
커널 스택이 프로세스마다 주소가 다른지요?
저도 그렇게 알고 있었는데,
프로세스마다 주소가 다르네요 ;;;
커널 스택이 프로세스마다 다른가요?
넵..
프로세스마다 각자의 커널 스택을 가집니다.
thread_info 구조체도 프로세스마다 별도로 있는거죠..
위에서 잘 설명해 주셨는데
정확히는 task 마다 커널 스택을 가집니다.
즉, 쓰레드(프로세스 포함) 마다 다른 커널 스택을 가집니다.
답변 감사합니다.
KLDP 멋지군요.
감사합니다. ^^
댓글 달기