


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.1比拟程序的顺序执行和并发执行答:程序顺序执行程序并发执行顺序性:处理机的操作严格按照程序 所规定的顺序执行间断性:共享系统资源,程序之间形 成了相互制约的关系封闭性:程序一旦开始执行,执行结 果不受外界因素影响失去封闭性:多个程序共享系统中的 各种资源,这些资源的状态将由多个 程序来改变,致使程序失去封闭性。可再现性:只要程序执行时的环境和 初始条件相同,都将获得相同的结 果。不可再现性:程序失去封闭性,计算 结果与并发程序执行速度有关。程序 经过屡次执行后,虽然他们执行时的 环境和初始条件相同,但是结果却不 相同。2.2比拟程序和进程答:1进程是一个动态的概念,而程序那么是一个静态的概
2、念。程序是指令的有序集合,没有任何 执行含义,而进程那么强调执行过程,它动态地被创立,并被调度执行后消亡。2进程具有并行特征,而程序没有。进程具有并行特征的两个方面,即独立性和异步性。也 就是说,在不考虑资源共享的情况下,各进程的执行是独立的,它们之间不存在逻辑上的制约 关系,各进程的是异步的。由于程序不反映执行过程,所以不具有并行特征。3进程是系统中独立存在的实体,是竞争资源的根本单位。进程对应特殊的描述结构并有申请、使用、释放资源的资格。由于系统中存在多个进程,系统资源的有限性必然导致多 个进程对资源的共享和竞争,从而使进程的并行性受到系统的制约。4进程的存在必然需要程序的存在,但进程和程
3、序不是一一对应的。由于进程是程序 的执行过程,所以程序是进程的一个组成局部。处于静止状态的程序并不对应于任何进程。当程序被处理机执行时,它一定属于某一个或者多个进程。属于进程的程序可以是一个,也可 以是多个。不同的进程可以包含同一个程序,只要该程序所对应的数据集不同。2.3试对进程的状态及状态转换进行总结,注意状态转换的物理含义及转化条件片已完而被暂停执行时,该进程便由执行状态又回复到就绪状态;如果因发生某事件而使 进程的执行受阻,使之无法继续执行,该进程将由执行状态转变为阻塞状态。引入挂起状 态后,又增加了从挂起状态到非挂起状态之间的转换,当进程处于未被挂起的就绪状态时, 用挂起原语Susp
4、end将该进程挂起后,该进程便转变成为静止就绪状态,此时进程不再被 调度执行。当进程处于未被挂起的阻塞状态时,用Suspe nd原语将它挂起后,进程便转变为静止阻塞状态,处于该状态的进程在其所期待的事件出现后,将从静止阻塞状态变成静 止就绪。处于活动就绪状态的进程,假设用激活原语Active激活后,该进程将转变为挂起就绪状态。处于活动阻塞状态的进程,假设用激活原语Active激活后,将转变为阻塞挂起状态。2.4试举例说明引起进程创立、撤消、阻塞或被唤醒的主要事件分别有哪些? 答:引起进程创立,如用户登录;作业调度;提供效劳;应用请求。进程撤销,当一个进程到达了自然结束点,或时出现了无法克服的错
5、误,或是被操作 系统所中介,或是被其他有终止权的进程所终结,都会引起进程撤销。进程阻塞,请求系统效劳,不能立即满足;启动某种操作,且必须在该操作完成之后才能 继续执行;新数据尚未到达,相互合作进程的一方需首先获得另一进程数据才能继续;无新工作可做,特定功能系统进程当完成任务且暂无任务。进程被唤醒,系统效劳满足;操作完成;数据到达;新任务出现。2.5试根据你自己的理解,采用类 C语言设计和描述操作系统关于进程控制块的数据结 构、组织方式及管理机制。在此根底上,给出进程的创立、终止、阻塞、唤醒、挂起 与激活等函数原型及函数代码。注意,对于过于复杂的功能或你无法解决的细节可采 用指定功能的函数模块如
6、处理机调度scheduler。来替代。答:进程控制块的数据结构:Struct task_struct long state; /* 任务的运行状态 -1 不可运行, 0 可运行 就绪 , >0 已停止 */long counter;/* 运行时间片计数器 递减 */long priority;/* 优先级 */long signal;/* 信号 */struct sigaction sigaction32;/* 信号执行属性结构,对应信号将要执行的操作和标志信息 */ long blocked; /* bitmap of masked signals */* various fields
7、 */int exit_code;/* 任务执行停止的退出码 */unsigned long start_code,end_code,end_data,brk,start_stack; /* 代码段地址 代码长度字节 数代码长度 + 数据长度字节数总长度 堆栈段地址 */long pid,father,pgrp,session,leader;/* 进程标识号 进程号 父进程号 父进程组号 会话号 会 话首领 */unsigned short uid,euid,suid; /* 用户标识号用户 id 有效用户 id 保存的用户 id*/unsigned short gid,egid,sgid ;
8、 /* 组标识号组 id 有效组 id 保存的组 id*/ long alarm;/* 报警定时值 */long utime,stime,cutime,cstime,start_time;/* 用户态运行时间 内核态运行时间 子进程用户态 运行时间子进程内核态运行时间 进程开始运行时刻 */ unsigned short used_math;/* 标志:是否使用协处理器 */ /* file system info */int tty; /* -1 if no tty, so it must be signed */ unsigned short umask;/* 文件创立属性屏蔽位 */ s
9、truct m_inode * pwd;/* 当前工作目录 i 节点结构 */struct mnode * root;/* 根目录i节点结构*/struct mnode * executable;/* 执行文件 i节点结构 */un sig ned long close_on_exec;/*执行时关闭文件句柄位图标志*/struct file * filpNR_OPEN;/* 进程使用的文件表结构 */* ldt for this task 0 - zero 1 - cs 2 - ds&ss */struct desc_struct ldt3;/*本任务的局部描述符表。0-空,1-代码
10、段cs, 2-数据和堆栈段ds&ss*/* tss for this task */Struct tss_struct tss;/* 本进程的任务状态段信息结构 */;组织方式:链接方式执行指针执行指针阻塞段列指ft阻塞臥列指针空闲乩列指针空闲戎列指针图2 PQB链接队列示意图Typedef struct LNode ElemType data;/存储pcb块的数据信息struct Lnode *next; / 指针域LNode, * Lin kList;结构指针链表查找方式:Status GetElem_L(LinkList L, int i, ElemType &e) L是
11、带头结点的链表的头指针,以e返回第i个元素p = L-> next; j = 1; / p指向第一个结点,j为计数器 while (p && j<i) p = p->n ext; +j; 顺指针向后查找,直到p指向第i个元素或p为空if ( !p | j>i )return ERROR; II第i个元素不存在e = p->data;II取得第i个元素return OK; II GetElem_L 算法复杂度为:O(ListLe ngth(L)索引方式系统建立几张索引表。每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。当指针查找索
12、引表,找出 PCB的地址,再通过指针找对应该地址的PCB块。平均查找长度:=(n/s+ s)/2+1n为表的长度s为表中的记录个数进程管理机制:用户使用应用程序,应用程序要访问系统调用接口,产生中断,而系统调用接口需要查询 中断向量表,cpu根据 中断向量号跳转到所需的效劳中,即系统调用效劳程序。系统效劳 程序会调用内核函数create,term in ate,block,wakeup,suspe nd,activQ进程的创立与终止:创立:Bool fret=Bool CreateProcess(LPCTSTR lpApplivatio nName,/全部或局部地指明包括可执行代码的EXE文件
13、的文件名LPCTSTR lpApplivatio nName,向可执行文件发送的参数LPCTSTR lpApplivatio nName, /返回进程句柄的平安属性.主要指明这一句柄是否应该由其 他子进程所继承LPSECURIITY_ATTRIBUTES IpThreadAttributes,返回进程的主线程的句柄的平安属性 BOOL bln heritHa ndle,一种标志,告诉系统允许新进程继承创立者进程的句柄DWORD dwCreationFlage, /特殊的创立标志 (如 CREATE_SUSPENDE的位标记LPVOID lpE nviro nment, /向新进程发送的一套环境
14、变量;如为n ull值那么发送调用者环境LPCTSTR lpCurre ntDirectory, /新进程的启动目录STARTUPINFO lpStartupI nfo, /STARTUPINF结构,包括新进程的输入和输出配置的详情LPPROCESS_INFORMATIOlNpProcessInformation / 调用的结果块;发送新应用程序的进程 和主线程的句柄和 ID);终止:If (m_hPro)/如果句柄合法if(!TerminateProcess(m_hPro,0)/ 根据句柄,终止刚刚创立的进程AfxMessageBox( 关“闭进程出现错误! );Exit 0 else Af
15、xMessageBox("Termi nateProces成功");原语:被创立进程的外部标识符 n、初始CPU状态SO,进程优先数K0、初始内存M0以及所需资源的清单R0等、某进程运行的中间结果 acco创立:从PCB集合种索取一个空白PCB,并获得该PCB的内部标识符i ;然后,把调用者提供的参数,以及从执行过程EP中获得的调用者内部标识j,填入该PCB,设置记帐数据,置新进程为 “静止就绪 状态;最后,把此PCB分别插入就绪队列RQ和进程家族中。Procedure Create(n,SO,kO,MO,RO,acc)begini:=get Internal Name(n
16、);/ 获得内部名i.id:=n;/填外部名i.Priority:=kO; / 填优先表i.cpu state:=S0;填 cpu 初始状态i.mainstore:=MO; / 填写主存区域 i.resource:=RO;/填写资源清单i.status:='Readys' /填写进程状态 j:=EP;/获/ 取调用者内部标识i.Parent:=j;/填入i进程的父进程ji. progeny:=null;/i 的家庭指针为空geny:=i;/把i填入其父进程pcb中的家庭指针处i.state:=RQ;i所在状态队列首指针Insert(RQ,i);把i进程插入RQ队尾co
17、ntinue;end终止:Procedure destroy(n) BeginSched:=false;i:=getinternal name(n);/ 获取 n 进程的内部名kill(i);if sched then scheduler else continue;假设Schde为真,那么转调度程序,否那么继续endprocedure kill(i)beginif i.stata(i)= executing thenbegin stop(i);sched:=true end;remove (i.stata,i);/将被撤消进程从所指示的队列中除去for all S ge ny do
18、 kill(s);for all r (i.main store Ui.resources) doif owned(r) then insert (r.semaphore,r.date);/ 属于父进程的资源归还且插入父进程资源清单 for all created resources(i) do remove descriptor (R);/ 撤消自己的资源清单归还系统 remove process control block (i);end阻塞:Procedure block阻塞执行进程中的某个进程EP的进程号iBegini:=EP;从执行进程EF获得调用者内部标识符Stop(i);i.st
19、atus:= blockda ; i.stata=WQI(阻塞队列指针insert(WQ(r),i); / 把i插入 WQ队尾scheduler/转调度程序唤醒:Procedure wakeup(n)Begini :=getinternal name(n);remove (WQ(r),i);/把i进程从等待r而受阻塞队列中摘除i.status:= reac置i进程为就绪"状态i.sdata:=RQ;把i进程插入到就绪队列insert(RQ,i);continueend挂起:Procedure suspend(n,a)Begini:=getinternal name(n);s:=i.s
20、tatus;if s= executing then stop(i);a:=copy PCB(i);i.status:=if s= blockeda then “blockeds else readys;if s= executing endthen scheduler else con ti nue;激活:Procedure active (n)Begi ni:=get in ter nal n ame (n)i.status:=if i.status= readys then“ readya else blockeda;if i.status= readys then sch当激活后的进程
21、处于“ ready状态针,将引起重新调度else con ti nueend2.1什么是临界区?引入临界区目的是什么?答:临界区:每个进程中访问临界资源的那段代码称为临界区。目的:如果共享该临界资 源的每个进程能互斥的进入自己的临界区,就能保证对临界资源的互斥访问。2.2记录型信号量的物理意义。答:记录型信号量的初值表示系统中某类资源的数目,因而又被称为资源信号量。当值为正(n)时,表示当前n个临界资源可用,或者最多还可允许n进程进入该资源对应的临界区;当值为0时表示临界资源已经全部被占用;当值为负(-n)时其绝对值表示等待使用该资源的进程数。信号量整型和记录型不用原语能否实现进程互斥?各举一
22、反例说明 答:整型:不能。S=1process1:单独执行每个程序都是正确的,因为每个 程序都能实现一个进程进入临界区。但 是,当程序并发执行的时候P1: while s<=0 do no_op s=1 没进入循环P2: while s<=0 do no_op s=1 没进入循环P1: s=s-1s=6进入临界区P2: s=s-1s二进入临界区两个进程可能同时进入临界区begi nrepeatwhile s<=0 do no_ops=s-1N=N-1;访问临界资源s=s+1un til false;endprocess2: begi nrepeatwhile s<=0 do no_ops=s-1N=N+1;s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 虚拟试穿体验提升研究-洞察阐释
- 智能家居系统智能化操作与用户交互创新-洞察阐释
- 2025-2030全球及中国数字医疗中的5G行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国定制抗体服务行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国基于Web的医疗计费软件行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球与中国速溶黑咖啡行业应用领域消费与投资潜力盈利性研究报告
- 2025-2030全球与中国光伏玻璃行业发展现状及趋势预测分析研究报告
- 2025-2030便携式GFCI、临时电源和汽车电池配件行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030低能量饮料行业市场发展分析及发展趋势与规划建议研究报告
- 2025-2030中国黄金珠宝首饰行业市场发展分析及发展前景与投资研究报告
- 外科学第七版周围血管和淋巴管疾病
- 安全生产试题库看图找错课件
- 二级综合医院基本标准(2021年版)
- 北京市初中学业水平考试体育与健康知识模拟练习题(含答案)
- 市政工程质量通病与防治
- 配电项目工程重点、难点及解决措施
- 北京理工大学出版社二年级下册《劳动》教案
- JJG 966-2010手持式激光测距仪
- GB/T 26659-2011铸造用再生硅砂
- GB/T 21558-2008建筑绝热用硬质聚氨酯泡沫塑料
- GB/T 18494.1-2014变流变压器第1部分:工业用变流变压器
评论
0/150
提交评论