进程中名词的解释

进程和程序:程序想但与一个食谱,而进程就是依照该食谱做的事物

竞争条件:假如现在有一个水桶,然后甲,乙俩个人都想往这个水桶中存入东西,首先轮到甲这个人存入东西,然后甲往这个人往水桶中存入了红酒,然后现在甲使用这个水桶的时间到了,然后乙使用这个水桶,然后乙把水桶中的红酒倒掉然后装进去葡萄酒,这就是好比竞争条件。

临界区:对共享内存进行访问的程序片段成为临界区

实现互斥的几种方式:

关中断:进入临界区关中断,关中断之后时钟中断也被屏蔽,时钟中断被关闭后cpu也无法进行进程的切换所以其他进程就不会进入临界区,这种方式不好因为把关中断的权利交给了用户进程是不明确的

锁变量:假如有一个初始变量,开始为0,表示可以进入临界区,进入临界区之后将变量置为1,然后离开临界区之后变量初始化为0,其他进程就可以进去临界区,但是有一个问题就是,如果你在把变量初始化为1之前,有一个进程进入临界区,这样临界区就有俩个进程同时共享内存变量

消费者生产者问题:

缓冲区满时然后生产者睡眠,然后有消费者从缓冲区取出数据时,那么唤醒生产者继续生产数据,反过来,当缓冲区空的时候,消费者睡眠,当生产着生产数据之后唤醒消费者。也有可能出现竞争条件,就是如果现在缓冲区为空,那么消费者检查缓冲区的大小为0,这时候程序决定暂停消费者,开始运行生产者,那么生产者产生一个数据,这时候生产者以为消费者睡眠,就会向消费者发送一个唤醒信号,但是消费者只是暂停并不是睡眠,然后唤醒信号丢失,当消费者下次运行时测试先前的缓冲区容量,发现还是空的,于是就去睡眠了,这样当缓冲区存满之后生产者也睡眠了,那么生产者消费者都睡眠了

信号量:

新的变量类型,用于记录唤醒操作的数目

信号量解决消费者生产者问题

其中empty记录空的缓冲槽数量,mutex用来表示生产者消费者同时访问缓冲区,full用于记录满的缓冲槽数目有如下程序


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ** 本文摘自汤小丹主编《计算机操作系统》(第三版)2.3 进程同步 ** 在 OS 中引入进程后,虽然提高了资源...
    刘帅_阅读 3,146评论 0 0
  • 进程的描述与控制 1.前趋图与程序执行1.1 前趋图介绍:描述程序先后执行顺序,又称为有向无循环图,可记为DAG(...
    孙梦翔阅读 741评论 0 1
  • 每周跟大家分享一本书,说来惭愧,今天分享的书籍《硅谷钢铁侠》是我6月份在兰州跑马拉松的时候,西北民族大学的小伙伴闫...
    孙凌聊校园阅读 351评论 0 13
  • 今天下午喝了咖啡,整个人处于兴奋的状态,此刻脑子飞快地运转着。 下午她找我聊天,目的是给我一颗定心丸,知道我不会被...
    当下的每一刻阅读 441评论 0 0
  • 我之前帮朋友写了一个系列的故事,叫卦师日记,很多人以为我是个算命先生或者风水师什么的,我这里再次说明啊,我真的不是...
    蝉鸣三境阅读 256评论 0 2