




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LINUX内核分析-系统调用和中断系统调用的概念LINUX系统调用简介LINUX系统调用实现原理LINUX系统调用应用中断的概念LINUX中断处理程序LINUX中断处理机制LINUX中断处理程序实现系统调用的概念为了和用户空间上的进程进行交互;内核提供的提供的一组界面。应用程序通过这组界面访问硬件和其他操作系统资源。完成对硬件和资源访问的控制。(安全、可靠,多任务、虚拟必须)硬件设备的抽象(提供设备的独立性)。LINUX系统调用简介已经提到的系统调用Fork(),exec(),open(),read(),write(),close()…Linux系统调用共二百五十几个应用程序及系统调用的层次关系API(POSIX标准)(API的标准化和进一步抽象)POSIX(PortableOperatingSystemInterfaces)调用关系图(44页)
应用程序C库(libc.a)系统调用 调用printf(){}
printf(…);write(){}write(){}系统调用LINUX系统调用实现原理(相关概念)相关概念Int80H(相关内容:内部中断(软中断,硬中断),外部中断(外部设备发出))IVT(InterruptVectorTable中断向量表):实模式下应用(固定在内存的位置)Idt(interruptdescriptortable:中断描述符表):保护模式下应用(不固定内存位置,通过IDTR寄存器定位该表)(INT80H是占用其中的一项)Syscalltable(系统调用表)系统调用号(系统调用在表中的编号)LINUX系统调用实现原理(系统调用加载)操作系统加载时与系统调用有关的处理int80h的处理程序地址的加载(syscall())start_kernel()->trap_init()->set_system_gate(SYSCALL_VECTOR.&system_call)
见http://lxr.linux.no各系统调用处理程序的加载(sys_xxx())(ENTRY.S中)System_call在Entry.S中(arch/i386/kernel)系统调用表在启动时加载(unistd.h中定义号)LINUX系统调用实现原理(内核与用户的切换1)
||------>|SystemCalli|访问设备
|||[sys_read()]|...i=3||||system_call(i)|--------||访问内部函数
[read()]|||...j=20|||system_call(j)|--------||[get_pid()]||||...|------->|SystemCallj|访问内核数据结构
||[sys_getpid()]|LINUX系统调用实现原理(内核与用户的切换2)
RunningTask|-----------|(3)NORMAL|||[breakexecution]IRQHandlerEXECUTION(1)|||------------->|---------||\|/|||does|IRQ(2)---->|..|----->|some||||<-----|work|BACKTO|||||..(4).|NORMAL(6)|\|/|<-------------|_________|EXECUTION||[returntocode]||(5)比如:典型的时钟中断,每10ms一次LINUX系统调用实现原理(代码1)int80hin2.4.x202ENTRY(system_call)203pushl%eax #saveorig_eax
204SAVE_ALL205GET_CURRENT(%ebx)206testb$0x02,tsk_ptrace(%ebx)#PT_TRACESYS207jnetracesys
208cmpl$(NR_syscalls),%eax
209jaebadsys
210call*SYMBOL_NAME(sys_call_table)(,%eax,4)211movl%eax,EAX(%esp)#savethereturnvalue212ENTRY(ret_from_sys_call)LINUX系统调用实现原理(代码2)/arch/i386/kernel/entry.S#L212212ENTRY(ret_from_sys_call)213cli #need_reschedandsignalsatomictest214cmpl$0,need_resched(%ebx)215jnereschedule216cmpl$0,sigpending(%ebx)217jnesignal_returnLINUX系统调用实现原理(代码3)_syscall宏—_syscall0-_syscall6_syscall0#define_syscall0(type,name)\298typename(void)\299{\300long__res;\301__asm__volatile("int$0x80"\302:"=a"(__res)\303:""(__NR_##name));\304__syscall_return(type,__res);\305}_syscall0(int,fork)intfork(void){ “int80with_NR_fork”//2}_syscall1#define_syscall1(type,name,type1,arg1)\284 typename(type1arg1)\285{\286long__res;\287__asm__volatile("int$0x80"\288 :"=a"(__res)\289 :""(__NR_##name),"b"((long)(arg1)));\290__syscall_return(type,__res);\291}*_syscall1(int,setuid,uid_t,uid)
意即intsetuid(uid_tuid)_syscall2#define_syscall2(type,name,type1,arg1,type2,arg2)\294typename(type1arg1,type2arg2)\295{\296long__res;\297__asm__volatile("int$0x80"\298 :"=a"(__res)\299 :""(__NR_##name),"b"((long)(arg1)), "c"((long)(arg2)));\300__syscall_return(type,__res);\301}*_syscall2(type0,fname,type1,p1,type2,p2) //意即type0fname(type1p1,type2p2)LINUX系统调用应用扩充增加系统调用函数(一般在kernel/sys.c中)把系统调用函数入口地址添加到sys_call_table(ENTRY.S)添加系统调用号(unistd.h)监视(调试和防毒等)把系统调用拦截,做完相应的检查再调用原系统调用(如OPEN时先检查病毒的特征等)LINUX系统调用应用(增加的例子)LINUX系统调用应用(增加分析)建立一个新的系统调用的好处系统调用创建容易、使用方便性能高问题系统调用号(正式应用需要申请)系统调用相对固化,不易变需要将系统调用分别注册到支持的体系结构中LINUX系统调用应用(拦截1)增加一个系统调用实验需要编译内核,实施起来比较麻烦通过MODULES机制访问sys_call_table也可以实现对内核系统调用的改造。LINUX系统调用应用(拦截2)LINUX系统调用应用(拦截3)演示服务器地址38中断的概念主机与外设的通信(轮询、中断、DMA)中断向量…LINUX中断处理程序中断处理程序或称中断服务例程(ISR)一个中断处理程序对应一个中断一个设备可能发出多种中断对于外部设备,中断处理程序是设备驱动程序的一部分。在LINUX中中断处理程序和C函数区别不大,但有自己的规范、主要是运行时需要在中断上下文中。中断处理随时发生,处理程序的效率很重要,LINUX采用上、下半部机制。(后面讲)LINUX中断处理机制(注册)注册调用
request_irq((unsignedint)irq, irqreturn_t(*handler)(int,void*,structpt_regs*), ulongirqflags//(SA_INTERRUPT,SHIRQ,SA_SAMPLE_RANDOM)constchar*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 耐火土石矿山安全生产事故案例分析考核试卷
- 渔业机械化渔业资源增殖与养护考试考核试卷
- 稀土分离与纯化考核试卷
- 2025技术授权与共同生产合同范本
- 2025年小学教师劳动合同
- 2025商用物业租赁合同范本
- 大学生职业规划大赛《侦查学专业》生涯发展展示
- 遂平懿丰假日广场施工组织设计
- 保证人借款合同书范例
- 虚假合同书贷款
- 湖南省邵阳市2023年英语小升初试卷(含答案)
- 监理公司员工手册
- 电子商务的区块链技术应用
- YY 1042-2023 牙科学 聚合物基修复材料
- 中国地图素材课件
- 肿瘤患者随访管理制度
- 【新能源汽车电池回收技术方案设计3500字(论文)】
- 刑侦行业:刑侦技术与案件侦查培训研讨会
- 各种生活用纸售后服务方案
- (完整版)中医养生课程标准
- 第4课 视觉中的红屋顶 课件 2022-2023学年湘美版初中美术八年级下册
评论
0/150
提交评论