시스템 콜에 의한 컨텍스트 스위칭
글쓴이: voider / 작성시간: 금, 2005/04/08 - 6:11오후
전 이제까지 응용 프로그램에서 시스템콜을 하면 커널모드로 넘어가면서
커널에 관련된 컨텍스트로 컨텍스트 스위칭이 되는주 알고 있었거든요
그런데 ldd 를 보고 있는데 그게 아니라는 생각이 드네요
유닉스는 시스템콜과 하드웨어 인터럽트를 이용해서 사용자 공간에서 커널 공간으로 진입한다. 시스템 콜을 수행하는 코드는 프로세스의 문맥속에서 작업한다 - 이것은 자신을 호출한 프로세스를 위해서 동작하며 프로세스의 주소 공간에 있는 데이터에 접근할수 있다.
이말은 응용 프로그램에서 시스템콜이 일어나도 그 컨텍스트 그대로 커널 코드가 실행된다는 말인가요?
움.... 만약 그렇게 된다면 컨텍스트는 그대로 사용되지만 레벨만 커널 모드로
바뀌는 건가요.... 그렇게 하는것이 더 나을 듯도 하네요... 흠흠
그러면 인터럽트에 의한 코드만이 원래 커널용으로 만들어진 프로세스에서 돌아가는건가...... 에고.
Forums:
시스템콜은 소프트웨어적인 인터럽트를 발생시켜서 해당 인터럽트 핸들러를
시스템콜은 소프트웨어적인 인터럽트를 발생시켜서 해당 인터럽트 핸들러를
수행시키는 결과를 낳습니다. 시스템콜을 하는 순간 모드는 커널모드입니다.
근데 컨텍스트는 커널부터 현재의 Process 까지가 되겠지요,
모든 프로세스는 커널주소공간을 공유하고 있으니 별도의 커널으로의 Context
Switch는 없는것.
^^ be cool ~
http://fromdj.pe.kr
[quote="zoocmic"]모든 프로세스는 커널주소공간을 공유하고
모든 프로세스가 커널 주소 공간을 공유하고 있다는 말은 무슨 말입니까?
제가 알고 있기론 유저 프로세스는 커널 주소 영역에 접근 할수 있는 방법이 없는걸로 알고 있는데요..
제가 틀리게 알고 있었나요?
-- 아쉬운 하루 되세요 --
Yes. User process can't access the kerne
Yes. User process can't access the kernel address area directly.
But, It have the space in there. just can't do that. It means,
The Process have 4GB address space. and It's half (2GB) is Kernel area and other half is his own. It makes the process can
share the kernel service easily. the only way the user process
can access the kernel is the system call method.
^^ be cool ~
http://fromdj.pe.kr
댓글 달기