操作系统中进程的描述与控制.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统中进程的描述与控制

* fork 将子进程ID返回给父进程的理由是:因为一个进程的子进 程可以多于一个,所以没有一个函数使一个进程可以获得其所有子 进程的进程ID。 fork使子进程得到返回值0的理由是:一个进程只会有一个父进 程,所以子进程总是可以调用getppid以获得其父进程的进程ID。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 返回:子进程中为0,父进程中为子进程ID, 出错为-1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2.5.4  Windows NT的线程 if (i==3) { if (ResumeThread(hThread)==0xFFFFFFFF) { cout Resume thread error. endl; } else { cout Resume thread is ok. endl; } } Sleep(4000); } } 2.5.4  Windows NT的线程 运行结果: CreateThread SubThread1 MainThread1 Suspend thread is ok. MainThread2 MainThread3 Resume thread is ok. SubThread2 SubThread3 MainThread4 SubThread4 为什么要引入进程概念? 进程的基本特征是什么?它与程序有何区 别? 在操作系统中进程是一个具有一定独立功能程序在某个数据集合上 的一次﹎﹎A﹎﹎,进程是一个﹎﹎B﹎﹎概念,而程序是一个﹎﹎C﹎ ﹎的概念。在一单处理机中,若有5个用户进程,在某一时刻,处于就绪 状态的用户进程最多有﹎﹎D﹎﹎个,最少有﹎﹎E﹎﹎个。 A:(1)并发活动;(2)运行活动;(3)单独操作;(4)关联操作。 B,C:(1)组合态;(2)关联态;(3)运行态; (4)等待态;(5)静态;(6)动态。 D,E:(1)1;(2)2;(3)3;(4)4;(5)5;(6)0。 习题 从静态角度看,进程由﹎﹎A﹎﹎、﹎﹎B﹎﹎和﹎﹎C ﹎﹎三部分组成,用户可通过﹎﹎D﹎﹎建立和撤消进程, 通常用户进程被建立后,﹎﹎E﹎﹎。 A:(1)JCB;(2)DCB;(3)PCB;(4)PMT。 B: (1)程序段;(2)文件体;(3)I/O;(4)子程序。 C:(1)文件描述块;(2)数据空间;(3)EOF;(4)I/O缓冲区。 D:(1) 函数调用;(2)宏指令;(3)系统调用;(4)过程调用。 E:(1)便一直存在于系统中,直到被操作人员撤消; (2)随着作业运行正常或不正常结束而撤消; (3)随着时间片轮转而撤消与建立; (4)随着进程的阻塞或唤醒而撤消与建立。 为什么说进程控制块(PCB)是进程存的唯一标志? 习题 正在执行的进程由于其时间片完而被暂停执行,此时进 程应从运行态变为﹎﹎A﹎﹎状态;处于静止阻塞状态的进 程,在进程等待的事件出现后,应转变为﹎﹎B﹎﹎状态; 若进程正处于运行态时,应终端的请求而暂停下来以便研究 其运行情况(执行挂起进程原语),这时进程应转变为﹎﹎C ﹎﹎状态,若进程已处于阻塞状态,则此时应转变为﹎﹎D ﹎﹎状态,若进程已处于就绪状态,则此时应转变为﹎﹎E ﹎﹎状态;执行解除挂起进程原语后,如挂起进程处于就绪 状态,则应转变为﹎﹎F﹎﹎态,如处于阻塞状态,则应转 变为﹎﹎G﹎﹎态;一个进程刚被创建时,它的初始状态为 ﹎﹎H﹎﹎。 A,...,H:(1)静止阻塞;(2)活动阻塞;(3)静止就绪; (4)活动就绪;(5)执行。 习题 * * * * * * * * * * * * * * * * * * * * * * * * * * * #include unistd.h int execl(const char * pathname, const char * arg0, ...); int execv(const char * pathname, char *const argv [] ); int execle(const char * pathname, const char * arg 0, ..., char *const envp []); int execve(const char * pathname, char *const argv [], char *cons

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档