清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 系统调用界面又 进程创建与调度 文件 系统 与文件系统接 进程间控制部分 口 存储管理部分 图63进程控制系统
图6.3 进程控制系统
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS 进程控制系统与文件系统的接口有两个 是在 系统内部与文件系统直接发生联系的有关表格和数 据结构。另一个则是通过系统调用界面,也就是中 断和陷阱( Interrupt&Trap)总控部分与文件系 统发生联系。以便把待执行的文件读入内存,或把 已经执行完毕的程序和结果写入文件系统长期保存。 调度模块的作用是分配CPU。显然,在进行资源分 配、特别是CPU分配时要按照一种既公平合理又 有很高效率的分配原则。在UNⅨ系统中,这个调 度原则就是按照进程的优先级,每次调度具有最高 优先级的进程去占有处理机。每一个进程,从它被 创建的那一时刻起,就具有了一个随时间动态变化 的优先级。在 UNIX System V中,系统有两个时 机计算各进程的优先级。这两个时机是:
进程控制系统与文件系统的接口有两个,一个是在 系统内部与文件系统直接发生联系的有关表格和数 据结构。另一个则是通过系统调用界面,也就是中 断和陷阱(Interrupt &Trap)总控部分与文件系 统发生联系。以便把待执行的文件读入内存,或把 已经执行完毕的程序和结果写入文件系统长期保存。 调度模块的作用是分配CPU。显然,在进行资源分 配、特别是CPU 分配时要按照一种既公平合理又 有很高效率的分配原则。在UNIX系统中,这个调 度原则就是按照进程的优先级,每次调度具有最高 优先级的进程去占有处理机。每一个进程,从它被 创建的那一时刻起,就具有了一个随时间动态变化 的优先级。在UNIX System Ⅴ 中,系统有两个时 机计算各进程的优先级。这两个时机是:
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS (1)每秒钟一次的时间片结束发生时钟中断时,对那 些优先级大于某个常数的进程进行重新计算 (2)当前执行进程请求系统调用后,从中断和陷阱总 控程序返回当前执行的用户态时,重新计算当前执 行进程的优先级。 这里要指出的一点是,系统计算各进程优先级的时 间并不总是发生进程调度的时间。 UNIX System V中引起进程调度的情况有五种: (1)当前执行进程申请内存等系统资源未得到满足, 从而自己调用slee过程放弃处理机进入睡眠状态 (2)为了与其他并发进程保持同步,调用了wa或 stop过程等,从而主动放弃了处理机而进入睡眠状 态
(1) 每秒钟一次的时间片结束发生时钟中断时,对那 些优先级大于某个常数的进程进行重新计算。 (2) 当前执行进程请求系统调用后,从中断和陷阱总 控程序返回当前执行的用户态时,重新计算当前执 行进程的优先级。 这里要指出的一点是,系统计算各进程优先级的时 间并不总是发生进程调度的时间。 UNIX System Ⅴ 中引起进程调度的情况有五种: (1) 当前执行进程申请内存等系统资源未得到满足, 从而自己调用sleep 过程,放弃处理机进入睡眠状态。 (2) 为了与其他并发进程保持同步,调用了wait或 stop过程等,从而主动放弃了处理机而进入睡眠状 态
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS (3)当系统发现系统中某进程的优先级已高于当前执 行进程的优先级时,系统设置一个名叫 runrun的调 度标志。但是,系统并不在 runrun标志刚被设置时 就开始调度。它要等待到系统在核心态下的程序执 行完毕,由核心态转入用户态时,也就是在中断陷 入总控处理程序结束之前的瞬间,检查 runrun标志 并进行调度。 (4)时间片用完,且当前进程的优先级低于其他就绪 进程。 (5)当前进程调用ext,自我终止时。 进程通信是 UNIX SyStem V的一个重要组成部分。 进程通信既包括用来控制各并发进程执行速度和资 源共享与竞争的低级通信,也包括进程之间大量传 递信息的高级通信
(3) 当系统发现系统中某进程的优先级已高于当前执 行进程的优先级时,系统设置一个名叫runrun的调 度标志。但是,系统并不在runrun标志刚被设置时 就开始调度。它要等待到系统在核心态下的程序执 行完毕,由核心态转入用户态时,也就是在中断陷 入总控处理程序结束之前的瞬间,检查runrun标志 并进行调度。 (4) 时间片用完,且当前进程的优先级低于其他就绪 进程。 (5) 当前进程调用exit,自我终止时。 进程通信是UNIX System Ⅴ 的一个重要组成部分。 进程通信既包括用来控制各并发进程执行速度和资 源共享与竞争的低级通信,也包括进程之间大量传 递信息的高级通信
清华大学出版社 000000 TSINGHUA UNIVERSITY PRESS UNIX系统在核心态下执行时,系统进程只能借助 sle原语和 wakeup(或 set-run)原语实现同步 sle原语使当前执行进程以指定原因和优先数睡 眠,而 wakeup则唤醒在指定原因上睡眠的所有进 程。用户进程不能使用slee原语和wake-up原语。 用户进程之间要实现同步通信的话,一种办法是利 用系统核心提供的软中断信号进行通信。UNIX System V为用户使用软中断通信提供了相应的系 统调用。另一种办法是调用系统调用 waitEsleep使 得当前执行进程进入等待状态,直到所等待事件发 生时由核心唤醒或睡眠到一定时间后自动唤醒。用 户进程之间实现同步的高级办法是使用 SystemⅤ 提供的信号量方法。 System V中的IPC模块为进程 间的大量信息传送提供了众多的系统调用
UNIX系统在核心态下执行时,系统进程只能借助 sleep 原语和wakeup(或set-run)原语实现同步。 sleep 原语使当前执行进程以指定原因和优先数睡 眠,而wakeup则唤醒在指定原因上睡眠的所有进 程。用户进程不能使用sleep 原语和wake-up原语。 用户进程之间要实现同步通信的话,一种办法是利 用系统核心提供的软中断信号进行通信。UNIX System Ⅴ 为用户使用软中断通信提供了相应的系 统调用。另一种办法是调用系统调用wait或sleep使 得当前执行进程进入等待状态,直到所等待事件发 生时由核心唤醒或睡眠到一定时间后自动唤醒。用 户进程之间实现同步的高级办法是使用System Ⅴ 提供的信号量方法。System Ⅴ中的IPC模块为进程 间的大量信息传送提供了众多的系统调用