필자는 필자의 운영체제를 최종적으로 연구 중이며 왜 OS가 시스템 모드에서 커널 모드로 전환해야하는지 알려주고 있는지 궁금합니다.왜 syscall을 커널 모드로 전환해야합니까?
1
A
답변
3
syscall은 보안상의 이유로 일반 사용자 코드가 커널 모드에서 작동하도록 특별히 사용됩니다.
예를 들어, 메모리를 할당하려면 운영 체제가 페이지 테이블을 알고 다른 프로세스의 메모리에 액세스 할 수 있도록 권한을 부여 받았지만 사용자 프로그램이 허용되어서는 안됩니다 다른 프로세스의 메모리를 보거나 망칠 수 있습니다. 그것은 당신을 샌드 박싱하는 방법입니다. 따라서 운영 체제에 메모리 할당을 요청하는 시스템 호출을 보내면 커널 수준에서 발생합니다.
편집 :
커널 : 난 그냥 멀리 대답을하지 않습니다하지만 힌트를 제공 할 것이라고 Wikipedia article는 "숙제"태그가이 있기 때문에이
1
에 놀라 울 정도로 유용하다 지금 참조 컴퓨터의 하드웨어에 액세스하고 응용 프로그램이 서로 밟지 않도록해야합니다. 어떤 응용 프로그램이 커널의 협력없이 하드웨어 장치 (예 : 하드 드라이브)에 액세스 할 수 있다면 어떻게됩니까?
관련 문제
- 1. 커널 공간에서 Linux syscall을 호출하려면 어떻게합니까?
- 2. x86 W7에서 커널 모드로 실행
- 3. 스레드를 사용하려면 응용 프로그램을 수동으로 멀티 스레드 모드로 전환해야합니까?
- 4. 커널 모드 전환
- 5. syscall을 호출 할 때 프로세스 상태?
- 6. 지금 Rails 3으로 전환해야합니까?
- 7. 이것을 모듈로 전환해야합니까?
- 8. 왜 리눅스 커널 업그레이드 후 VM웨어 커널 모듈을 다시 컴파일해야합니까?
- 9. 리눅스에서 mutliple syscall을 사용하는 이유
- 10. VC++에서 커널 모드에서 사용자 모드로 정보를 전달하는 방법은 무엇입니까?
- 11. Windows에서 커널 모드로 PID (Process Indentifier)가 생성되는 방법은 무엇입니까?
- 12. CPU 사용자 모드에서 커널 모드로 전환 : 정확히 무엇을합니까? 어떻게 전환됩니까?
- 13. 어떤 프로그래밍 언어로 프로젝트를 전환해야합니까?
- 14. IIS7 URL 재 작성으로 전환해야합니까?
- 15. GRUB이 보호 모드로 전환합니까?
- 16. 시스템에 다른로드가없는 syscalls 차단 (Linux 커널)
- 17. 변경 커널
- 18. Windows는 어떻게 커널 모드로의 전환을 보호합니까?
- 19. 왜 파이썬은 바이너리 모드로 이미지를 읽을 수 없습니까?
- 20. iPhone 앱이 가로 모드로 실행됩니다. 왜 애매한 경고인가?
- 21. 왜 "Forms"인증 모드로 인해 LOGON_USER 서버 변수가 비어 있습니까?
- 22. setscheduler()는 리눅스 커널
- 23. 커널 API 또는 커널 API 사용
- 24. 커널 모듈
- 25. 커널 구성
- 26. CUDA 커널
- 27. 커널 개발
- 28. 커널 프로그래밍
- 29. 리눅스 커널 개발
- 30. 리눅스 커널 뮤텍스