版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统进程管理(linux、unix)高庆波张昊明周佳琪周 森王正爽第五组:进程控制块(PCB)进程属性的动态描述(PCB在Linux中对应task_struct,也称为PD;PCB在Unix中对应于proc和user结构)基本信息组成:进程标识(PID、父进程ID、家族关系、用户ID)处理器状态及现场(寄存器状态、堆栈等)进程控制信息(状态、优先权、资源情况等)PCB的内容及用途UNIX:Proc结构(1)标识进程的状态用的状态位。UNIX System 共有9 个状态编码。(2)若干用户标识号,简称UID 或用户ID。这些用户标识号指出该进程属于哪一组用户,具有何种特权,例如是否可以互相
2、发送软中断等等。(3)若干进程标识号,简称PID 或进程ID,说明进程相互间的关系。(4)存储区位置和长度,指明进程在内存或在外存中的位置及大小。这些信息在进程换入换出,以及状态转换等时用到。(5)调度参数,包括优先数等。核心用它们决定进程转换到核心态和用户态的次序以及占有处理机的次序。PCB的内容及用途(6)软中断信号项,记录发向一个进程的所有未处理的软中断信号。(7)各种计时项,给出进程执行时间和系统资源的利用情况。这些信息用来为进程计账、计算调度优先权,以及发送计时信号等。(8)user结构的起始地址项。(9)进程页表指针,用于CPU 访问内存时的地址变换。UNIX:Proc结构PCB的
3、内容及用途(1)指向proc结构的指针,标识出对应于该user结构的proc结构。(2)一个含有系统调用结果的返回值项,当系统调用执行结束之后,所得结果存放该项中以便用户程序可以使用。(3)与用户标识有关的若干项,它们决定进程的各种权限,如存取权限等。UNIX:user结构PCB的内容及用途(4)文件结构有关的若干项,它们描述文件的当前目录和当前根,以及进程的文件系统环境。(5)与文件读写有关的若干项,描述所要传送的数据量,在用户空间的源(或目的)数据的数组地址、读写的文件字节数、读写方式、缓冲区长度与地址等。UNIX:user结构PCB的内容及用途1、进程状态(State) 2、进程调度信息
4、(Scheduling Information)3、各种标识符(Identifiers)4、进程通信有关信息(IPC:Inter_Process Communication)5、时间和定时器信息(Times and Timers)6、进程链接信息(Links)7、文件系统信息(File System)8、虚拟内存信息(Virtual Memory)9、页面管理信息(page)10、对称多处理器(SMP)信息11、和处理器相关的环境(上下文)信息(Processor Specific Context)12、其它信息 LINUX:task_struct进程状态UNIXUNIX System 中进程
5、共有9 个状态:进程在用户态下的执行态。(2) 进程在核心态下的执行态。进程是在用户态下还是在核心态下执行主要由处理机状态字PSW 来区别。(3) 进程处于就绪态,只要核心程序调度到它,就可投入执行。(4) 进程处于就绪态,但交换程序已将其换出内存。只有等待交换程序把它换入内存之后,核心才能调度它去执行。进程状态UNIX(5) 进程正在睡眠,且驻留在内存中的状态。(6) 进程正在睡眠,但交换程序已将其换出内存的状态。(7) 进程正从核心态返回用户态。但核心抢先于它作了进程上下文切换,以调度别的进程执行。最后,当该进程再次被调度到时返回用户态。(8) 进程刚被创建时,由于正在进行资源分配,因此,
6、既不是就绪态,也不是睡眠态。这个状态可被认为是进程的初始状态。(9) 进程执行了系统调用exit后,进入僵死状态。进程状态UNIX进程状态LINUX可运行状态进程正在运行(运行态)、或者正准备运行(就绪态)。正在运行的进程就是当前进程。准备运行的进程只要得到CPU就可以立即投入运行,CPU是这些进程唯一等待的系统资源。可中断等待态、不可中断等待态进程正等待某个事件(event)或某个资源。一定处于系统中的某个等待队列(wait_queue)中。两种等待态的差异:可中断等待态:可被信号唤醒,被唤醒后进入可运行态,等待被调度;不可中断等待态:因等待硬件资源,如某个通道、端口等,在任何情况下都不能被
7、打断,直到资源满足。资源满足后只能用特定的方式来唤醒它,例如唤醒函数wake_up()等 。进程状态LINUX暂停状态进程暂时停止运行以接受某种特殊处理。通常当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或 SIGTTOU信号后就处于这种状态。例如,正接受调试的进程就处于这种状态。僵死状态进程执行了exit()函数后进入该状态,即进程被终止。此状态将由父进程执行wait()系统调用而“唤醒”,真正终止该进程,并回收其资源。处于该状态的进程是死进程,属于系统中的垃圾,必须进行相应处理以释放其占用的资源。 死亡状态僵死进程被父进程回收后的状态。进程状态LINUX用户态运行僵死态zomb
8、ie暂停态stopped内核态运行就绪态可中断睡眠态interruptible不可中断睡眠态uninterruptible继续暂停中断、中断返回返回系统调用或中断可中断睡眠终止exit()唤醒wake_up()调度schedle()信号或唤醒不可中断睡眠LINUX进程调度方法Linux内核的三种调度方法:1、SCHED_OTHER 分数调度策略;2、SCHED_FIFO 实时调度策略,先到先服务;3、SCHED_RR 实时调度策略,时间片轮转。实时进程将得到优先调用,实时进程根据实时优先级决定调度权值、分时进程则通过nice和counter值决定权值,nice越小、counter越大,被调度的
9、概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。LINUX进程调度方法SCHED_RR和SCHED_FIFO相同点:RR和FIFO都只用于实时任务。创建时优先级大于0(199)。按照可抢占优先级调度算法进行。就绪态的实时任务立即抢占非实时任务。SCHED_RR和SCHED_FIFO不同点:当采用SCHED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。SCHED_FIFO一旦占用cpu则一直运行。一直运行到有更高优先级任务到达或自己放弃。如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准
10、备好,FIFO时必须等待该进程主动放弃才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。系统中既有分时调度,又有时间片轮转调度和先进先出调度:1、RR调度和FIFO调度的进程属于实时进程, 以分时调度的进程是非实时进程。2、当实时进程准备就绪后,如果当前cpu正在运行非实时进程, 则实时进程立即抢占非实时进程。3、RR进程和FIFO进程都采用实时优先级作为调度的权值标准,RR是FIFO的一个延伸。FIFO时,如果两个进程的优先级一样,则这两个优先级一样的进程具体执行那一个室友其在队列的位置决定的,这样导致一些不公正性,如果将两个优先级一样的任务的调度策略都设为RR,则保证了这
11、两个任务都可以循环执行, 保证了公平。LINUX进程调度方法 Linux案例分析进程撤销将进程设置为“僵死”状态释放其所占用的资源 _exit_mm(tsk): /释放存储空间 sem_exit(); /释放用户空间的“信号量” _exit_files(tsk); /释放已经打开的文件 _exit_fs(tsk); /释放用于表示工作目录等结构 exit_sighand(tsk);/释放信号处理表 向父进程发进程“死”信号status无返回值,父进程用wait()回收其占用CPU时间 exit_notify(); /通知父进程该“退出”消息,父进程将负责回收这个进程描述符 schedule()
12、; /切换到其他进程 Linux案例分析进程执行调用open_exec()打开可执行文件,返回文件管理结构file调用count()计算传递的程序参数和环境参数数目调用prepare_binprm()初始化数据结构linux_binprm(),读取可执行程序初始的128字节 Linux案例分析进程执行调用copy_stringskernel()和copy_strings()把参数和环境变量复制到数据结构linux_binprm内调用search_binary_handler()将可执行程序读入用户地址空间,在该函数内根据可执行程序初始128字节中关键字不同,调用不同的加载接口 Linux案例分
13、析do_execve函数浅析函数原型:int do_execve(char * filename, char * argv, char * envp, struct pt_regs * regs)/*参数filename,argv,envp分别代表着要执行文件的文件名,命令行参数,环境串pt_regs结构体描述了在执行系统调用时,用户态下的CPU寄存器在核心态的栈中的保存情况。 通过这个参数,sys_execve能获得保存在用户空间的以下信息:可执行文件路径的指针(regs.ebx中)、命令行参数的指针(regs.ecx中)和环境变量的指针(regs.edx中)。 */int do_execv
14、e(char * filename, char * argv, char * envp, struct pt_regs * regs)struct linux_binprm bprm; /* 存放文件执行时所需的信息 */file = open_exec(filename); /*找到并打开对应文件*/ /* 填充linux_binprm结构 */retval = prepare_binprm(&bprm); /* 从可执行文件中读入开头的128个字节到linux_binprm结构brmp中的缓冲区 */*将信息拷贝到新分配的页面*/* 所有准备工作已经完成,所有必要的信息都已经搜集到了lin
15、ux_binprm结构中的bprm中 */retval = search_binary_handler(&bprm,regs); /* 调用search_binary_handler()装入并运行目标程序,根据读入数据结构linux_binprm内的二进制文件128字节头中的关键字,决定调用哪种加载函数 */*成功则返回成功标记, 失败则释放资源并返回失败标记*/ Linux案例分析进程调度进程调度函数schedule()分析 一主要功能: 实现进程的调度,从运行队列的链表中找到一个进程,然后进行分配。可以由几个内核控制路径调用。 二调用方式: 1.当前进程不能获得必要资源而被阻塞,可以直接调
16、用schedule()。将current进程插入适当的等待队列,把状态改为TASK_INTERRUPTABLE或TASK_UNINTERRUPTABLE,然后调用schedule()。一旦资源可用,就从等待队列删除current进程。 2.把current进程的TIF_NEED_RESCHED标志设置为1,由于会在恢复前检查这个标志的值,所以schedule()将在之后某个时间被明确调用,以延迟方式调用调度程序。asmlinkage void schedule(void)/*定义变量*/need_resched:if (unlikely(preempt_get_count() & PREEMPT_ACTIVE) /表明当前进程是否可以抢占goto pick_next_task; /可抢占就去选择最合适的进程pick_next_task:/选择一个最合适的进程idx = sched_find_first_bit(array-bitmap); /找到第一个优先级最高的那个indexqueue = array-queue + idx; /指向选中程序next = list_entry(queue-next, task_t, run_list); /取出选中程序switch_tasks:/进程切换 Linux案例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年医疗业务外包合同
- 2026年宝石交易合同
- 2026年食品安全合同
- 2025年多功能家庭健身器械可行性研究报告
- 2025年新生代消费群体分析及市场潜力可行性研究报告
- 2025年城市公园绿地开发项目可行性研究报告
- 2025年城市公共交通智能管理系统项目可行性研究报告
- 入场安全协议书
- 注资公司合同范本
- 2025年家庭健康监测设备可行性研究报告
- 绿化养护物资管理制度
- 污水站卫生管理制度
- 护理事业十五五发展规划(2026-2030)
- 2025广西专业技术人员公需科目培训考试答案
- 网络故障模拟与处理能力测试试题及答案
- 2025至2030中国聚四氟乙烯(PTFE)行业经营状况及投融资动态研究报告
- 教育、科技、人才一体化发展
- 营销与客户关系管理-深度研究
- 耐压试验操作人员岗位职责
- 2020-2021学年广东省广州市黄埔区二年级(上)期末数学试卷
- 财政部政府采购法律法规与政策学习知识考试题库(附答案)
评论
0/150
提交评论