欢迎来到天天文库
浏览记录
ID:20351957
大小:503.63 KB
页数:8页
时间:2018-10-11
《linux复习 第五章 进程管理 考试要点整合》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章进程管理1、数据结构l了解重要数据结构的作用和主要信息:·task_struct结构:描述一个进程的所有信息所有进程的task_struct结构连成一个双向链表。policy:表示该进程的调度策略priority:普通进程的调度优先数rt_priority:实时进程的调度优先数counter:进程的运行时间片·向量表task[]:记录所有进程的task_struct结构的位置创建新进程时,将新task_struct的指针加入task[]。·array_freelist链表:记录task[]中所有空槽位创建进程时,从链表中摘下一个空槽位来用
2、;撤销进程时,将它占用的槽位加入链表;·pidhash表:通过pid值查找进程对应的task_struct结构。pid散列后值相等的进程在该表的同一项中排队;l建立task_struct结构的两点说明:(1)结构分配:每个进程的task_struct结构和它的系统堆栈合用8KB的物理地址空间,其中task_struct结构位于这8KB空间的开始,系统堆栈位于这8KB空间的结尾。(2)线程:进程中指令的不同执行路线。与进程采用相同的管理机制和数据结构2、进程的创建(1)进程创建时,拷贝父进程资源的方式•直接拷贝为子进程创建独立的资源结构,拷贝父进
3、程资源;•共享新老进程共享同一资源结构,将其引用计数加1;•CopyonWrite仅拷贝各资源占用的数据结构,而真正对页面的拷贝推迟到写该页的时候才进行;lLinux中进程创建方法:克隆当前进程Ø进程创建的方式:fork、vfork、clone(都调用do_fork函数完成真正的进程创建)·fork:用于普通进程的创建,采用CopyonWrite方式;·vfork:完全共享的创建,新老进程共享同样的资源,完全没有拷贝。·clone介于两者之间,由用户自己指定创建的方式,需要共享什么、需要拷贝什么等。(2)进程的创建函数do_fork:1.创建新
4、进程的task_struct;2.拷贝当前进程task_struct的内容到新结构中;3.将新创建的task_struct结构插入到任务表task[]中;4.为新进程设置自己独特的信息;5.从父进程拷贝各类资源,并设置该结构中的相应域;6.继续设置新进程的task_struct结构;7.将新task_struct结构加入到各队列中;8.唤醒新进程;(3)do_fork函数的返回情况:1.函数返回值:新进程的pid2.返回的位置:Ø在父进程中的返回:Ø在子进程中的返回:(4)系统调用的返回值:·父进程中:新进程pid;·新进程中:0;3、进程调度
5、(1)启动进程调用序的时机(2)进程调用程序—schedule函数①定义两个指针:prev和next;②处理调度任务队列tq_scheduler;·有待处理的任务,则顺序处理其中的每个任务;③检查是否在中断处理中:若是,则立即返回;④检查是否有激活的底半处理:若有,则处理它们;⑤调整当前进程在运行进程队列中的位置;⑥从运行进程队列中找出一个最值得运行的进程(weight值最大);⑦切换新进程:若下一个要运行的进程就是当前进程(next==prev),则不需要切换,简单返回;否则,切换(3)不同类型的进程被调度的优先次序Linux把系统中所有的可
6、运行进程(状态改TASK_RUNNING)都排在运行进程队列中。l若当前进程为实时进程:•policy(调度策略)是SCHED_RRØcounter=0(时间片耗尽):重设counter为它的优先级,移至运行进程队列最后;Ø时间片还没有用完:不调整•policy不是SCHED_RR:不调整l若当前进程为普通进程:根据当前进程状态来调整。•TASK_RUNNING:•TASK_INTERRUPTIBLE且已收到等待的信号:将其状态改为TASK_RUNNING,移至队尾;•TASK_UNINTERRUPTIBLE、TASK_ZOMBIE、TASK_
7、STOPPED或-1:从运行进程队列中摘除。(4)Linux为每个可运行进程定义一个权重weight,weight值越大的可运行进程,其优先级越高。l权重weight值的计算方法:Ø(即当前进程明确声明要放弃CPU)ØØØ(若是当前进程,则weight值再加1)l不同调度算法·先来先服务调度算法(FIFO):非抢占式Ø按照进程到达可运行进程队列的时间次序使用CPUØ优缺点:实现简单、但不能体现优先级·时间片轮转法:剥夺式Ø每次选择进程队列(按时间有序)队头的进程使用CPU;并且运行一段“时间片”后停止运行;若还未执行完毕,则插入队尾,等待下一个
8、轮转周期。Ø优缺点:适合于交互式分时系统、但系统开销较大·优先级调度算法Ø系统赋予每一个进程一个优先级,每次从可运行进程队列中选择一个优先级最高的进程
此文档下载收益归作者所有