操作系统重点总结_第1页
操作系统重点总结_第2页
操作系统重点总结_第3页
操作系统重点总结_第4页
操作系统重点总结_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、 进程、轻量级进程和线程的概念以及它们的区别:进程(Process):进程是程序执行时的一个实例。可以看作是充分描述程序已经执行到何种程度的数据结构的汇集。进程的目的是担当分配系统资源CPU时间、内存等)的实体。进程是资源管理的最小单元,能被内核单独调度。◊线程(Thread):线程代表进程的一个执行流。是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程不能被内核单独调度。轻量级进程(LightwetghtProcess):轻量级进程(LWP)是一种实现多任务的方法。与普通进程相比,LWP与其他进程共享所有(或大部分)它的逻辑地址空间和系统资源;与线程相比,LWP有它自己的进程标识符,并和其他进程有着父子关系;这是和类Unix操作系统的系统调用vfork()生成的进程一样的。另外,线程既可由应用程序管理,又可由内核管理,而LWP只能由内核管理并像普通进程一样被调度。2、 什么导致操作系统不实时?Linux操作系统存在关中断机制。导致的后果是:如果低优先级的进程由于进入临界去或者为了尽快完成人物而关闭了中断,那么即使有高优先级实时进程的中断发生系统也无法响应Linux操作系统的内核是禁止抢占的。一个进程一旦进入内核,它将运行直到系统调用结束或进程被阻塞。这时候一个高优先级的实时进程只能等待。Linux使用的是基于优先级的任务调度策略。这种调度策略不能保证实时任务按时完成。Linux虽然给实时进程提供了较高的优先级,但是,并没有加入时间限制。其他方面:Linux利用交换空间然进程运行在一个比实际内存大的虚拟内存空间中。当进程访问的虚拟内存的内容在交换空间里时,Linux就要把在交换空间里的页面交换到实际的内存中,而这段时间是不可预测的,造成了实时响应时间的不确定性。3、 tast_struct类型结构(进程描述符就是这种结构).其中,thread_info:描述进程的基本信息;mm_struct:指向内存区描述符的指针;tty_struct:描述与进程相关的tty;fs_struct:当前目录;files_struct:指向文件描述符的指针;signal_struct:所接收的信号4、异常、中断中断通常分为同步(synchronous)中断和异步(asynchronous)中断。同步中断:是指当程序执行时由CPU控制单元产生的,之所以成为同步,是因为只有在一条指令终止执行后CPU才会发出中断。◊异步中断:是由其他硬件设备按照CPU时钟信号随机产生的。附:同步中断也称为异常(exception)、异步中断也称为中断(interrupt)中断和异常的分类:中断分为:可屏蔽中断、非屏蔽中断。异常分为:处理器探测到的异常、故障(错误、缺页)、陷阱(主要用途是调试程序)、异常中止(通常是出现硬件或系统表的严重错误X编程异常(通常是编程者发出请求时发生,一般是由int或int3指令或into、bound指令触发)中断上半部和中断下半部中断处理一般分为两个部分,中断处理程序是上半部:接收到一个中断就立即执行,但只做有严格时限的工作,这些工作都是在所有中断被禁止的情况下完成的。能够被允许稍后完成的工作被推迟到下半部去。通常情况下,下半部会在中断处理程序返回时立即执行。下半部具体放到以后的什么时候去做呢?下半部并不需要指明一个确切时间,只要把这些任务推迟一点,让他们在系统不太繁忙并且中断恢复后执行就可以了。通常下半部在中断处理程序一返回就会马上执行。下半部执行的关键在于当它们运行的时候,允许响应所有中断。5、同步访问内核数据结构(保护内核控制路径访问的数据结构)访问数据结构的内核控制路径单处理器保护多处理器进一步保护异常信号量无中断本地中断禁止自旋锁可延迟函数无无或自旋锁异常与中断本地中断禁止自旋锁异常与可延迟函数本地软中断禁止自旋锁中断与可延迟函数本地中断禁止自旋锁异常、中断与可延迟函数本地中断禁止自旋锁6、进程切换>通过一个进程切换保留对进程C的引用(示例图)对进程切换图的理解以及解释我们假定prev指向被替换进程的描述符;而next指向被激活进程的描述符;last是输出参数表示宏把进程C的描述符地址写在内存的什么位置。在进程切换之前,宏把第一个输入参数prev表示的变量的内容存入存入CPU的eax寄存器。在完成进程切换,A已经恢复执行时,宏把CPU的eax寄存器的内容写入由第三个输出函数-last所指示的A在内存中的位置。在schedule()执行过程中,参数last指向A的局部变量prev,所以prev被C的地址覆盖。进程切换步骤或由两部分组成◊切换页全局目录以安装一个新的地址空间切换内核态堆栈和硬件上下文,因为硬件上下文提供了内核执行新进程所需要的所有信息,包含CPU寄存器。7、mm_struct(内存描述符所使用的数据结构类型)其中,mm_cout:表示主使用计数器;map_count:表示线性区个数;mmap_sem:表示线性区的读/写信号量;pgd:指向页全局目录Linux通过类型为vm_area_struct的对象实现线性区,其中vm_start表示线性区内的第一个线性地址;vm_end表示线性区之后的第一个线性地址;vm_ops表示指向线性区的方法;vm_next表示进程链表中的下一个线性区。其中vm_ops字段指向vm_operations_struct数据结构,该结构存放的是线性区的方法。分别是:open(当把线性区增加到进程所拥有的线性区的集合时调用、close(当把进程所拥有的线性区集合删除线性区时调用)、nopage(当程序视图访问RAM中不存在的一个页,但该页的线性地址属于线性区时,由缺页异常处理程序调用)8、缺页异常处理seneaSI氐GY[toesItiejtiesLtypernatcF*ui&memoryregionaccessrigits?UOKthpaddresspr«p5sddrps!DKiiheeiwepiwi

occurintherhim袒Ltyjldiimy

jIlMMEhpwV:-|ll'lLMI|

州Irhe印(K€5§.W3虹就”InI■in-'lnQMlAndpaging此ncomigFnwQrywi1W55;KJIMMgseneaSI氐GY[toesItiejtiesLtypernatcF*ui&memoryregionaccessrigits?UOKthpaddresspr«p5sddrps!DKiiheeiwepiwi

occurintherhim袒Ltyjldiimy

jIlMMEhpwV:-|ll'lLMI|

州Irhe印(K€5§.W3虹就”InI■in-'lnQMlAndpaging此ncomigFnwQrywi1W55;KJIMMgI.3pi<-l-lAwcminUserModeBr0aniw伊<sd诂ScrENUtMk*H'friJinJl1>iriinqmndl柘ICopyOnVMileAddieuInjirmorym:||onAiwaIBkflF1l?I^O'\ 1。山1?1加d「m「k^ullcic+iiilt—_"*】Fgood_areaWih-jnocontextdn>知K^nuXpjqi?i-Hikemiyibup\ke*<reltfii&ad,FLinux缺页(PageFault)异常处理必须区分以下两种情况:由变成错误引起的异常;由引用属于进程地址空间但还尚未分配物理页框的页所引起的异常。线性区描述符可以让缺页异常处理程度非常有效地完成它的工作。do_page_fault()函数是缺页中断服务程序,它把缺页的线性地址和当前进程的线性区相比较,然后根据上图所

示的方案处理这个异常do_page_fault()函数的第一步是读取引起缺页的线性地址。当异常发生时,CPU控制单元把这个值存放在cr2控制寄存器中。接下来缺页处理程序检查异常发生时是否内核正在执行一些关键例程或正在运行内核程序。假定没有发生以上情况,则函数检查进程所拥有的线性区以决定引起缺页的线性地址是否包含在进程的地址空间中,为此必须获得进程的mmap_sem读写信号量,读取后do_page_fault()函数开始搜索错误线性地址所在的线性区。如果address不属于进程的地址空间,那么do_page_fault()函数继续执行bad_area标记处的语句;如果address地址属于进程的地址空间,则do_page_fault()函数转到good_area标记处的语句执行。8、内核同步技术flCPU本J&TPU木:地CPU所•仃CPULinux内适用范围描述宅了操作对一个计数摇原了地"读一修改一写X的指所有CFU卬iTjCPU禁止木地低中flCPU本J&TPU木:地CPU所•仃CPULinux内适用范围描述宅了操作对一个计数摇原了地"读一修改一写X的指所有CFU卬iTjCPU禁止木地低中断禁止本CPUI:的数中新处理保此指令顺序不被改变自旋钺加锁时忙留禁止本CPU1-.白中断处廿禁止所有CPU上的中断和救中断处迎内存屏障加锁时阻寒等待(睡眠)禁止本地中断令局禁止中断struciT0CHf日」rry[hd|9、虚拟文件系统(fs_structstruciT0CHf日」rry[hd|9、虚拟文件系统(fs_struct结构)Ucniry XpuodcoperaciS&ftETlt的imdctieintry进程间广曲日*的inodeLfcntrylklej>_0peniTicnisFilesAssociatedwithaProcessFs__struc结构目的:每个进程都有它自己当前的工作目录和它自己的根目录。这是内核用来表示进程与文件系

温馨提示

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

评论

0/150

提交评论