프로그램이 부팅되면 하드웨어가 커널 모드에서 시작하고 운영 체제가 로드되면 사용자 모드에서 사용자 애플리케이션을 시작한다. 하드웨어에 대한 보호를 제공하기 위해 커널 모드에서만 실행되는 특권 명령어가 있다. 사용자가 사용자 모드에서 특권 명령어를 실행하려고 하면 명령어를 불법으로 처리하고 OS에 트랩한다.
트랩이란 CPU가 프로그램에서 발생한 예외 상황이나 시스템 호출을 처리하기 위해 실행을 잠시 멈추고 커널 모드로 전환하는 소프트웨어 인터럽트이다. 트랩이 발생하면 현재 실행 중인 프로그램의 흐름이 하드웨어에 의해 중단되고, 제어가 운영 체제의 특정 핸들러 함수로 넘어간다.
그 예로 System Call, Exception, 등이 있다.
User mode
프로그램이 운영체제에서 부팅되면 사용자 모드에서 프로그램을 시작한다.
사용자 모드 프로그램이 실행을 요청하면 Window에서 프로세스와 가상 주소 공간(해당 프로세스의 주소 공간)을 만든다.
사용자 모드 프로그램은
Kernel mode
질문
커널 모드만 있으면 되지 왜 사용자 모드가 필요할까?
User mode
의도: project1 과 project2 차이를 말하고 싶은 거 같다. 그 이유는 이번 프로젝트는 유저 모드에서 시스템 콜을 호출해서 커널 모드를 사용하기 때문. + 이 프로젝트의 유저 가상 메모리는 가상 주소 0부터 KERN_BASE까지 커널 가상 메모리는 가상 주소 공간의 나머지 부분을 차지
Register vs Memory
User Stack
의도: PintOS에서 유저 스택의 크기는 고정되어 있지만, 프로젝트 3에서는 유저 스택의 크기는 가변적이다. 또한, 전통적으로 초기화 되지 않은 데이터 세그먼트의 사이즈는 시스템 콜에 의해 조정될 수 있지만, 구현할 필요는 없다. 는 관점에서 찾아보자.