有N个CPU的多CPU系统中, 任意时刻系统中最多有( )个进程处于执行态。
进程的基本状态有、执行态和就绪态等三种。
进程一旦获得CPU就可以投入运行的状态是()
进程状态由阻塞态变为就绪态的过程称为( )
进程由于等待资源或某个事件的发生而暂停执行的状态是( )。
进程一旦获得CPU就可以投入运行的状态是( )
以下是Linux2.4.30进程状态的有()
处于执行态的进程, 其进程控制块中时间片的长度值( )
当前进程的时间片是否用完是由操作系统的机制进行检查的。当时间片为0时,该进程将放弃CPU转入态。
系统中有三个进程INPUT、PROCESS 和OUTPUT,共用两个缓冲区BUF1和BUF2。假设BUF1中最多可放10个数据,现已放入了 2个数据;BUF2最多可放5个数据。INPUT进程负责不断地将输入的原始数据送入BUF1中,PROCESS进程负责从 BUF1中取出原始数据进行处理,并将处理后的结果数据送到BUF2中,OUTPUT 进程负责从BUF2中读取结果数据并输出。请采用记录型信号量机制,实现进程 INPUT、PROCESS和OUTPUT的同步算法。补充完成下列带标号处空缺的内容。 (注:空缺处可能有多行代码)
一条东西走向的河流上,有一根南北走向的独木桥,要想过河只能通过这根独木桥。只要人们朝着相同的方向过独木桥,同一时刻允许有多个人可以通过。如果在相反的方向上同时有两个人过独木桥则会发生死锁。如果一个人想过河,他必须看当前独木桥的通行情况,若当前的通行方向与他的过河方向相同,则他可以过河,否则他必须等待。 下面的代码用记录型信号量机制的wait操作和signal操作解决了由北向南和由南向北过河人的同步问题。
假设系统有三个并发进程read、move和print共享缓冲区B1和B2。进程read负责从输入设备上读取信息,每读取一条记录后把它存入缓冲区B1中;进程move负责从缓冲区B1中取出一条记录,整理后放入缓冲区B2;进程print负责将缓冲区B2中的记录取出并打印输出。缓冲区B1和B2每次只能存放1个记录。要求三个进程协调完成任务,使打印出来的记录与读入的记录个数和次序完全一样。
爸爸擀饼,妈妈烙饼。面板上只能容纳两张擀好的饼,只有当面板上有空闲空间时,爸爸才能把擀好的饼放在面板上。只有当面板上有饼时,妈妈才能从面板上取饼。
有两个进程pA、pB合作解决文件打印的问题:pA将文件记录从磁盘读入主存的缓冲区,每执行一次读一个记录;pB将缓冲区的内容打印出来,每执行一次打印一个记录。缓冲区的大小等于一个记录大小。
假设某系统有四个进程。input1和input2进程负责从不同设备读数据,分别表示为 data1和data2,存放在缓冲区buffer中,output1和output2进程负责从buffer中分别获取data1和data2。buffer中每次只能存放一个数据。
var empty, full1,full2: semaphore;
empty.value=1;
①
②
input1: input2: Begin Begin ③ ⑤ 放数据 datal; 放数据 data2; ④ ⑥ End End output1: output2: Begin Begin ⑦ ⑨ 取数据data1; 取数据 data2; ⑧ ⑩ End End
设有无穷多个整数缓冲区(即为无界缓冲池),A进程从输入设备逐个地读入整数并写入缓冲区,B进程则逐个地从缓冲区取出整数进行打印。其中存放整数的变量为item,缓冲区名为buffer,读取过程使用函数getAItem(int * item)来完成,而打印整数使用函数printAItem(int item)来完成。请用记录型信号量机制实现上述两个进程的同步算法。要求:补充完整下列算法程序中带标号处空缺的内容。(注:每个空缺部分的代码可能是多行代码)。
请根据系统调用的功能,说明系统调用的类型。
简述共享存储系统的两种类型。
进程的3种基本状态是执行态、态、态。
用()解决生产者——消费者问题,对具有相互合作关系的进程,提供了解决问题的模型