浅析Linux中的进程和中断_第1页
浅析Linux中的进程和中断_第2页
浅析Linux中的进程和中断_第3页
浅析Linux中的进程和中断_第4页
浅析Linux中的进程和中断_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进程和进程调度1.进程1.1什么是进程正在执行的程序代码的实时结果,即处于执行期的程序及相关资源。系统进行资源分配和调度的基本单元Linux系统中的进程:交互式进程shell命令进程、文本编辑器批处理进程编译实时进程视频应用程序1.2 Linux下的进程结构内核将所有进程存放在进程链表,链表的每一项的类型为task_struct 这个类型就称为进程描述符,一个进程描述符包含了具体进程的所有信息,包 括进程的状态、进程标识值、进程间的关系、打开的文件信息等进程标识内核通过唯一的进程标识值PID来标识每一个来标志每一个进程PID存放在进程描述符中getpid()获得当前进程的进程号getppid(

2、)获得当前进程的父进程号进程的状态TASK_RUNNINGTASK_INTERRUPTIBLETASK_UNINTERRUPTIBLETASK_TRACEDTASKSTOPPED运行状态(运行就绪、正在运行)可中断的阻塞状态不可中断的阻塞状态跟踪状态暂停状态设置当前进程的状态:set_current_state(current,state);进程家族树:-Linux系统的进程之间存在继承关系,所有的进程都是PID为1 的init进程的后代,内核在系统启动的最后阶段启动init进程。Linux下进程的创建和终止创建fork()拷贝当前进程创建一个子进程exec()读取可执行文件并将其载入地址空间

3、开始运行其中,fork()使用写时复制技术,避免拷贝大量用不到的数据,使系统具有 快速执行能力终止do_exit()释放与进程相关的资源,进程僵死不可运行,处于退出状态但仍保留了进程描述符,此时进程的存在只为父进程能获得它的信息wait()终止进程,占用的所有资源被释放Linux下的进程调度1.进程的优先级Linux采用两种不同的优先级范围1) nice值-20+19默认值为0值越大优先级越低F SUIDPIDPPIDCPRINI ADDR SZWCHANTTYTIMECMD4 S0100800 -917polls700:;00init1 S0200800 -0kthrea700:kthrea

4、dd1 S0320800 -0runks700:ksoftirqd/O1 S0620*-0cpust700:顶1migration/05 S0720*-0watchd700:watchdog/01 S0820*-0cpust700:migration/11 S01020800 -0runks700:ksoftirqd/11 S01120800 -0worker700:JOO:103kworker/0:15 S01220*-0watchd700:watchdog/11 S0132060-况-0rescue700:cpuset1 S0142060-况-0rescue7 00:khelper5 S2

5、)3若时优先级o可配19 0-99B3值越大高3;00kdevtmpfsPID PPID RTPRIDTIMECOMMAND0-00:00:00/sbin/init0-00:00:00kthreadd2-90:00:00ksoftirqd/O29900:09:01migration/29900:00:09watchdog/O29900:00:00mtgration/12-00:00:00ksoftirqd/12-00:00:03kworker/0:1内核将进程分为两个级别:?普通进程和 E先级都高于普甬进程耳实时优先级和Jnice 14 L - 加:河 khHpb2-时间片进程被抢占前持续运行

6、的时间时间片过长系统对交互响应表现欠佳时间片过短明显增大进程切换带来的处理器耗时Linux的CFS调度器并没有直接分配时间片到进程,而是划分了处理器的 使用比,它还会受到nice值得影响3. Linux下的进程调度Linux的调度器类主要实现两类进程调度算法:实时调度算法和完全公平调度算法(CFS)对实时进程的调度按优先级执行,一般不会被抢占。直到实时进程执行完,才会执行普通进程。如果有多个可执行状态的同优先级的实时进程,有两种调度策略:SCHED_FIFO先进先出SHED_RR轮转调度 内核为实时进程分配时间片 完全公平调度算法Completely Fair SchedulerCFS完全公平

7、调度针对普通进程的调度类CFS基于一个简单的理念:所有任务都应该公平的分配处理器。理 想情况下,n个进程的调度系统中,每个进程获得1/n处理器时间CFS使用vruntime变量记录一个进程运行多长时间以及还应该再运 行多久,它是一个通过优先级和系统负载等加权过的时间,nice值在 CFS中被作为进程获得的处理器运行比的权重,越低的nice值(越高的 优先级)进程获得更多的处理器使用权重CFS在所有可运行进程总数基础上计算出一个进程应该运行多久可运行进程数量趋于无限时,处理器使用比趋于0,为此CFS引入 了每个进程时间片底线,称为最小粒度,默认为1msCFS就是通过追踪这个vruntime来进行

