내가이 OS 책을 읽고 있기 때문에 궁금하다.I/O와 같은 명령어가 사용자 모드에서 어떻게 작동합니까?
"사용자 프로그램은 항상 사용자 모드로 실행되며 명령어 [...]의 하위 집합 만 허용됩니다. 일반적으로 I/O 및 메모리 보호는 사용자 모드에서 허용되지 않습니다. OS에서 서비스를 얻으려면 사용자 프로그램이 시스템 호출을 만들어야합니다. 시스템 호출은 커널을 트랩하고 OS를 호출합니다. "
일반적으로 사용자 모드에서 I/O가 허용되지 않지만 입력을 요청하는 C++ 또는 Java 프로그램이 있다고 가정 해 봅시다. 또는 프로그램에서 검색 창과 같은 다른 것을 말하십시오. 검색 막대를 선택할 때마다 (즉, 무언가를 쓸 것임), I/O, 즉 키보드에 액세스 할 수 있으려면 OS를 호출하기 위해 TRAP 명령이 호출됩니다 (OS가 커널에서 실행되기 때문에)? 나는 내가 올바르게 따르는 지 또는 내가 무엇이 잘못되고 있는지 확실하지 않다.
사용자 모드에서는 I/O가 허용되지 않지만 OS의 응용 프로그램에는 입력을 사용하고 키보드 명령은 OS 자체에서도 사용할 수 있습니다. 언제든지 OS가 I/O 준비가되었음을 의미하는 키보드 명령을 사용할 수 있습니다. 그런 다음 사용자 모드에서 I/O 명령어에 대한 원래 문장을 허용하지 않습니다.
내 무지 때문에 유감이지만이 용어와 사용자와 커널의 차이점과 조금 혼동스러워합니다. 나는 OS가 커널 모드에서 실행되며, 응용 프로그램이 OS에서 실행된다는 것을 알고 있으므로 결국 응용 프로그램은 I/O에 액세스 할 수 있습니다.