[[질문]] Call 명령ㅇ 내려졌을 때 스택의 모습
글쓴이: jungwook / 작성시간: 화, 2009/10/06 - 1:46오전
안녕하세요?
음 intel manual을 보면 call 명령이 내려졌을 때의 스택의 모습인데요.
유저 태스크가 콜게이트를 이용하여 커널 모드의 루틴을 불러내는 경우입니다.
커널 모드 스택의 모습
하위 주소
eip
cs
esp
ss
상위 주소
이런식의 모양이고 그리고 콜게이트에 지정된 커널 모드의 루틴 주소로 점프하고 실행을 하고 루틴을 마치고 돌아갈 때 ret명령이 내려지면서 커널 모드의 스택에
저장된 정보가 복원되고 다시 유저 모드로 돌아가는 걸로 알고 있습니다.
여기서 나머지 유저 모드에서 실행 중이던 유저 레벨 타스크의 정보들, 예를 들어 eflags, 범용 register들은 tss 영역에 저장이 되는 것인가요?
그리고 그 타이밍은 gall-gate descriptor로 접근시에 이루어지나요?
Forums:
...
ia32문서를 보면 다음과 같은 문구가 있네요.
When a call is made to an interrupt or exception handler procedure, the processor automatically saves the state of the EFLAGS registers on the procedure stack. When an interrupt or exception is handled with a task switch, the state of the EFLAGS register is saved in the TSS for the task being suspended.
정리하면 interrupt 나 exception으로 인한 call의 경우 task switch가 일어나고 Eflags 레지스터를 TSS에 저장해준다고 나와있네요
Dig it.
댓글 달기