내부구조 책을 보다가 "프로세스 문맥" 과 " 시스템 문맥" 이라는 말이 나오는데요
"커널모드" "사용자모드" 와 더불이 이 4개를 같이 비교하더군요...
context switch 의 해석을 이책에서 문맥교환으로 하는걸로 봐서
감은 오는데 정확하게 무슨말인지 모르겠습니다.
제가 발표를 해야하는데, 이해하기 쉽게 알려주시면 감사하겠습니다.
문맥...-_-;;; ...쩝...
저도 한때 관심을 가져서 열심히 보던 부분인데, 막상 설명을 드리려니 힘들군요 ^^;
워낙 장황한 내용인지라...
일단 커널 모드와 사용자 모드라는 것은 간단하게는 현재 실행되고 있는 코드가 커널 주소공간에서 실행되는지, 사용자 주소공간에서 실행되는지 차이라고 보면 될것 같습니다. 즉, 일반 사용자 응용 프로그램 프로세스가 사용자 주소공간에서 실행되다가, 시스템콜을 실행해야할 경우 커널 모드, 즉 커널 주소공간으로 진입합니다. (사용자 프로세스가 커널 주소공간으로 진입할 수 있는 유일한 방법은 시스템 콜 밖에 없다는 걸 아시죠? ^^;) 이후 부터는 시스템 콜이 커널 모드에서 실행이 되게 됩니다. 이 시스템 콜이 실행을 마친 후 최종적으로는 해당 시스템 콜을 호출한 사용자 응용 프로그램으로 결과값을 반환해야하겠지요. 이때 고려해야하는 것이 사용자 프로세스의 문맥입니다. 즉, 시스템 콜이 커널 내부에서 실행되는 동안 어떤 사용자 프로세스에서 호출된 시스템 콜인지 잘 기억을 하고 있어야 겠지요. 더불어 해당 사용자 프로세스의 상태등도 알아야할테구요. 저는 이게 바로 사용자 프로세스의 문맥을 고려해서 반환되어야 한다는 걸로 이해하고 있습니다. 부수적으로 시스템 콜의 결과값이 반환되기 전에 커널은 스케줄링이나 시그널 처리, 등등의 작업을 수행하게 됩니다. 보다 자세한 내용은 "Understaning the linux kernel"의 시스템 콜 부분이나 주소공간과 관련된 내용을 읽어보시는 것이 도움이 될 것 같습니다.
제가 말씀드린 부분중에 잘못된 부분도 있을 수 있으니 100% 신뢰하지는 마시길... 아마 kldp의 고수님들이 더 정확한 답변을 해주실것으로 기대합니다. ^^
저도 한때 관심을 가져서 열심히 보던 부분인데, 막상 설명을 드리려니 힘
저도 한때 관심을 가져서 열심히 보던 부분인데, 막상 설명을 드리려니 힘들군요 ^^;
워낙 장황한 내용인지라...
일단 커널 모드와 사용자 모드라는 것은 간단하게는 현재 실행되고 있는 코드가 커널 주소공간에서 실행되는지, 사용자 주소공간에서 실행되는지 차이라고 보면 될것 같습니다. 즉, 일반 사용자 응용 프로그램 프로세스가 사용자 주소공간에서 실행되다가, 시스템콜을 실행해야할 경우 커널 모드, 즉 커널 주소공간으로 진입합니다. (사용자 프로세스가 커널 주소공간으로 진입할 수 있는 유일한 방법은 시스템 콜 밖에 없다는 걸 아시죠? ^^;) 이후 부터는 시스템 콜이 커널 모드에서 실행이 되게 됩니다. 이 시스템 콜이 실행을 마친 후 최종적으로는 해당 시스템 콜을 호출한 사용자 응용 프로그램으로 결과값을 반환해야하겠지요. 이때 고려해야하는 것이 사용자 프로세스의 문맥입니다. 즉, 시스템 콜이 커널 내부에서 실행되는 동안 어떤 사용자 프로세스에서 호출된 시스템 콜인지 잘 기억을 하고 있어야 겠지요. 더불어 해당 사용자 프로세스의 상태등도 알아야할테구요. 저는 이게 바로 사용자 프로세스의 문맥을 고려해서 반환되어야 한다는 걸로 이해하고 있습니다. 부수적으로 시스템 콜의 결과값이 반환되기 전에 커널은 스케줄링이나 시그널 처리, 등등의 작업을 수행하게 됩니다. 보다 자세한 내용은 "Understaning the linux kernel"의 시스템 콜 부분이나 주소공간과 관련된 내용을 읽어보시는 것이 도움이 될 것 같습니다.
제가 말씀드린 부분중에 잘못된 부분도 있을 수 있으니 100% 신뢰하지는 마시길... 아마 kldp의 고수님들이 더 정확한 답변을 해주실것으로 기대합니다. ^^
댓글 달기