




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式Linux操作系统,陈虎tommychen74,主要内容,任务调度存储管理中断系统驱动程序多线程程序设计,Linux的历史,Linux操作系统是UNIX操作系统的一种克隆系统。它诞生于1991年的10月5日(这是第一次正式向外公布的时间)。现已成为今天世界上使用最多的一种UNIX类操作系统,并且使用人数还在迅猛增长。Linux操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准和Internet网络。,进程状态,运行态:正在使用CPU运行的状态可运行态:进程已分配到除CPU外所需要的其它资源。等待态:正在等待某个事件或某个资源时所处的状态。处于可中断等待态的进程可以由信号解除其等待态。处于不可中断等待态的进程,一般是直接或间接等待硬件条件,它只能用特定的方式来解除。暂停态:进程需要接受某种特殊处理而暂时停止运行所处的状态。例如,正在接受调试的进程就处于这种状态。僵死态:进程的运行已经结束,但它所占的资源还未释放。,优先级策略,系统中所有进程的优先级在0,MAX_PRIO-1之间,数值越低优先级越高;实时进程的优先级范围在0,MAX_RT_PRIO-1,优先级从创建之初便已确定,不会改变;非实时进程的优先级在MAX_RT_PRIO,MAX_PRIO之间,优先级分为静态和动态两方面。静态优先级在进程产生的时候确定:static_prio=MAX_RT_PRIO+nice+20动态优先级在运行时随着进程状态而动态变化:,调度策略,相同优先级的实时进程的调度策略有两种:SCHED_RR:时间片轮转;在运行了指定的时间片后会被抢占并重新调度SCHED_FIFO:先入先出方式,每一个可以运行的实时进程按照它在调度队列中的固定顺序运行非实时进程的调度策略SCHED_OTHER:以时间片轮转为基础,根据每个进程的情况进行一定的优化使得进程调度可以公平有效而又不损失响应时间。,调度程序Schedule(),voidschedule(void)if(存在中断下半部分服务请求)调用do_bottom_half来运行中断处理的后半截。if(当前进程是时间片轮转的实时进程)根据当前进程的状态进行相应处理。while(遍历整个可运行态的队列)if(当前位置的进程可以被调度)调用goodness来计算当前位置进程的权值。if(返回的权值大于以前保存的最大权值)保存这个权值以及进程。使用switch_to宏来切换当前进程和选中进程的上下文。,进程调度的时机,增加一个新进程进程状态转换系统调用执行完毕返回用户态中断处理完毕返回到用户态当前进程的时间片使用完毕,Linux的存储器管理,虚拟存储管理(省略)内存分配策略伙伴系统算法Slab分配器,伙伴系统,每个空间按照尺寸为2U大小的块如果申请空间的尺寸s满足2U-1action;if(action)intstatus=0;/遍历所有的中断相应块,并执行相应程序dostatus|=action-flags;action-handler(irq,action-dev_id,regs);action=action-next;while(action);/软中断!if(softirq_pending(cpu)do_softirq();return;bad_irq:irq_err_count+=1;printk(KERN_ERRIRQ:spuriousinterrupt%dn,irq);return;,驱动程序申请中断,intrequest_irq(unsignedintirq,void(*handler)(int,void*,structpt_regs*),unsignedlongirq_flags,constchar*devname,void*dev_id);irq:要申请的中断号;handler:中断处理函数指针;irq_flags:中断管理掩码;devname:设备名称;dev_id:设备相关的私用存储区,用于标示自身,申请中断的实现,intrequest_irq(unsignedintirq,void(*handler)(int,void*,structpt_regs*),unsignedlongirq_flags,constchar*devname,void*dev_id)unsignedlongretval;structirqaction*action;action=(structirqaction*)kmalloc(sizeof(structirqaction),GFP_KERNEL);if(!action)return-ENOMEM;action-handler=handler;action-flags=irq_flags;action-mask=0;action-name=devname;action-next=NULL;action-dev_id=dev_id;retval=setup_arm_irq(irq,action);if(retval)kfree(action);returnretval;,释放中断,voidfree_irq(unsignedintirq,void*dev_id)irq:中断号dev_id:中断处理程序标示,释放中断的实现,voidfree_irq(unsignedintirq,void*dev_id)structirqaction*action,*p;unsignedlongflags;if(irq=NR_IRQS|!irq_descirq.valid)/错误处理return;spin_lock_irqsave(,中断处理程序,voidhandler(intirq,void*dev_id,structpt_regs*regs);irq:中断号dev_id:驱动程序标示regs:上下文寄存器现场,软中断、tasklet(小任务)和下半部分,为什么要引入软中断(延迟任务)?在上述硬件中断的处理过程中,需要关闭中断;如果中断处理程序的处理过于复杂,则导致不能及时响应中断;将比较简单的任务放到硬件中断处理过程,把复杂的操作放到软中断操作过程,提高内核的响应中断速度。软中断可以被硬件中断所打断。,软中断、tasklet(小任务)和下半部分,软中断,tasklet,下半部分,软中断,系统中固定有4种软中断软中断存放在一个softirq_vec数组中,数据类型为softirq_action。softirq_action包含了软中断函数指针和相关数据结构。,软中断调用的时机,通过调用softirq_pending()判断是否有软中断如果有软中断则执行do_softirq();判断的时机包括:do_IRQ()完成了中断处理程序smp_apic_timer_interrupt完成本地时钟中断当一个特定的ksoftirqd内核线程被唤醒,tasklet,建立在HI_SOFTIRQ和TASKLET_SOFIRQ的软中断之上tasklet存放在tasklet_vec和tasklet_hi_vec数组中,每个tasklet的数据结构包括:next:tasklet的链表指针;state:状态;count:锁计数器func:函数指针data:无符号函数,作为tasklet的函数输入,如何使用tasklet,分配一个tasklet_struct数据结构通过tasklet_init()初始化它通过tasklet_schedule()调度运行它(一般是硬中断处理程序)通过tasklet_disable()禁止一个tasklet,例子:,/tasklet初始化voidshort_do_tasklet(unsignedlong);DECLARE_TASKLET(short_tasklet,short_do_tasklet,0);/中断处理程序中tasklet_schedule(short_tasklet);voidshort
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年餐饮店长招聘面试模拟题和答案
- 2025年医学影像学专业知识点精讲及模拟题解析
- 2025年仓储物流安全员招聘面试宝典及答案解析
- 2025年物资储备与管理专业安全员招聘考试题库
- 安阳师范学院《数据库技术与应用》2024-2025学年第一学期期末试卷
- 深圳信息职业技术学院《文字与版式》2024-2025学年第一学期期末试卷
- 德州学院《生物药物应用》2024-2025学年第一学期期末试卷
- 湖北大学知行学院《虚拟现实开发与设计》2024-2025学年第一学期期末试卷
- 大庆师范学院《教师口语艺术与教师礼仪训练》2024-2025学年第一学期期末试卷
- 2025年财务会计实习生应聘面试技巧与题目集萃
- 2026版步步高大一轮高考数学复习讲义第十章 §10.1 计数原理与排列组合含答案
- 人力公司营销策划方案
- 医院医疗用房管理制度
- 股权代持协议终止协议书
- 捡土豆装车合同协议书
- 国际压力性损伤溃疡预防和治疗临床指南(2025年版)解读
- 海天对客户分级管理
- 薪资抵扣协议书模板
- 血管内导管相关性血流感染预防与诊治指南(2025)解读课件
- 人力资源培训:招聘与面试技巧
- aigc培训课件教学课件
评论
0/150
提交评论