coursera 《现代操作系统》 -- 第五周 同步机制(1)

临界区块Critical section)指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源有无法同时被多个线程访问的特性。(不是字面意思的一个区域,是程序片段的集合)

1. 为了完成一件事,汇编有时会分成多条指令进行执行。

2.进程有一定的时间片,用完了自己的时间片就会被切换下去。

这就带来了问题:如果没有执行完,就被切换下CPU,会造成意想不到的问题。

处理方法:

加锁

使用原语操作,不允许被中断(即使用完了时间片,也不下来;忽视抢占)

为什么需要同步?

1. 进程间的时序关系。但是初始状态下,任意进程都可能上CPU,它们是无序的

错题

3。

以下是解决进程互斥进入临界区的一种解法。

P:

     … …

     pturn = true;

     while (qturn) ;

         临界区操作

     pturn = false;

     … …

Q:

     … …

     qturn = true;

     while (pturn) ;

         临界区操作

     qturn = false;

     … …

其中,pturn、qturn的初值为false

如果P、Q两个进程同时想进入临界区,那么会发生下面哪一种情形?

条件并不是代码中写的那样,应该是:

所以答案是两者都不能进入

下列描述的四个现象中,哪一项既具有同步关系又具有互斥关系?

多个不同的用户进程一起玩麻将电子游戏

多个不同的用户进程编译自己的程序

多个不同的用户进程一起玩踢足球电子游戏

多个不同的用户订票进程访问票额数据库

互斥两个或多个进程 在读写某些共享数据的时候,像这个 in 就是共享数据 而最后的结果取决于进程运行的一个精确的时序 就是时间序列,就是它一跟时间是相关的 那么这就是带来了竞争条件 所以竞争条件呢,是由于有这样一个共享的资源,共享的数据,而多个进程 都对这个数据进行相应的操作带来的 那么这样就产生了这样一个概念--进程互斥 由于在一个并发环境里头 多个进程,都要使用一些共享资源,像 一些变量啊,像一些文件啊,而这些资源呢 具有这样一个性质,它需要排他性的使用,也就是说我用 那么另外一个进程就不能用,这是一种排他性的使用 因此,各个进程之间对这个资源的使用 是一种竞争,是一种竞争,而这种竞争呢 我们就称之为进程的互斥

同步:互斥 它指的是进程之间具有一种竞争关系 而进程的同步呢实际上是指的多个进程之间的协作关系 那么什么是进程的同步呢? 它是指的在多个进程中 发生的事件存在着某种时序关系 需要这些进程相互合作,共同完成一项任务 更具体的一点来说,就是 有多个进程,其中一个进程执行到了某一点 它要求另外一个进程为它提供消息 而另外这个进程呢由于它们是相互合作的,所以是它的一个伙伴进程 因此第一个进程需要第二个进程给它提供消息 在没有获得这个消息的时候,也就是消息没有到达 那么这个事件还没有发生,那么前一个进程 就要进入阻塞态,就要等这个消息,一旦这个消息到达,也就是说这个事件发生了 就把前面这个进程唤醒,让它 重新就绪,实际上我们所谈的是一个进程之间的一个协作关系

感觉这个题目不严谨

足球游戏:

互斥:球是互斥的。只能被一个进程使用

同步:足球传递过来,才能进行下一步?

麻将游戏:

互斥:

同步:

6。

在使用信号量及P、V操作机制解决问题时,进程执行一次P操作,意味着该进程

准备释放一个资源

正在使用一个资源

申请分配一个资源

需要共享一个资源

原文地址:https://www.cnblogs.com/jay54520/p/6562421.html