何为系统调用?请简述系统调用与一般函数调用的区别。
请说明系统调用与一般函数调用的区别。
普通函数执行过程中,在函数调用前后,进程都处于态。
系统调用是程序与程序之间的接口。
一般函数调用运行在态,系统调用运行在态。
整型信号量的值只能被操作和操作改变,不允许系统中的其他程序改变信号量的值。
设某一临界区对应的记录型信号量mutex,其初值为1(即mutex.value=1),当mutex.value=-2时,表示有个进程在临界区内,有个进程等待进入临界区。
在wait和signal这两个操作中,对信号量的访问是不可以被中断的,这两个操作都是操作。
在记录型信号量机制中,当s.value<0时,s.value的绝对值等于( )
用整型信号量实现进程互斥的思想是什么?
某展览会任何时刻最多可容纳500名参观者,当展览厅中少于500名参观者时,则厅外的参观者可立即进入,否则需在外面等待。参观者进入展厅时,都必须在入口处登记(并领取资料和礼品),假定入口处有5位工作人员,每位工作人员每次只能接待一个参观者登记,请用记录型信号量机制实现参观者进程的同步算法。
register()是完成登记并领取资料和礼品的函数;visit()是完成参观展览的函数;leave()是表示参观完毕离开的函数。下面已经给出了部分代码,请填写1~2空白处的代码。
注:每一空可能不止一行代码。
struct semaphore cap, officer; //分别表示展览会容量、工作人员的信号量
(1)
void process Visitor() //参观者
{
(2)
}
有两个并发进程P1、P2,其程序代码如下:
如果上述每行代码都具有原子性,请写出打印出的z和c所有可能的值。(其中x为P1、P2的共享变量)
说明资源忙,进程必须等待的整型量需满足()
对于记录型信号量机制,每次的wait(s)操作,意味着进程请求一个单位的资源,当s. value ( )时,表示资源已分配完毕。
对一个记录型信号量S,每执行一次wait(S)操作,S.value减1。若S.value为0,则该进程;若S的数值小于0,则该进程。
在生产者一消费者问题中,使用有界缓冲区来实现进程间的通信属于( )
进程之间的通信需要通过用于暂存消息的共享数据结构来实现,如信箱。这体现了()通信方式
简述共享存储系统的两种类型。
如果有N(N>2)个进程并发运行,则不可能出现的情形是( )