操作系统-进程和线程-同步、互斥、死锁

这篇具有很好参考价值的文章主要介绍了操作系统-进程和线程-同步、互斥、死锁。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、同步互斥

 二、互斥的实现方法

2.1软件实现

2.1.1单标志法

2.1.2双标志先检查

2.1.3双标志后检查

2.1.4Petersons算法

2.2硬件实现

2.2.1 TestAndSet指令

2.2.2 Swap指令 

 三、信号量机制

3.1整形变量

 3.2 记录型变量

 3.3用信号量实现进程互斥、同步、前驱关系

3.3.1互斥

 3.3.2同步

3.3.3前驱关系

四、同步和互斥经典问题

4.1 生产者-消费者问题

 4.2多生产多消费问题

 4.3 吸烟者问题

 4.4 读写者问题

 4.5 哲学家进餐问题

 五、管程

 六、死锁

6.1死锁产生得必要条件

6.2发生死锁的时候

七、死锁的处理策略

 7.1预防死锁 静态策略

7.2 避免死锁(银行家算法)动态策略

7.3 死锁得检测和解除

死锁得检测

死锁得解除


一、同步互斥

操作系统-进程和线程-同步、互斥、死锁

 二、互斥的实现方法

2.1软件实现

2.1.1单标志法

两个进程在访问完临界区后会使用临界区的权限转交给另一个进程,也就是说每个进程进入临界区的权限只能被另一个进程赋予

操作系统-进程和线程-同步、互斥、死锁

只能轮流使用 

2.1.2双标志先检查

操作系统-进程和线程-同步、互斥、死锁

2.1.3双标志后检查

操作系统-进程和线程-同步、互斥、死锁

2.1.4Petersons算法

操作系统-进程和线程-同步、互斥、死锁

2.2硬件实现

中断屏蔽方法:利用“开/关中断指令”实现

关中断-》临界区-》开中断

2.2.1 TestAndSet指令

简称TS或TSL

操作系统-进程和线程-同步、互斥、死锁

2.2.2 Swap指令 

操作系统-进程和线程-同步、互斥、死锁

 三、信号量机制

信号量其实就是一个变量(可以是一个整数,也可以是复制的记录型变量),可以用一个信号量表示系统中某种资源数量

一对原语:wait(s)和signal(s),简称P(s),V(s)

3.1整形变量

表示系统中某种资源的数量

操作系统-进程和线程-同步、互斥、死锁

 3.2 记录型变量

操作系统-进程和线程-同步、互斥、死锁

 3.3用信号量实现进程互斥、同步、前驱关系

3.3.1互斥

操作系统-进程和线程-同步、互斥、死锁

 3.3.2同步

 并发进程要求有序的推进

操作系统-进程和线程-同步、互斥、死锁

3.3.3前驱关系

操作系统-进程和线程-同步、互斥、死锁

四、同步和互斥经典问题

实现互斥P操作一定要早实现同步P操作后

4.1 生产者-消费者问题

操作系统-进程和线程-同步、互斥、死锁

 4.2多生产多消费问题

操作系统-进程和线程-同步、互斥、死锁

 4.3 吸烟者问题

操作系统-进程和线程-同步、互斥、死锁

 4.4 读写者问题

操作系统-进程和线程-同步、互斥、死锁

 4.5 哲学家进餐问题

操作系统-进程和线程-同步、互斥、死锁

 五、管程

管程是一种特殊的软件模块,有这些部分组成:

1.局部于管程的共享数据结构说明

2.对该数据结构进行操作的一组过程

3.对局部于管程的共享数据结构设置初始值语句

4.管程有一个名字

基本特征:
1.局部于管程的数据只能被局部于管程的过程访问

2.一个进程只有通过调用管程内的过程才能进入管程访问共享数据

3.每次仅允许一个进程在管程内执行某个内部过程

 用管程解决生产者消费者问题操作系统-进程和线程-同步、互斥、死锁

 六、死锁

死锁:多个进程竞争资源造成的一种僵局(相互等待),若无外力作用,这些进程是无法向前推进的

饥饿:由于长期得不到想要资源,某进程无法向前推进现象。

死循环:某进程执行过程中一直跳不出某个循环得现象。

6.1死锁产生得必要条件

1.互斥条件:只有对必须互斥使用得资源的争抢才会导致死锁

2.不剥夺条件:进程所获得的资源在未完成之前,不能由其他进程强行夺走,只能主动释放

3.请求和保存条件:进程已经保持了至少一个资源,但又提出新资源请求,而该资源又被其他进程占有,此时进程阻塞又对已有资源保持不放

4.循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个资源请求

6.2发生死锁的时候

操作系统-进程和线程-同步、互斥、死锁

七、死锁的处理策略

操作系统-进程和线程-同步、互斥、死锁

 7.1预防死锁 静态策略

破坏互斥条件:SPOOLing技术、

破坏不剥夺条件:1.得不到资源,就释放全部资源,以后要就重新请求                                                                         2.系统协助,直接剥夺其他资源自己使用

破坏请求和保持条件:静态分配法:进程运行前一次申请完所需得全部资源,资源未满足前不让它投入使用,一旦投入使用就一直归它所有     资源利用率低,可能饥饿

破坏循环等待条件:顺序资源分配法:操作系统-进程和线程-同步、互斥、死锁

