- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 进程管理;4.1 进程(PROCESS);4.1.1 程序次序执行和并发执行;次序执行特征
次序性:按照程序结构所指定次序(可能有分支或循环)
封闭性:独占全部资源,计算机状态只因为该程序控制逻辑所决定
可再现性:初始条件相同则结果相同。如:可经过空指令控制时间关系。
并发执行特征
间断(异步)性:走走停停,一个程序可能走到中途停下来,失去原有时序关系;
失去封闭性:共享资源,受其它程序控制逻辑影响。如:一个程序写到存放器中数据可能被另一个程序修改,失去原有不变特征。
失去可再现性:失去封闭性 -失去可再现性;外界环境在程序两次执行期间发生改变,失去原有可重复特征。;并发执行条件:到达封闭性和可再现性;4.1.2 进程定义和描述;2. 进程特征;3. 进程与程序区分;4. 处理机调度器(dispatcher);5. 进程控制块(PCB, process control block);进程控制块内容;6. PCB组织方式;7. 进程上下文;关键态和用户态;4.1.3 进程状态转换;4.1.3.1 两状态进程模型;1. 状态;2. 转换;4.1.3.2 五状态进程模型;五状态进程模型(单队列结构);五状态进程模型(多队列结构);1. 状态;创建状态(New):进程刚创建,但还不能运行(一个可能原因是OS对并发进程数限制);如:分配和建立PCB表项(可能有数目限制)、建立资源表格(如打开文件表)并分配资源,加载程序并建立地址空间表。
结束状态(Exit):进程已结束运行,回收除PCB之外其它资源,并让其它进程从PCB中搜集相关信息(如记帐,将退出码exit code传递给父进程)。;2. 转换;超时(Timeout):因为用完时间片或高优先进程就绪(被抢先)等造成进程暂停运行;
事件等候(Event Wait):进程要求事件未出现而进入阻塞;可能原因包含:申请系统服务或资源、通信、I/O操作等;
事件出现(Event Occurs):进程等候事件出现;如:操作完成、申请成功等;;4.1.3.3 挂起进程模型;单挂起进程模型;双挂起进程模型;1. 状态;2. 转换;激活(Activate):把一个进程从外存转到内存;可能有以下几个情况:
就绪挂起到就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,会进行这种转换;
阻塞挂起到阻塞:当一个进程释放足够内存时,系统会把一个高优先级阻塞挂起(系统认为会很快出现所等候事件)进程;;事件出现(Event Occurs):进程等候事件出现;如:操作完成、申请成功等;可能情况有:
阻塞到就绪:针对内存进程事件出现;
阻塞挂起到就绪挂起:针对外存进程事件出现;
收容(Admit):收容一个新进程,进入就绪状态或就绪挂起状态。进入就绪挂起原因是系统希望保持一个大就绪进程表(挂起和非挂起);;4.1.4 操作系统代码执行;4.2 进程控制;4.2.1 进程控制功效;4.2.2 进程创建和退出;2. 退出;4.2.3 UNIX进程阻塞和唤醒;调用wait挂起本进程以等候子进程结束,子进程结束时返回。父进程创建多个子进程且已经有某子进程退出时,父进程中wait函数在第一个子进程结束时返回。
其调用格式为pid_t wait(int *stat_loc);;返回值为子进程ID。
waitpid()等候指定进程号子进程返回并修改状态;
waitid()等候子进程修改状态;
调用pause挂起本进程以等候信号,接收到信号后恢复执行。当接收到中止进程信号时,该调用不再返回。
其调用格式为int pause(void);;;调用sleep将在指定时间seconds内挂起本进程。其调用格式为:unsigned sleep(unsigned seconds);;返回值为实际挂起时间。
调用kill可发送信号sig到某个或一组进程pid。其调用格式为:int kill(pid_t pid, int sig);。 信号定义在文件/usr/include/asm/signal.h中。命令kill可用于向进程发送信号。如:kill -9 100将发送SIGKILL到ID为100进程;该命令将中止该进程执行。;实例:UNIX_wait;main() {
int local,i;
pid_t child;
if ((child=fork()) == -1)
{ // 创建失败
printf(Fork Error.\n);
}
if (child == 0)
{// 子进程
printf(Now it is in child process.\n);
if (execl(/home/xyong/work/ttt,ttt,NULL) == -1)
{ //
您可能关注的文档
最近下载
- “十五五”消防事业发展规划.docx VIP
- 2025高考数学专项讲义第06讲几何法求空间角与空间距离(学生版+解析).docx VIP
- 2025年执业药师承诺书.pdf VIP
- 高考语文阅读理解《到梨花屯去》含答案.docx VIP
- (高清版)-B-T 2651-2023 金属材料焊缝破坏性试验 横向拉伸试验.pdf VIP
- 2025年无人机驾驶员实操考核模拟试题及答案.docx VIP
- 中国偶像产业迭代研究报告-(研究报告).pdf VIP
- 2025年广东省高中历史学业水平考试综合测评(一)历史试题(原卷版+解析版).docx VIP
- 2025-2026秋季学年第一学期“1530”安全教育记录表.docx VIP
- 人教版小学数学三年级上册《多位数乘一位数》教材分析.doc VIP
原创力文档


文档评论(0)