操作系统中PV操作疑问操作系统中,常说的PV操作:P操作V操作各自对应的是哪个英文单词?为了方便记忆,不至混淆,所以想弄明白,我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 23:09:40
操作系统中PV操作疑问操作系统中,常说的PV操作:P操作V操作各自对应的是哪个英文单词?为了方便记忆,不至混淆,所以想弄明白,我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄

操作系统中PV操作疑问操作系统中,常说的PV操作:P操作V操作各自对应的是哪个英文单词?为了方便记忆,不至混淆,所以想弄明白,我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄
操作系统中PV操作疑问
操作系统中,常说的PV操作:P操作V操作各自对应的是哪个英文单词?
为了方便记忆,不至混淆,所以想弄明白,
我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄克斯特拉用荷兰文定义的,因为在荷兰文中,通过叫passeren,释放叫vrijgeven,PV操作因此得名.这是在计算机术语中不是用英语表达的极少数的例子之一.

操作系统中PV操作疑问操作系统中,常说的PV操作:P操作V操作各自对应的是哪个英文单词?为了方便记忆,不至混淆,所以想弄明白,我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄
1962年,狄克斯特拉离开数学中心进入位于荷兰南部的艾恩德霍芬技术大学(Eindhoven Technical University)任数学教授.在这里,他参加了X8计算机的开发,设计与实现了具有多道程序运行能力的操作系统——THE Multiprogramming System.THE是艾恩德霍芬技术大学的荷兰文Tchnische Hoogeschool Eindhov –en的词头缩写.狄克斯特拉在THE这个系统中所提出的一系统方法和技术奠定了计算机现代操作系统的基础,尤其是关于多层体系结构,顺序进程之间的同步和互斥机制这样一些重要的思想和概念都是狄克斯特拉在THE中首先提出并为以后的操作系统如UNIX等所采用的.为了在单处理机的情况下确定进程(process)能否占有处理机,狄克斯特拉将每个进程分为“就绪”(ready)、“运行”(running)和“阻塞”(blocking)三个工作状态.由于在任一时刻最多只有一个进程可以使用处理机,正占用着处理机的进程称为“运行”进程.当某进程已具备了使用处理机的条件,而当前又没有处理机供其使用,则使该进程处于“就绪”状态.当运行进程由于某种原因无法继续运行下去时,就停止其占用处理机,使之进入“阻塞”状态,待造成其退出运行的条件解除,再进入“就绪”状态.而对系统中所有同时运行的进程,在一个进程访问共享数据时,另一个进程不访问该数据)和互斥(mutually- exclusive,指两个进程不能同时在一个临界区中使用同一个可重复使用的资源,诸如读写缓冲区)两个关系,狄克斯特拉巧妙地利用火车运行控制系统中的“信号灯”(semaphore,或叫”信号量”)概念加以解决.所谓信号灯,实际上就是用来控制进程状态的一个代表某一资源的存储单元.例如,P1和P2是分别将数据送入缓冲B和从缓冲B读出数据的两个进程,为了防止这两个进程并发时产生错误,狄克斯特拉设计了一种同步机制叫“PV操作”,P操作和V操作是执行时不被打断的两个操作系统原语.执行P操作P(S)时信号量S的值减1,若结果不为负则P(S)执行完毕,否则执行P操作的进程暂停以等待释放.执行V操作V(S)时,S的值加1,若结果不大于0则释放一个因执行P(S)而等待的进程.对P1和P2可定义两个信号量S1和S2,初值分别为1和0.进程P1在向缓冲B送入数据前执行P操作P(S1),在送入数据后执行V操作V(S2).进程P2在从缓冲B读取数据前先执行P操作P(S2),在读出数据后执行V操作V(S1).当P1往缓冲B送入一数据后信号量S1之值变为0,在该数据读出后S1之值才又变为1,因此在前一数未读出前后一数不会送入,从而保证了P1和P2之间的同步.我国读者常常不明白这一同步机制为什么叫PV操作,原来这是狄克斯特拉用荷兰文定义的,因为在荷兰文中,通过叫passeren,释放叫vrijgeven,PV操作因此得名.这是在计算机术语中不是用英语表达的极少数的例子之一. 信号量   信号量是最早出现的用来解决进程同步与互斥问题的机制,   包括一个称为信号量的变量及对它进行的两个原语操作.
信号量的概念
  1.信号量的类型定义   每个信号量至少须记录两个信息:信号量的值和等待该信号量的进程队列.它的类型定义如下:(用类PASCAL语言表述)   semaphore = record   value: integer;   queue: ^PCB;   end;   其中PCB是进程控制块,是操作系统为每个进程建立的数据结构.   s.value>=0时,s.queue为空;   s.value