




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 进程与存储管理示例nLinux进程和存储管理简介nLinux进程结构nLinux进程控制nLinux进程调度n进程通信nLinux存储管理第6章 进程与存储管理示例6.1 Linux进程和存储管理简介nLinux系统的核心部分,从整体上分两大部分:“静”的文件系统“动”的进程控制系统两者之间通过数据结构和函数调用相互作用nLinux将一个程序看作是一个可执行文件,而把一个进程看作是程序的执行或执行中的程序实例6.1 Linux进程和存储管理简介nLinux系统的启动系统自举,并初始化各种数据结构与表格、初始化Linux核心的各个子系统等建立0#进程或idle进程唯一一个静态建立的进程建
2、立控制终端进程及运行shell进程的init进程(也称为1#进程)不同终端创建相应的终端管理进程和shell进程在建立shell进程之后,出现相应的提示符,等待用户输入命令图6.1 Linux系统中各进程的关系6.1 Linux进程和存储管理简介nLinux系统中各进程的关系0#进程或idle进程祖先进程1#进程或init进程终端管理进程与shell进程的父进程用户进程由Shell进程创建,是Shell进程的子孙进程6.1 Linux进程和存储管理简介n0#进程运行在核心态,而init进程以及由init进程衍生的其他进程都可以在用户态和核心态下执行n用户态与核心态的区别用户态下的进程只能存取它
3、们自己的指令与数据,而核心态下的进程可以存取核心和用户地址在不同的执行模式下,同一进程使用不同的堆栈,分别称为核心态堆栈与用户态堆栈。6.1 Linux进程和存储管理简介n核心线程:只在核心态下执行的进程核心线程有:0#进程、kblockd、ksoftirqd、kswapd等等,常用于处理一些周期性事务图6.2 Linux进程的核心态与用户态之间的转换6.1 Linux进程和存储管理简介nLinux的进程控制系统在逻辑上有4个模块与文件系统的接口部分进程本身的控制部分进程间的控制部分存储管理部分6.1 Linux进程和存储管理简介nLinux调度模块调度原则:抢占式、动态优先级调度法调度过程s
4、chedule()和时钟中断修改进程的动态优先级6.1 Linux进程和存储管理简介nLinux中引起进程调度的情况当前执行进程申请资源未得到满足,自己调用sleep过程,放弃CPU,进入睡眠状态为了与其他进程保持同步,调用wait过程,主动放弃CPU,进入睡眠状态时间片用完,或某个更高优先级进程被唤醒,系统设置need_resched调度标志。当系统在核心态下的程序执行完毕,由核心态转入用户态时,即在中断陷入总控处理程序结束之前的瞬间,检查need_resched标志并进行调度当前进程调用exit,自我终止时6.1 Linux进程和存储管理简介nLinux进程通信包括:用于控制各并发进程执行
5、速度和资源共享与竞争的低级通信,以及进程间大量传递信息的高级通信同步机制n在核心态下执行时,系统进程使用:信号量、自旋锁、关闭中断、使用原子操作等n在用户态下执行时,用户进程使用:软中断信号、管道、调用系统调用wait或sleep使得当前执行进程进入等待状态6.1 Linux进程和存储管理简介nLinux存储管理模块控制存储分配管理进程在内存和外存之间的信息转移,以便所有进程都得到公平执行的机会6.2 Linux进程结构n进程的概念n进程的虚拟地址结构n进程上下文n进程的状态和状态转换6.2 Linux进程结构n介绍Linux进程的静态构成,定义进程上下文及其状态转换6.2.1 进程的概念进程
6、的含义与特性进程控制块:Linux的task_struct结构n标识进程状态用的状态位:5个状态编码n进程标识符n描述进程家族关系、组成成员的指针n6.2 Linux进程结构6.2.2 进程的虚拟地址结构Linux进程的虚拟地址结构依赖于硬件在Intel 80 x86中,每个进程拥有一个4GB的虚拟空间。其中:n03GB的地址空间由用户进程使用,可以对其直接访问; n34GB的地址空间称为核心地址空间,在所有的进程中共享,存放核心的正文和数据,只被核心使用,用户进程不能直接访问6.2.2 进程的虚拟地址结构nLinux将用户进程的所有地址空间有关的信息保存在mm_struct数据结构中,该结构
7、的指针保存进程描述符中nLinux的进程由逻辑段组成,而这些逻辑段则存放在若干个虚拟区域中。正文、数据和栈分别存放于各自的区中。nLinux的区类似于段页式管理中的段,但区的虚拟地址是一维的6.2.2 进程的虚拟地址结构n虚拟区域的管理名称:区命名为vm_area,简写为VMA管理:n每个区对应一个vm_area_strct结构n创建新进程时,核心将从父进程复制相应的表项给所创建的进程n使用平衡AVL二叉树来组织和管理区域n对于用户进程,通过系统调用mmap( )创建一个虚拟区域,通过系统调用munmap( )释放虚拟区域6.2.3 进程上下文n进程上下文的基本结构核心态栈:装进程调用核心函数
8、时用到的有关参数等用户态栈:在用户态下执行时函数调用的参数、局部变量及其他数据图6.3 进程空间结构图6.4 执行copy程序时用户栈和核心栈的变化6.2.3 进程上下文n进程上下文的组成部分task_struct数据结构用户栈和核心栈的内容用户地址空间的正文段、数据段硬件寄存器页表6.2.4 进程的状态和状态转换nLinux的5个进程状态TASK_RUNNING:进程处于执行或就绪状态TASK_INTERRUPTIBLE:进程正在睡眠,但可以被软中断信号唤醒TASK_UNINTERRUPTIBLE:进程正在睡眠,且不可以被软中断信号唤醒TASK_STOPPED:暂停,当一个进程SIGSTOP
9、、SIGSTP、SIGTTIN、SIGTTOU软中断信号后进入暂停状态TASK_ZOMBIE:进程执行系统调用exit后,进入僵死状态6.2.4 进程的状态和状态转换图6.5 进程状态转换图6.2.5 小结n进程上下文是进程的静态描述进程描述符task_struct结构是系统感知进程存在的唯一实体。 task_struct结构包含了进程调度和运行所需要的大量数据结构,并且常住内存正文段和数据段是进程完成所要求任务的关键部分寄存器和页表等都是为正文段顺利执行而用来存放中间结果、传递参数、或区别控制CPU的访问模式和完成地址变换等功能的n进程的状态转换6.3 进程控制nLinux启动及进程树的形成
10、n进程控制6.3 进程控制6.3.1 Linux启动及进程树的形成Linux启动,系统建立0#进程或idle进程0#进程将根文件系统安装到根“/”下,创建新进程1#进程 (也称为init进程)init进程负责初始化所有新的用户进程init进程调用exec执行程序“/sbin/init”后,为每个终端生成一个子进程,然后等待用户在终端上注册用户在终端输入命令,每个命令都对应一个可执行文件图6.6 进程树的形成6.3.2 进程控制n进程创建fork()、执行exec()和自我终止exit()n创建进程fork()功能:创建一个子进程。调用fork的进程称为父进程格式:pid= fork();从系统
11、调用fork返回时,父进程和子进程除了返回值pid与task_struct结构中某些特性参数不同之外,其他完全相同。CPU在父进程中时,pid值为所创建子进程的进程号,若在子进程时, pid值为零。6.3.2 进程控制n系统调用fork通过执行核心程序fork完成的功能:为子进程分配一个进程描述符task_struct结构为子进程分配一个唯一的进程标识符pid将父进程的地址空间的逻辑副本复制到子进程复制父进程相关联的有关文件系统的数据结构和用户文件描述符表复制软中断信号有关的数据结构设置子进程的状态为TASK_RUNNING,加入就绪队列,并启动调度程序对父进程返回子进程的进程标识符,对子进程
12、返回零图6.7 fork流程图6.3.2 进程控制n执行一个文件的调用系统调用exec()引出另一个程序,它用一个可执行文件的副本覆盖调用进程的正文段和数据段,并以调用进程提供的参数转去执行这个新的正文段程序系统调用exec()包含六种不同的调用格式,但完成同一工作,主要是参数处理方法不同。常用调用格式: execvp( filename, argp); 或 excelp( filename,arg0,arg1,(char *)0);例如,用excelp调用实现一个shell的基本处理过程n用户输入命令后,按以下步骤执行用户命令:用fork,创建子进程用exec,启动命令程序用wait,父进程
13、和子进程同步图6.8 shell 执行过程用C语言实现的程序shell程序的实现6.3.2 进程控制n进程的终止系统调用exit(rv):自我终止当前进程,使其进入ZOMBIE僵死状态,等待父进程进行善后处理exit调用将导致释放除task_struct结构之外的所有资源,并清除进程上下文父进程收到子进程的信息rv和有关子进程的时间信息后,将释放子进程的task_struct结构,并将有关的时间信息加到自己的task_struct结构的有关项中6.4 Linux进程调度n调度原理n调度的时机n调度标识的设置n调度策略与优先数的计算n调度的实现6.4 Linux进程调度nLinux系统的进程调度
14、由核心的调度过程schedule()实现n调度原理Linux系统对实时进程和普通进程采用不同的调度算法普通进程:基于时间片的动态优先数调度法6.4 Linux进程调度n调度时机在Linux系统中,为了减少操作系统设计的复杂性和提高系统执行效率,只在核心的几个预定的位置进行调度n当进程状态发生变化,自动放弃处理机时,主动转入调度过程进行调度。例如,调用sleep()或wait()或exit()放弃处理机n当处理机从核心态向用户态转换时,系统设置了高优先级就绪进程的强迫调度标志need_resched时,则发生调度6.4 Linux进程调度n调度标识的设置Linux只使用一个调度标志need_re
15、sched,该标志保存在进程描述符中调度标志need_resched在以下两种情况被设置为1n当处于运行态的进程的时间片耗尽时n当进程被唤醒,而它的优先级比正在运行的当前进程的优先级高时6.4 Linux进程调度n调度策略与优先数的计算Linux将进程分为普通进程和实时进程,实时进程的调度优先级比普通进程高, Linux总是优先调度实时进程Linux使用三种调度策略n动态优先数调度SCHED_OTHER:用于普通进程n先来先服务调度SCHED_FIFO:用于实时进程n轮转法调度SCHED_RR:用于实时进程6.4 Linux进程调度n调度策略与优先数的计算进程可以通过scehed_setsch
16、eduler( )系统调用选择适合自己的调度策略。如果选择了实时调度,则该进程就转变为一个实施进程进程的调度策略保存在进程描述符中,并被子进程所继承,因此实时进程的子进程仍然是一个实时进程6.4 Linux进程调度n调度的实现进程调度由scehedule( )过程实现,执行过程n进程选择:按照调度策略来找到合适的进程n进程切换:主要完成进程的上下文切换,其中用户进程的地址空间切换由switch_mm()完成,进程的堆栈切换过程由switch_to()实现6.5 进程通信nLinux的进程通信分三部分低级通信管道通信进程间的通信IPCnLinux同时支持网络通信协议TCP/IP6.5.1 Lin
17、ux的低级通信nLinux低级通信主要用来传递进程间的控制信号。主要方式:软中断信号机制:通知对方发生了异步事件n系统调用kill(pid,sig):向进程pid发送软中断信号sign系统调用signal(sig,func):收到信号sig后,执行预先预定的动作func文件锁库函数lockf:实现互斥实现同步的系统调用nwait():用于父子进程之间的同步nsleep(n):当前进程睡眠秒后自动唤醒自己软中断信号nLinux有30个软中断信号和31个实时软中断信号n软中断信号的作用见图6.10n实时软中断信号:其编号从3263,它们没有预先定义的含义,与普通软中断信号的区别在于:实时信号可以排
18、队而不会发生丢失的现象图6.10 Linux软中断信号软中断信号n软中断是对硬中断的模拟发送软中断:向接收进程的task_struct结构中的相应项发送图6.10中的一个信号接收进程:收到软中断信号后,将按照预先规定去执行一个软中断处理程序。但是,软中断处理程序不像硬中断处理程序,收到中断信号后立即被启动,它必须等待接收进程执行时才能生效。另外,一个进程自己也可以向自己发送软中断信号,以便在描写意外情况下,进程能转入规定好的处理程序。文件锁库函数lockf实现互斥nlockf:通过fctnl系统调用实现格式:lockf(fd,function,size)fd是被锁定文件标识function是控制值nF_LOCK:锁定一个文件段nF_UNLOCK:不再锁定nF_TLOCK:测试和锁定一个文件段nF_TEST:测试待锁定的程序段是否已被其他进程锁定size表示自fd文件的当前位置开始处理size个相连字节6.5.2 进程间通信IPCn自学6.6 Linux存储管理n虚存空间和管理内存管理与硬件的体系结构相关,本书以80 x86为例80 x86的分页单元由页目录基地址寄存器CR3以及由操作系统在内存中构造的页目录表、页表共同作用,实现从虚地址转换到相应的物理地址转换过程:n虚拟地址分3部分:页目录地址、页表地址和页内地址图6.18 虚拟地址的内容图6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025护肤品原料采购销售合同
- 2025年非全日制用工劳动合同书范本
- 2025年八省联考新高考数学模拟练习卷(二)
- 基于AI的体育场馆机器人优化系统-洞察阐释
- 2024年浦江县事业单位招聘真题
- 中文个人陈述提纲模板
- 历史建筑群防灾减灾规划基础知识点归纳
- 杭州市余杭区招聘中小学事业编制教师笔试真题2024
- 石大学前儿童保育学课外必读:幼儿园安全管理手册《幼教工作者必读》
- 2025年内阻仪培训试题
- 无抗养殖方案课件
- 医院安保人员培训方案
- 《康复护理学基础》期末考试复习题库(含答案)
- 宁波市高一数学试卷-含答案
- 2023-餐饮公司章程范本
- 住宅项目工程总承包(EPC)技术标
- 地下室SBS改性沥青防水卷材施工方案
- 开油锅红袖章制度
- 眩晕诊疗方案总结优化
- 钢板仓气力输送粉煤灰系统安全操作规范
- 电梯钢带问题分析与对策
评论
0/150
提交评论