2017-12-05 1 views
0

내가이 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에 액세스 할 수 있습니다.

답변

0

응용 프로그램에 I/O를 처리 할 필요가 없습니까? 의미, 오직 운영 체제는 이러한 종류의 일을 할 수있는 권한을 가지고 ...

내가 틀렸어?

0

책을 쓰레기통에 던지거나 고양이 상자에 줄을 지어 쓰십시오.

귀하의 명백한 역설은 당신이 I/O를 수행하는 커널 모드에 있어야 생각하지만 책은 말한다 :

"사용자 프로그램이 항상의 하위 집합 만 허용 사용자 모드에서 실행 지침 "

당신의 역설에 대한 해결책은 당신의 책이 말도 안되는 것입니다.

사용 프로그램이 항상 사용자 모드로 실행되는 것은 아닙니다. 커널 모드로 자주 실행됩니다. 운영 체제의 기본 기능 중 하나는 커널 모드에 대한 제어 된 액세스를 제공하는 일련의 커널 모드 시스템 서비스를 제공하는 것입니다.

다른 말로하면, 본능은 혼란스러운 책의 텍스트보다 낫습니다.

0

"사용자 모드"와 "커널 모드"의 의미를 이해하는 것이 중요합니다. 프로세스는 메모리 레이아웃에 따라 사용자 권한이있는 메모리 영역에 매핑됩니다.
커널 모드는 기본적으로 프로그램에서 원하는 작업 (I/O)을 수행하도록 호출되는 수퍼바이저 권한이있는 메모리 영역에있는 루틴입니다.

관련 문제