Process Model에서 프로세스별로 커널 스택이 있는 것 같은데 커널 스택의 용도가 뭔가요? 유저 스택의 경우 로컬변수나 함수파라미터를 전달하는데 사용되는데... 커널 스택이 Process 별로 하나씩 존재하는 이유가 뭐죠? 시스템 콜에서 사용하나요?
프로세스가 커널에 진입한 다음 함수 호출이나 지역 변수등을 보관하기 위해서 사용합니다. 사용자 모드에서 스택을 함수 호출과 지역 변수를 보관하는 데 사용하는 것과 마찬가지 용도입니다. 이때 스택의 내용은 무슨 함수가 어떻게 호출되느냐에 따라 달라지므로 사용자 스택과 커널 스택은 각각 프로세스마다 한개씩 있어야겠죠.
또, 사용자 모드와 커널 모드를 오갈 때 cpu 레지스터 값, 등을 저장해둡니다.
사용자 모드에서 커널모드로 떨어지게 될 때 커널모드 스택에 현재 사용자 cpu 레지스터등을 보관했다가, 다시 그 프로세스를 실행할 때가 되면 이것을 복원해주는 거죠...
울랄라~ 호기심 천국~!!http://www.ezdoum.com
텍스트 포맷에 대한 자세한 정보
<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]
프로세스가 커널에 진입한 다음 함수 호출이나 지역 변수등을 보관하기 위해
프로세스가 커널에 진입한 다음 함수 호출이나 지역 변수등을 보관하기 위해서 사용합니다. 사용자 모드에서 스택을 함수 호출과 지역 변수를 보관하는 데 사용하는 것과 마찬가지 용도입니다. 이때 스택의 내용은 무슨 함수가 어떻게 호출되느냐에 따라 달라지므로 사용자 스택과 커널 스택은 각각 프로세스마다 한개씩 있어야겠죠.
커널스택에...
또, 사용자 모드와 커널 모드를 오갈 때 cpu 레지스터 값, 등을 저장해둡니다.
사용자 모드에서 커널모드로 떨어지게 될 때
커널모드 스택에 현재 사용자 cpu 레지스터등을
보관했다가, 다시 그 프로세스를 실행할 때가 되면
이것을 복원해주는 거죠...
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
댓글 달기