嵌入式操作系统进程PPT文档格式.ppt
- 文档编号:15593375
- 上传时间:2022-11-07
- 格式:PPT
- 页数:80
- 大小:582KB
嵌入式操作系统进程PPT文档格式.ppt
《嵌入式操作系统进程PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《嵌入式操作系统进程PPT文档格式.ppt(80页珍藏版)》请在冰豆网上搜索。
l进程描述符l进程的内核堆栈进程处于内核态时使用不同于用户态堆栈内核控制路径所用的堆栈很少,因此对栈和描述符来说,8KB足够了xlanchen2007.6.1212EmbeddedOperatingSystemsTask_unionlC语言允许用如下的一个union结构来方便的表示这样的一个混合体l进程描述符的分配/回收/访问=2048xlanchen2007.6.1213EmbeddedOperatingSystemscurrent宏进程描述符宏进程描述符l从刚才看到的进程描述符和内核态堆栈之间的配对,内核可以很容易的从esp寄存器的值获得当前在CPU上运行的进程的描述符指针l因为这个内存区是8KB=213大小,内核必须做的就是让esp有13位的有效位,以获得进程描述符的基地址l这个工作由current宏来完成8191=8192-1=0x2000-1=0x1fff取反:
0xffffe000(最后13位为0)xlanchen2007.6.1214EmbeddedOperatingSystemsCurrent宏的使用宏的使用lCurrent宏可以看成当前进程的进程描述符指针,在内核中直接使用l比如current-pid返回在CPU上正在执行的进程的PIDxlanchen2007.6.1215EmbeddedOperatingSystems进程链表进程链表l为了对给定类型的进程(比如所有在可运行状态下的进程)进行有效的搜索,内核维护了几个进程链表l所有进程链表在进程描述符中:
xlanchen2007.6.1216EmbeddedOperatingSystemslSET_LINKS和REMOVE_LINKS宏用来分别在进程链表中插入和删除一个进程描述符。
xlanchen2007.6.1217EmbeddedOperatingSystemslfor_each_task宏扫描整个进程链表xlanchen2007.6.1218EmbeddedOperatingSystemsTASK_RUNNING状态的进程链表状态的进程链表l当内核调度程序寻址一个新的进程在cpu上运行时,必须只考虑可运行进程,因为扫描整个进程链表效率很低l引入了可运行状态的双向循环链表,也叫运行队列l进程描述符使用用来实现运行队列xlanchen2007.6.1219EmbeddedOperatingSystems对可运行队列的一些操作函数对可运行队列的一些操作函数增加/删除一个可运行进程可运行队列的长度,可运行进程的个数唤醒一个进程,使一个进程可运行xlanchen2007.6.1220EmbeddedOperatingSystemspidhash表及链接表表及链接表l在一些情况下,内核必须能从进程的PID得出对应的进程描述符指针。
例如kill系统调用l为了加速查找,引入了pidhash散列表l用pid_hashfn宏把PID转换成表的索引xlanchen2007.6.1221EmbeddedOperatingSystemspidhash表及链接表表及链接表xlanchen2007.6.1222EmbeddedOperatingSystems进程之间的亲属关系进程之间的亲属关系l程序创建的进程具有父子关系,在编程时往往需要引用这样的父子关系。
进程描述符中有几个域用来表示这样的关系xlanchen2007.6.1223EmbeddedOperatingSystems等待队列等待队列l当要把除了TASK_RUNNING状态之外的进程组织在一起时,linux使用了等待队列lTASK_STOPPED和TASK_ZOMBIE不在专门的链表中lTASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE状态的进程再分成很多类,每一类对应一个特定的事件。
在这种情况下,进程状态提供的信息满足不了快速检索,因此,内核引进了另外的进程链表,叫做等待队列l等待队列在内核中有很多用途,尤其是对中断处理、进程同步和定时用处很大xlanchen2007.6.1224EmbeddedOperatingSystemsl等待队列使得进程可以在事件上的条件等待,并且当等待的条件为真时,由内核唤醒它们l等待队列由循环链表实现l在等待队列上内核实现了一些操作函数Add_wait_queueremove_wait_queuexlanchen2007.6.1225EmbeddedOperatingSystems等待队列的链表等待队列的链表xlanchen2007.6.1226EmbeddedOperatingSystems进程等待进程等待l等待一个特定事件的进程能调用下面几个函数中的任一个lsleep_onlsleep_on_timeoutlinterruptible_sleep_onlinterruptible_sleep_on_timeoutl进程等待由需要等待的进程自己进行(调用)xlanchen2007.6.1227EmbeddedOperatingSystemssleep_onxlanchen2007.6.1228EmbeddedOperatingSystems进程的进程的唤醒唤醒l利用wake_up或者wake_up_interruptible等一系列的宏,都让插入等待队列中的进程进入TASK_RUNNING状态xlanchen2007.6.1229EmbeddedOperatingSystems进程切换进程切换(processswitching)l为了控制进程的执行,内核必须有能力挂起正在CPU上执行的进程,并恢复以前挂起的某个进程的执行,这叫做进程切换,任务切换,上下文切换xlanchen2007.6.1230EmbeddedOperatingSystems进程上下文进程上下文l包含了进程执行需要的所有信息l用户地址空间包括程序代码,数据,用户堆栈等l控制信息进程描述符,内核堆栈等l硬件上下文xlanchen2007.6.1231EmbeddedOperatingSystems硬件上下文硬件上下文l尽管每个进程可以有自己的地址空间,但所有的进程只能共享CPU的寄存器。
l因此,在恢复一个进程执行之前,内核必须确保每个寄存器装入了挂起进程时的值。
这样才能正确的恢复一个进程的执行l硬件上下文:
进程恢复执行前必须装入寄存器的一组数据l包括通用寄存器的值以及一些系统寄存器l通用寄存器如eax,ebx等l系统寄存器如eip,esp,cr3等等xlanchen2007.6.1232EmbeddedOperatingSystemsl在linux中l一个进程的硬件上下文主要保存在thread_struct中l其他信息放在内核态堆栈中xlanchen2007.6.1233EmbeddedOperatingSystemsthread_structxlanchen2007.6.1234EmbeddedOperatingSystems上下文切换上下文切换lswitch_to宏执行进程切换,schedule()函数调用这个宏一调度一个新的进程在CPU上运行l演示:
在schedule()中找到调用switch_to宏的位置lswitch_to利用了prev和next两个参数:
lprev:
指向当前进程lnext:
指向被调度的进程xlanchen2007.6.1235EmbeddedOperatingSystems当前进程仍然是prev这个push操作针对的是当前进程的堆栈保存esi,edi,ebp保存esp到%0中嵌入式汇编中用这种方法表示输入、输出参数,可以从0开始编号%0是什么?
保存esp到当前进程的上下文中从next的上下文中取出堆栈的位置,将其作为当前堆栈堆栈被切换在prev进程的上下文中设置返回地址,返回到下面标号为1处从next进程的上下文中取得该进程的返回地址,放入堆栈中调用_switch_to函数xlanchen2007.6.1236EmbeddedOperatingSystems进程切换的关键语句进程切换的关键语句l堆栈的切换从此,内核对next的内核态堆栈操作,因此,这条指令执行从prev到next真正的上下文切换,因为进程描述符和内核态堆栈紧密联系在一起,改变内核态堆栈就意味改变当前进程xlanchen2007.6.1237EmbeddedOperatingSystemsl什么时候next进程真正开始执行呢?
lcall=保存返回地址+跳转到target处执行lret=从堆栈上获得返回地址,并跳转到该返回地址处执行l?
当_switch_to正常返回时,发生了什么事情?
xlanchen2007.6.1238EmbeddedOperatingSystems标号为标号为1的执行代码处的执行代码处l一个进程被正常切换出时,保存的eip总是标号为1的那个位置l当这个进程再次被调度运行时,恢复在堆栈上的返回地址总是这个11:
popl%ebppopl%edipopl%esixlanchen2007.6.1239EmbeddedOperatingSystems_switch_tol_switch_to用来处理其他上下文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 操作系统 进程