BIOS调用在Linux操作系统中不可用。我想知道内核如何防止执行包含调用BIOS子例程的指令?Linux内核如何防止BIOS系统调用?
回答
的INTñ指令生成对目标操作数指定的中断或异常处理程序的调用。目标操作数指定从0到255的中断向量编号,编码为8位无符号中间值。每个中断向量号为IDT中的门描述符提供索引。
选定的中断描述符又包含一个指向中断或异常处理程序过程的指针。在保护模式下(linux只在保护模式下工作),IDT包含一个8字节描述符的数组,每个描述符都是中断门,陷阱门或任务门。
此IDT由操作系统设置。 Linux将其设置为使描述符指向自己的处理程序,而不是BIOS处理程序。
BIOS主要以16位模式提供,而不是Linux运行的32位或64位模式的x86。
Linux进程运行在user mode,使用virtual memory,它有自己的虚拟address space。
某些机器指令(特别是INT
,用于进入BIOS)有特权,因此无法在用户模式下运行。如果你尝试在用户模式下运行它们,处理器会产生一个机器异常,内核通过发送一些信号来处理它。 (某些INT
也用于系统调用,但SYSENTER
指令是首选)。
内核如何确定是否拒绝某个特定的中断? – KawaiKx
内核处理所有中断。它并不否认任何一个。 –
- 1. 冗余的Linux内核系统调用
- 2. Linux内核中的系统调用
- 3. Linux内核AIO,开放系统调用
- 4. 更改linux内核系统调用号
- 5. 如何禁止系统调用GNU/Linux
- 6. Linux内核模块(内核3.5)中的系统调用拦截
- 7. Linux阻止系统调用
- 8. 哪个进程在Linux内核中调用系统调用?
- 9. 需要帮助了解Linux内核的BIOS中断调用
- 10. 使用“int 0x80”进行Linux内核系统调用
- 11. Linux内核2.6中有多少系统调用?
- 12. linux内核中的系统调用表在哪里?
- 13. Linux内核3.3.4中的自定义系统调用
- 14. Linux内核中的系统调用错误处理
- 15. 在Linux内核3.3中添加一个新的系统调用
- 16. 在Linux内核源代码中执行系统调用/陷阱
- 17. 在linux 2.6.39.4内核中测试系统调用
- 18. Linux内核系统调用返回-1而不是{-1,-256}
- 19. 做一个简单的系统调用linux 2.6.39内核
- 20. 将系统调用添加到linux内核3.8.8
- 21. 在Linux内核寻找系统调用实现
- 22. Linux内核系统调用命名约定
- 23. 在系统调用中访问Linux内核的SuperBlock对象
- 24. Linux内核系统调用返回没有给出的指针
- 25. Linux内核操作系统寄存器
- 26. 没有内核的Linux文件系统
- 27. 如何防止评论系统滥用
- 28. Linux系统调用
- 29. linux内核模块阻止卸载文件系统
- 30. 在Linux内核3.x模块中如何计算与Kprobe的系统调用?
你的意思是在用户空间调用BIOS例程吗? – tristan
Linux并不公开irq,任何程序员都可以使用它,所以bios irq就是这样。 – icbytes