版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LINUX内核分析-系统调用和中断,系统调用的概念 LINUX系统调用简介 LINUX系统调用实现原理 LINUX系统调用应用 中断的概念 LINUX中断处理程序 LINUX中断处理机制 LINUX中断处理程序实现,系统调用的概念,为了和用户空间上的进程进行交互;内核提供的提供的一组界面。 应用程序通过这组界面访问硬件和其他操作系统资源。 完成对硬件和资源访问的控制。(安全、可靠,多任务、虚拟必须) 硬件设备的抽象(提供设备的独立性)。,LINUX系统调用简介,已经提到的系统调用 Fork(), exec(),open(),read(),write(),close() Linux系统调用共二百
2、五十几个 应用程序及系统调用的层次关系 API(POSIX标准)(API的标准化和进一步抽象) POSIX(Portable Operating System Interfaces) 调用关系图(44页) 应用程序 C库(libc.a) 系统调用 调用 printf() printf(); write() write()系统调用,LINUX系统调用实现原理(相关概念),相关概念 Int 80H(相关内容:内部中断(软中断,硬中断),外部中断(外部设备发出) IVT(Interrupt Vector Table 中断向量表):实模式下应用(固定在内存的位置) Idt(interrupt desc
3、riptor table:中断描述符表):保护模式下应用(不固定内存位置,通过IDTR寄存器定位该表)(INT 80H是占用其中的一项) Syscall table(系统调用表) 系统调用号(系统调用在表中的编号),LINUX系统调用实现原理(系统调用加载),操作系统加载时与系统调用有关的处理 int 80h 的处理程序地址的加载(syscall() start_kernel() - trap_init() -set_system_gate(SYSCALL_VECTOR. 301 _asm_ volatile (int $0 x80 302 : =a (_res) 303 : (_NR_#na
4、me); 304 _syscall_return(type,_res); 305 _syscall0(int,fork) int fork(void) “int 80 with _NR_fork” / 2 ,_syscall1,#define _syscall1(type,name,type1,arg1) 284 type name(type1 arg1) 285 286 long _res; 287 _asm_ volatile (int $0 x80 288 : =a (_res) 289 : (_NR_#name),b (long)(arg1); 290 _syscall_return(
5、type,_res); 291 * _syscall1(int, setuid, uid_t, uid) 意即 int setuid(uid_t uid),_syscall2,#define _syscall2(type,name,type1,arg1,type2,arg2) 294 type name(type1 arg1,type2 arg2) 295 296 long _res; 297 _asm_ volatile (int $0 x80 298 : =a (_res) 299 : (_NR_#name),b (long)(arg1), c (long)(arg2); 300 _sys
6、call_return(type,_res); 301 * _syscall2(type0, fname, type1, p1, type2, p2) /意即 type0 fname(type1 p1, type2 p2),LINUX系统调用应用,扩充 增加系统调用函数(一般在kernel/sys.c中) 把系统调用函数入口地址添加到sys_call_table(ENTRY.S) 添加系统调用号(unistd.h) 监视(调试和防毒等) 把系统调用拦截,做完相应的检查再调用原系统调用(如OPEN时先检查病毒的特征等),LINUX系统调用应用(增加的例子),LINUX系统调用应用(增加分析),建
7、立一个新的系统调用的好处 系统调用创建容易、使用方便 性能高 问题 系统调用号(正式应用需要申请) 系统调用相对固化,不易变 需要将系统调用分别注册到支持的体系结构中,LINUX系统调用应用(拦截1),增加一个系统调用实验需要编译内核,实施起来比较麻烦 通过MODULES机制访问 sys_call_table也可以实现对内核系统调用的改造。,LINUX系统调用应用(拦截2),LINUX系统调用应用(拦截3),演示服务器地址 211.86.49.238,中断的概念,主机与外设的通信(轮询、中断、DMA) 中断向量,LINUX中断处理程序,中断处理程序或称中断服务例程(ISR) 一个中断处理程序对
8、应一个中断 一个设备可能发出多种中断 对于外部设备,中断处理程序是设备驱动程序的一部分。 在LINUX中中断处理程序和C函数区别不大,但有自己的规范、主要是运行时需要在中断上下文中。 中断处理随时发生,处理程序的效率很重要,LINUX采用上、下半部机制。(后面讲),LINUX中断处理机制(注册),注册调用 request_irq(unsigned int)irq, irqreturn_t (*handler)(int,void*,struct pt_regs*), ulong irqflags /(SA_INTERRUPT,SHIRQ,SA_SAMPLE_RANDOM) const char * dev_name void devid); / for shirq flag,LINUX中断处理机制( 释放),Void free_irq(unsigned int irq,void dev_id); 若不共享则删
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 资金安全运营风险控制承诺书(5篇)
- 确保食品质量安全卫生健康承诺书(7篇)
- 客户满意度提升与服务改进指南
- 专业服务标准履行承诺书8篇
- 企业人力资源规划及分析工具包
- 物联网农业智能设备操作指南
- 山东省济南长清区六校联考2026年初三下学期线上模拟考试(2)英语试题含解析
- 辽宁省抚顺本溪铁岭辽阳葫芦岛市重点中学2026年初三第六次模拟语文试题含解析
- 2026届重庆市渝中区名校初三下学期三诊考试语文试题试卷含解析
- 质量控制检测流程标准化模板产品抽检与质量评估版
- 开展课外读物负面清单管理的具体实施举措方案
- 武汉科技大学《机械工程控制基础A》2023-2024学年第一学期期末试卷
- 《痛经妇产科学》课件
- 重庆市2017年中考数学试卷B卷(含答案)
- 北师大版二年级数学下册全册10套试卷(附答案)
- 西方哲学史复习笔记
- 集团公司战略协议管理办法
- JP柜的生产工艺
- 非煤地下矿山风险辨识与评估
- 批判性思维与创新思维
- 绿植花卉租摆及园林养护服务 投标方案(技术方案)
评论
0/150
提交评论