7.2 避免死锁(银行家算法)动态策略

操作系统-进程和线程-同步、互斥、死锁

7.3 死锁得检测和解除

死锁得检测

操作系统-进程和线程-同步、互斥、死锁

死锁得解除

1.资源剥夺法:挂起某些死锁进程,并抢占它得资源,将这些资源分配给其他死锁进程,但防止给i去得长期得不到资源而饥饿

2.撤销进程法:强制撤销部分、甚至全部死锁进程,并剥夺这些进程得资源,简单但代价大,有些进程运行很长时间接近结束,被终止就功亏一篑,还得从头再来

3.进程回退法:让一个或多个死锁进程回退到足以避免死锁的地步,操作系统就要记录信息设置还原点 文章来源地址https://www.toymoban.com/news/detail-473830.html

到了这里,关于操作系统-进程和线程-同步、互斥、死锁的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【操作系统】同步和互斥详细讲解(算法+源码)

    【操作系统】同步和互斥详细讲解(算法+源码)

    博主介绍:✌全网粉丝喜爱+、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦! 🍅附上相关C语言版源码讲解🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找

    2024年01月23日
    浏览(9)
  • 操作系统——进程互斥的软件实现算法(王道视频p27、课本ch6)

    操作系统——进程互斥的软件实现算法(王道视频p27、课本ch6)

    1.总结概览: 2.单标志[turn]法——算法代码: 可能违反“空闲让进” 3.双标志[flag[2]]先检查法——算法代码: 如果不能利用硬件的原语的话,就可能出现违反“忙则等待”的问题: 4.双标志[flag[2]]后检查法——算法代码: 可能会出现 资源死锁(违反“空闲让进”) 5.PeterSon算

    2024年02月07日
    浏览(12)
  • 【Linux操作系统】多线程抢票逻辑——学习互斥量(锁)函数接口

    【Linux操作系统】多线程抢票逻辑——学习互斥量(锁)函数接口

    临界资源 : 多线程执行流共享的资源就叫做临界资源 。 临界区 :每个线程内部, 访问临界资源的代码,就叫做临界区 。 互斥 :任何时刻, 互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用 。 原子性 :不会被任何调度机制打断的操作

    2024年02月16日
    浏览(10)
  • 第三章 Linux多线程开发 线程取消 属性 同步 互斥锁 死锁 读写锁 生产者消费者 信号量
  • 操作系统:4、进程管理之进程同步

    操作系统:4、进程管理之进程同步

    上述过程,若并发执行就会出现缓冲区数据出错 “哲学家进餐问题中会发生极端情况,所有哲学家都饿死,也就是所有进程都陷入等待状态” “生产者消费者问题”以及“哲学家进程问题”的根源问题是:彼此相互之间没有通信。 若生产者通知消费者我已经完成一件产品生

    2023年04月26日
    浏览(10)
  • 操作系统实验:进程同步控制

    操作系统实验:进程同步控制

    前言 一、开发语言及实验平台或实验环境 二、实验目的 三、实验要求 四、实验原理 五、实验过程 六、代码详解 七、diy一下 总结 计算机操作系统是一门研究计算机系统的基本原理和设计方法的课程,它涉及到计算机系统的结构、功能、性能和管理等方面。操作系统实验是

    2024年02月05日
    浏览(14)
  • 操作系统进程线程(一)—进程线程协程区别、多进程多线程、进程调度算法、进程线程通信

    操作系统进程线程(一)—进程线程协程区别、多进程多线程、进程调度算法、进程线程通信

    定义上 进程: 资源分配和拥有 的基本单位,是调度的基本单位。 运行一个可执行程序会创建一个或者多个进程;进程就是运行起来的程序 线程:程序 执行 基本单位,轻量级进程。 每个进程中都有唯一的主线程 ,主线程和进程是相互依赖的关系。 协程: 用户态 的轻量级

    2024年02月01日
    浏览(48)
  • 【操作系统——进程与线程(一)】

    2.1.1 进程的概念和特征 进程是指正在执行中的程序的实例。它是计算机系统进行资源分配和调度的基本单位。每个进程都有自己的地址空间、堆栈和数据区域,以及与其他进程通信和同步所需要的操作系统资源。 进程具有以下特点: 独立性:进程是独立的执行实体,拥有自

    2024年02月11日
    浏览(45)
  • 操作系统-进程同步:生产者-消费者问题

    操作系统-进程同步:生产者-消费者问题

    ​ 以生产者-消费者模型为基础,在Windows环境下创建一个控制台进程(或者界面进程),在该进程中创建读者写者线程模拟生产者和消费者。写者线程写入数据,然后将数据放置在一个空缓冲区中供读者线程读取。读者线程从缓冲区中获得数据,然后释放缓冲区。当写者线程

    2023年04月20日
    浏览(11)
  • Linux pthread线程操作 和 线程同步与互斥操作

    Linux pthread线程操作 和 线程同步与互斥操作

    在Linux系统中玩线程,使用pthread,这篇博客记录如何 创建线程 和 使用线程 和线程的 同步 与 互斥 。 还有一份nginx线程池的代码供大家阅读学习! 目录 一、简介 什么是线程 线程的优点、缺点 线程的应用场合 二、线程的使用 1.  创建线程 - pthread_create 2.  线程的终止 - pt

    2024年02月02日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包