8、任务调度,CFS选择具有最 小vruntime值的进程作为下一个可执行进程,用红黑树来组织调度实体,而键 值就是vruntime。在每个tick中断的时候,会更新进程的信息,并检查这个红 黑树,判断某些进程是不是要被替换掉。那么CFS只要选择最左叶子节点作为 下一个可执行进程即可。实际上CFS缓存了最左叶子,可以直接选取left_most 叶子_pick_next_entity()二:中断和中断处理2.1什么是中断硬件在需要的时候向内核发出信号由于处理器的速度远大于外围硬件设备的速度,内核可以线处理其它事 物,等到硬件真正完成请求再对该请求进行处理2.2中断处理的上半部和下半部为了让中断处理既

9、运行的快,又完成多工作量,中断 处理程序从概念上分 为上半部分(top half)和下半部分(bottom half),内核把上半部和下半部分开处 理。上半部一一登记中断中断处理程序收到一个中断,它就立即开始执行,但只做有严格时间限制 的工作,如对中断的应答和拷贝数据等,应该尽量减少上半部的工作量,此时完全屏蔽中断,要求快速,否则其它 中断得不到处理下半部一一可以推迟处理的部分执行与中断处理密切相关但上半部分本身不执行的工作,允许被稍后完成2.3注册中断处理程序每一设备都有相关的驱动程序,如果设备使用中断,相应的驱动程序就需 要注册一个中断处理程序驱动程序通过request_irq()函数注册

10、一个中断处理程序,并且激活给定的中 断线intrequest_irq(unsigned int irq, irq_handler_thandler,unsigned long flags,const char *name,void *dev)irq要分配的中断号handler指针,指向处理这个中断的实际中断处理程序typedef irqreturn_t (*irq_handler_t) (int,void *)flags中断处理的标志RQF_DISABLED内核在处理中断处理程序期间,禁止所有其它中断IRQF_SAMPLE_RANDOM中断对内核熵池有贡献 内核熵池-负责提 供从各种随机事件导

11、出的真正随机数IRQF_TIMER系统定时器的中断处理IRQF_SHARED 在多个中断处理程序之间共享中断线name与中断相关的设备的ASCII文本表示dev对于共享的中断线,提供唯一的标志信息区分共享同一中断处理程序的多个设备,支持共享.函数返回0表示成功执行,返回非0表示有错误2.4中断处理程序编写中断处理程序return_t intr_handler(int irq, void *dev)返回类型irqreturn_tIRQ_NONE不是指定的设备产生的中断IRQ_HANDLED被正确调用对于共享的中断处理程序:flags 必须设置为 IRQF_SHARED对每个注册的中断处壬理程序,

12、dev参数唯一(可以使用指向设备结构的指针)释放中断处理程序 void free_irq(unsigned int irq,void *dev)2.5 /proc/interrupts该文件存放系统中与中断相关的统计信息CPU。CPU10:673514115 lO-APIC-edgetimer1:14949 lO-APIC-edge180428:10 IO-APIC-edgertcO9:219207 10-APIC-fasteoi acpi10:00 lO-APIC-edgeite-cir12:62491235 lO-APIC-edge1804216:488419 IO-APIC-fasteo

13、i uhcl_hcd:usb3, nncO, flrewlreohc1, jmb38x_ms:slot0,nouveau, sndhdaintel18:7477 IO-APIC-fasteoi uhcihcd:usb819:18182042 10-APIC-fasteoi ehclhcd:usbl, uhci hcd:usb5, uhcL_hcd:usb721:00 IO-APIC-fasteoi uhcihcd:usb423:17252541 10-APIC-fasteoi ehclhcd:usb2, uhci hcd:usb647:65785619 PCI-MSI-edgeahci48:3

14、48541077 PCI-MSI-edgeiwlwifi49:列是中断第1PC三列【是接接数d_的值tel对断的中断1控制器,2FC惬I ed卵PthO2.6中断的控制函 数说 明local _irq_disable()禁止本地中断侍递local_irq_enable()激活本地中断传递local_irq_save()保存本地中断传递的当前状态,然后禁止本地中断传递local_irq_restore()恢复本地中断传追到给定的状态disablc_ir(i()禁止给定中断线,井确保该函数返回之前在该中断线上没有处理程序在运行disable ir(Lnosync()禁止给定中断线enable_inqO激活绘定中断线irqs_disabled()如果本地中断传递被禁止,5W返回非0;否则返回0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论