read()
시스템 호출을 사용하여 HDD에 액세스하는 것과 같이 사용자 공간에서 허용되지 않는 기능에 대한 액세스를 제공하는 시스템 호출이 있다는 것을 알고 있습니다. 또한 하드웨어간에 호환성을 제공하기 위해 fread()
과 같은 라이브러리 호출 형식의 사용자 모드 레이어로 추상화되어 있음을 이해합니다.리눅스 시스템 호출 및 커널 모드
그래서 응용 프로그램 개발자의 관점에서 우리는 뭔가가처럼;
//library //syscall //k_driver //device_driver
fread() -> read() -> k_read() -> d_read()
내 질문은, fread()
및 read()
의 모든 명령어를 내 프로그램에 직접 인라인하는 것을 중단하는 것은 무엇입니까? 지침은 동일하므로 CPU가 동일한 방식으로 작동해야합니까? 나는 그것을 시도하지 않았지만, 나는 이것이 실종되었다고 생각하는 이유로 작동하지 않는다고 가정한다. 그렇지 않으면 임의의 응용 프로그램이 임의의 커널 모드 작업을 수행 할 수 있습니다. 012 : DR : 시스템 호출이 응용 프로그램에서 복사 할 수없는 커널 모드에 들어가도록 허용하는 기능은 무엇입니까?
아아 그래서 재미있는 메모리 매핑이됩니다. 고마워요. 감사합니다. – lynks
사용자 모드 (대답 업데이트)에서 금지 된 권한있는 지침은 말할 것도 없습니다. – jlliagre
흠, 나는 스위치가 어떻게 발생하는지에 대해서 아직도 명확하지 않다. 왜 수동으로 '스위치 명령어'를 실행할 수 없는지?<*switch*>'쉘 코드, 커널 모드 실행을 얻지 못하는 이유는 무엇입니까? –
lynks