Doo*_*Doo 3 operating-system kernel processor system-calls
系统调用 - 它是一条指令,它产生一个中断,使OS获得对处理器的控制.
因此,如果正在运行的进程发出系统调用(例如,创建/终止/读/写等),则会产生一个中断,该中断会导致KERNEL对控制器进行控制,然后处理器执行所需的中断处理程序.正确?
然后任何人都可以告诉我处理器如何知道该指令应该阻止进程,进入特权模式,并带来内核代码.
我的意思是作为程序员,我只需键入stream1 = system.io.readfile(ABC)或其他东西,转换为打开和读取文件ABC.
现在监控这个过程执行的是什么,cpu中有一个神奇的力量来检测这个?
从我读过的内容来看,一个处理器一次只能执行一个进程,那么监视程序运行在哪里?
如果在不运行状态下进行系统调用,KERNEL如何监控!
或计算机是否有一个系统调用指令表,它与执行任何指令之前进行比较?
请帮忙
感谢你
内核不监视检测系统调用的进程.相反,该过程会生成一个中断,将控制转移到内核,因为这是软件生成的中断根据指令集参考手册执行的操作.
例如,在Unix上,进程填充系统调用号eax并运行一条int 0x80指令,该指令生成中断0x80.CPU通过查看中断描述符表来查找该中断的内核处理程序,从而对此作出反应.此处理程序是系统调用的入口点.
因此,要在32位x86 Linux中调用_exit(0)(原始系统调用,而不是exit()刷新缓冲区的glibc 函数):
movl $1, %eax # The system-call number. __NR_exit is 1 for 32-bit
xor %ebx,%ebx # put the arg (exit status) in ebx
int $0x80
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |