《Linux0.11内核完全注释》读后小结 --- 中断与系统调用
2012-02-16 16:00
591 查看
Linux 系统包含了一大堆的中断,是所有操作的基础。
中断中的开闭中断
cli(close interrupt)指令用来复位CPU标志寄存器中的中断标志,使系统不响应外部中断。sti(start interrupt)指令用来复位,使系统响应中断。
asm.s 设置了一堆底层中断,进入中断前要压入eax等寄存器,执行完要pop 出一些寄存器。这种统一的工作在 no_error_code里
trap.c 里面是真正的中断处理C函数。set_trap_gate 就是设置IDT, 把asm.s中的函数地址加载到IDT表中。这个函数里内嵌汇编,内嵌汇编的语法讲了一些
system_call.s 是系统调用的处理,和系统时间中断
Linux 中应用程序调用内核的功能是通过中断调用int 0x80进行的。寄存器eax中存放调用号,如果带参数,则ebx,ecx和edx存放参数。
系统调用需要从用户态转换到内核态,通过中断实现的。
中断结束后,(感觉操作系统,就是通过系统调用来插手每个进程的执行的)
要检查时间片,是否用光,如果用光调用reschedule,进行进程切换。
还需要检查signal位,如果这个进程有待处理的信号,先进行信号出来。系统调用再返回
中断中的开闭中断
cli(close interrupt)指令用来复位CPU标志寄存器中的中断标志,使系统不响应外部中断。sti(start interrupt)指令用来复位,使系统响应中断。
asm.s 设置了一堆底层中断,进入中断前要压入eax等寄存器,执行完要pop 出一些寄存器。这种统一的工作在 no_error_code里
trap.c 里面是真正的中断处理C函数。set_trap_gate 就是设置IDT, 把asm.s中的函数地址加载到IDT表中。这个函数里内嵌汇编,内嵌汇编的语法讲了一些
system_call.s 是系统调用的处理,和系统时间中断
Linux 中应用程序调用内核的功能是通过中断调用int 0x80进行的。寄存器eax中存放调用号,如果带参数,则ebx,ecx和edx存放参数。
系统调用需要从用户态转换到内核态,通过中断实现的。
中断结束后,(感觉操作系统,就是通过系统调用来插手每个进程的执行的)
要检查时间片,是否用光,如果用光调用reschedule,进行进程切换。
还需要检查signal位,如果这个进程有待处理的信号,先进行信号出来。系统调用再返回
相关文章推荐
- 《Linux0.11内核完全注释》读后小结 --- 中断与系统调用
- 《Linux0.11内核完全注释》读后小结 --- 调试环境的搭建
- 《Linux0.11内核完全注释》读后小结 --- 内存寻址
- 《Linux0.11内核完全注释》读后小结 --- 调试环境的搭建
- 《Linux0.11内核完全注释》读后小结 --- 内存寻址
- 《Linux0.11内核完全注释》读后小结 --- 启动引导
- 《Linux0.11内核完全注释》读后小结 --- 进程调度与信号
- 《Linux0.11内核完全注释》读后小结 --- 进程调度与信号
- 《Linux0.11内核完全注释》读后小结 --- 启动引导
- Linux0.11内核--系统中断处理程序int 0x80实现原理
- 我看《Linux0.11内核完全注释2.01》的方法
- Linux0.11 系统启动时所调用的BIOS中断
- linux内核中断、异常、系统调用的分析以及实践
- linux 0.11 内核完全注释V3.0学习笔记(一)
- Linux内核之系统调用小结
- 《第一篇 从linux 0.11系统初始化main.c的fork()函数调用分析内核源码》
- Linux0.11内核--系统中断处理程序int 0x80实现原理
- linux-0.11调试教程,源起,从linux内核完全注释的几处错误说起
- 看《Linux0.11内核完全注释2.01》的方法
- 《Linux0.11内核完全注释》读书笔记之内核启动方式总结