Tôi đang đọc về trình điều khiển thiết bị Linux, nơi nó được đề cập rằng hạt nhân chạy trong chế độ đặc quyền mà cung cấp cho nó truy cập không hạn chế cho tất cả H/W. Làm thế nào để ngăn chặn một chương trình người dùng thiết lập CPU ở chế độ này?hoặc thay đổi chế độ xử lý, trạng thái CPU, mức độ đặc quyền của CPU?
Trả lời
Nếu bạn muốn hiểu nội dung này, một trong những cách tốt nhất để tiếp cận nó là làm theo quy trình khởi động Linux Kernel Boot Process thông qua mã. Ví dụ: giả sử bạn sử dụng Linux chạy trên kiến trúc x86. Điều gì xảy ra khi khởi động là BIOS cung cấp điều khiển cho bộ nạp khởi động. Bộ tải khởi động trong tern cho phép điều khiển hạt nhân.
Nhân sau đó sẽ trải qua quá trình khởi động. Ban đầu hầu hết các nội dung được viết bằng ngôn ngữ assembly - xem /arch/x86/boot/header.S
Sau đó, nó đến /arch/x86/boot/main.c. Ngay ở phần cuối của các chức năng chính bạn sẽ thấy cuộc gọi đến go_to_protected_mode()
Bạn có thể thấy chức năng đó trong /arch/x86/boot/pm.c
Vì vậy, một khi bạn khởi động vào hạt nhân, nó trở thành cổng cho CPU, và mã của bạn chạy trong máy ảo được cung cấp bởi nhân. Các chương trình người dùng bị ngăn không cho chạy trong các chế độ khác bởi thực tế là họ phải làm mọi thứ thông qua máy ảo này.
Chế độ người dùng chỉ có thể thay đổi chế độ đặc quyền của nó bằng cách tạo một số loại ngắt. Có vẻ như mục đích của ngắt là thay đổi chế độ đặc quyền của chương trình. Kết luận: Bằng cách ngắt chính nó, chương trình chế độ người dùng không thể nâng cao đặc quyền và tiếp tục chạy mã riêng .... Đó là cách bảo mật tuyệt vời này cơ chế hoạt động.
Billmic
- 1. Điều gì quyết định mức độ đặc quyền của quy trình?
- 2. Chạy tác vụ ở chế độ nền với mức ưu tiên CPU thấp hơn
- 3. Chế độ trạng thái phiên asp.net "SQLServer"
- 4. Xử lý ngoại lệ CPU trong C++
- 5. zsh vi trạng thái chế độ dòng
- 6. Giám sát nhiệt độ CPU
- 7. Thêm mức quyền đối tượng vào chế độ xem chung
- 8. CPU Sử dụng cao cho ngủ xử lý
- 9. Trạng thái mức/trạng thái Pygame
- 10. Hạn chế thực tế của bộ nhớ JVM và mức sử dụng CPU?
- 11. Lấy nhiệt độ CPU bằng Python?
- 12. Mức độ tương tác khác nhau của trạng thái trong haskell
- 13. Cách quản lý quá trình xử lý CPU trên máy chủ
- 14. Ứng dụng MDI tiêu thụ 100% cpu ở chế độ chờ
- 15. Chế độ xem được ủy quyền hoặc Chế độ xem cấu hình được ủy quyền?
- 16. Tìm mức sử dụng CPU của ứng dụng trên Android
- 17. Xcode Debugger - làm thế nào để bước duy nhất ở mức độ hướng dẫn CPU
- 18. Cách thay đổi chế độ ủy quyền SQL Server mà không cần Quản lý Studio
- 19. Độ trễ trong hoạt động thay đổi trạng thái AMD PowerNow là gì?
- 20. thay đổi mức độ ưu tiên của chuỗi gốc trên Android bằng c/C++
- 21. Khi nào có quyền sử dụng Chế độ xem thay vì Chế độ xem?
- 22. Mức độ liên quan đến CPU trên máy Mac 10.6+ và Xcode 4+
- 23. Apache sử dụng CPU quá mức
- 24. Xử lý trạng thái xem trong Silverlight với MVVM
- 25. Kỹ thuật tốt để xử lý thay đổi trạng thái và trạng thái trong phát triển trò chơi là gì?
- 26. Thay đổi độ mờ trong trạng thái được nhấn của hình ảnh
- 27. Xử lý các tệp chế độ org trong python
- 28. Hướng dẫn CPU trên máy đa vật lý-cpu
- 29. Giới hạn tải CPU hoặc quy trình thiết lập độ tuổi
- 30. Cách xử lý các thay đổi hiển thị cho chế độ xem/widget tùy chỉnh android