计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】

这篇具有很好参考价值的文章主要介绍了计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机操作系统复习系列文章传送门:
第一章 计算机系统概述
第二章 进程管理
第三章 进程同步
第四章 内存管理
第五章 文件管理
第六章 输出输出I/O管理



前言

给大家整理了一下计算机操作系统中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王道的计算机操作系统和西电的计算机操作系统。


三、进程同步

3.1 临界资源

我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多变量、数据、内存缓冲区等都属于临界资源。对临界资源的访问,必须互斥地进行。

3.1.1 互斥

互斥,亦称间接制约关系。进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。为了实现对临界资源的互斥访问,同时保证系统整体性能,需要遵循以下原则:1、空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;2、忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待;3、有限等待。对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿);4、让权等待。当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。

3.1.2 同步

同步,亦称为直接制约关系,是指为完成某种任务而建立的两个或多个进程,这些进程因为某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程之间的直接制约关系源于他们之间的相互合作。

3.2 信号量

用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥、进程同步。**信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),**可以用一个信号量来表示系统中某种资源的数量,比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。原语是一种特殊的程序段,其执行只能一气呵成,不可被中断。原语是由关中断/开中断指令实现的。一对原语: wait(S)原语和 signal(S)原语,可以把原语理解为我们自己写的函数,函数名分别为 wait和 signal,括号里的信号量s其实就是函数调用时传入的一个参数。简称PV操作。

3.2.1 信号量机制实现进程互斥/同步

实现互斥是信号量semaphore mutex =1(初始为1)(初始值为N的话表示最多由于N个线程可以访问)
实现同步是信号量 semaphore cond=0 (初始为0)

3.3 经典同步问题

3.3.1 单一生产者消费者

计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言

3.3.2 多生产者多消费者

若缓冲区为1则可以不用加互斥,如果缓冲区大于1则必须加互斥。
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言

3.3.3 读者写者问题

1、读者优先
当有读者在时禁止写者进入,因此设置计数器count来表示当前访问buffer的读者数量
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言

计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
2、读写公平
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
3、哲学家进餐问题
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言

4、吸烟者问题
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言

3.4管程

信号量机制存在的问题 : 编写程序困难、易出错。
管程的构成:管程相当于对临界区资源进行抽象而编写的一个类。管程是一种特殊的软件模块,有这些部分组成:1、局部于管程的共享数据结构说明(一个类);2、对该数据结构进行操作的一组过程:(类中的方法);3、对局部于管程的共享数据设置初始值的语句(类中的变量);4、管程有一个名字(类名);
管程的特征:1、局部于管程的数据只能被局部于管程的过程所访问(类中变量有自己的作用范围);2、一个进程只有通过调用管程内的过程才能进入管程访问共享数据;这种互斥特性是由编译器来实现的;3、每次仅允许一个进程在管程内执行某个内部过程。

3.5 死锁

3.5.1 含义

在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是“死锁“。发生死锁后若无外力干涉。这些进程都将无法向前推进。

3.5.2 死锁、饥饿、死循环的区别

死锁:各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。
饥饿:由于长期得不到想要的资源,某进程无法向前推进的现象。比如:在短进程优先(SPF)算法中,若有源源不断的短进程到来,则长进程将一直得不到处理机,从而发生长进程“饥饿”。
死循环:某进程执行过程中一直跳不出某个循环的现象。有时是因为程序逻辑bug 导致的,有时是程序员故意设计的。

3.5.3 死锁的必要条件

1、互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁(如哲学家的筷子、打印机设备)。像内存、扬声器这样可以同时让多个进程使用的资源是不会导致死锁的(因为进程不用阻塞等待这种资源)。2、不剥夺条件:进程所获得的资源在未使用完之前,不能由其他进程强行夺走,只能主动释放。3、请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占有,此时请求进程被阻塞,但又对自己已有的资源保持不放。4、循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得的资源同时被下一个进程所请求。

3.5.4 什么时候发生死锁

1、对系统资源的竞争。各进程对不可剥夺的资源(如打印机)的竞争可能引起死锁,对可剥夺的资源(CPU)的竞争是不会引起死锁的。2、进程推进顺序非法。请求和释放资源的顺序不当,也同样会导致死锁。例如,并发执行的进程P1、P2分别申请并占有了资源R1、R2,之后进程p1又紧接着申请资源R2,而进程p2又申请资源R1,两者会因为申请的资源被对方占有而阻塞,从而发生死锁。3、信号量的使用不当也会造成死锁。如生产者-消费者问题中,如果实现互斥的P操作在实现同步的P操作之前,就有可能导致死锁。(可以把互斥信号量、同步信号量也看做是一种抽象的系统资源)

3.5.5 死锁的处理策略

1、预防死锁。破坏死锁产生的四个必要条件中的一个或几个。2、避免死锁。用某种方法防止系统进入不安全状态,从而避免死锁(银行家算法)。3、死锁的检测和解除。允许死锁的发生,不过操作系统会负责检测出死锁的发生,然后采取某种措施解除死锁。
预防死锁:
计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】,408概念,计算机操作系统系列,考研,408,计算机考研,计算机操作系统,os,c语言

死锁避免——银行家算法

数据结构:长度为m的一维数组 Available表示还有多少可用资源,n×m矩阵Max表示各进程对资源的最大需求数,n×m矩阵Allocation表示已经给各进程分配了多少资源,n×m矩阵Max - Allocation = Need矩阵表示各进程最多还需要多少资源。用长度为m的一位数组Request表示进程此次申请的各种资源数。
算法步骤:检查当前的剩余可用资源是否能满足某个进程的最大需求,如果可以,就把该进程加入安全序列,并把该进程持有的资源全部回收。不断重复上述过程,看最终是否能让所有进程都加入安全序列。

死锁的检测与解除:

1、死锁的检测:为了能对系统是否已发生了死锁进行检测,必须:①用某种数据结构来保存资源的请求和分配信息;②提供一种算法,利用上述信息来检测系统是否已进入死锁状态。
如果按上述过程分析,资源分配图最终能消除所有边,就称这个图是可完全简化的。此时一定没有发生死锁(相当于能找到一个安全序列)。如果最终不能消除所有边,那么此时就是发生了死锁。
2、死锁的解除:资源剥夺法。挂起(暂时放到外存上)某些死锁进程,并抢占它的资源,将这些资源分配给其他的死锁进程。但是应防止被挂起的进程长时间得不到资源而饥饿。撤销进程法(或称终止进程法)。强制撤销部分、甚至全部死锁进程,并剥夺这些进程的资源。这种方式的优点是实现简单,但所付出的代价可能会很大。因为有些进程可能已经运行了很长时间,已经接近结束了,一旦被终止可谓功亏一篑,以后还得从头再来。3、进程回退法。让一个或多个死锁进程回退到足以避免死锁的地步。这就要求系统要记录进程的历史信息,设置还原点。

3.6 进程同步的方法

1.使用fork系统调用创建进程:使用fork系统调用无参数,fork会返回两次,分别返回子进程id和0,返回子进程id的是父进程,返回0的是子进程。(fork系统调用是用于创建进程的;fork创建的进程初始化状态与父进程一样;系统会为fork的进程分配新的资源)
2.共享内存:在某种程度上,多进程是共同使用物理内存的,但是由于操作系统的进程管理,进程间的内存空间是独立的,因此进程默认是不能访问进程空间之外的内存空间的。(共享存储允许不相关的进程访问同一片物理内存;共享内存是两个进程之间共享和传递数据最快的方式;共享内存未提供同步机制,需要借助其他机制管理访问;)
3.Unix域套接字,域套接字是一种高级的进程间通信的方法,可以用于同一机器进程间通信。套接字(socket):为网络通信中使用的术语。Unix系统提供的域套接字提供了网络套接字类似的功能,如Nfinx、uWSGI等。服务端和客户端分别使用Unix域套接字的过程:

3.7 线程同步方法

1、互斥锁:互斥锁是最简单的线程同步的方法,也称为互斥量,处于两态之一的变量:解锁和加锁,两个状态可以保证资源访问的串行。 原子性:指一系列操作不可被中断的特性,要么全部执行完成,要么全部没有执行。
2、自旋锁:自旋锁是一种多线程同步的变量,使用自旋锁的线程会反复检查锁变量是否可用,自旋锁不会让出CPU,是一种忙等待状态,即死循环等待锁被释放,自旋锁的效率远高于互斥锁。特点:避免了进程或者线程上下文切换的开销,但是不适合在单核CPU使用。
3、读写锁:是一种特殊的自旋锁,允许多个读操作同时访问资源以提高读性能,但是对写操作是互斥的,即对多读少写的操作效率提升很显著。
4、条件变量:是一种相对比较复杂的线程同步方法,条件变量允许线程睡眠,直到满足某种条件,当满足条件时,可以给该线程信号通知唤醒

3.8 Linux的进程管理

进程的类型:
前台进程:具有终端,可以和用户交互;
后台进程:没有占用终端,基本不和用户交互,优先级比前台进程低(将需要执行的命令以“&”符号结束);
守护进程:特殊的后台进程,在系统引导时启动,一直运行直到系统关闭(进程名字以“d”结尾的一般都是守护进程),如crond、sshd、httpd、mysqld…
进程的标记:
进程ID:非负整数,进程的唯一标记,每个进程拥有不同的ID;
进程的状态标记:R表示进程处于运行状态,S表示进程处于睡眠状态…

下一章 第四章 内存管理

第四章 内存管理文章来源地址https://www.toymoban.com/news/detail-717733.html

到了这里,关于计算机操作系统重点概念整理-第三章 进程同步【期末复习|考研复习】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 计算机操作系统-笔记

    计算机操作系统-笔记

    第一章 引论 1. 操作系统定义 操作系统是运行在内核态的软件,它执行两个基本上独立的任务。 隐藏计算机底层硬件的实现,为用户及应用程序提供一个资源集的清晰抽象。 管理计算机硬件资源。 任何操作系统的核心是它可处理的系统调用集。这些系统调用集真实地说明了

    2024年02月20日
    浏览(9)
  • 计算机基础——操作系统

    计算机基础——操作系统

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录  前言 一.操作系统 1.操作系统简介  2.操作系统的主要功能 (1)资源管理 (2)人机交互  (3)程序控制 (4)进程管理

    2024年01月23日
    浏览(11)
  • 计算机操作系统安全

    操作系统安全是计算机系统安全的重要组成部分,目的是保护操作系统的机密性、完整性和可用性。在当前的网络环境下,操作系统面临着许多威胁,如病毒、木马、蠕虫、黑客攻击等等。为了保护操作系统的安全,需要采取各种措施来防范这些威胁。本文将介绍一些常见的

    2024年02月02日
    浏览(7)
  • 计算机基础--->操作系统(4)【文件系统】

    文件系统主要负责管理和组织计算机存储设备上的文件和目录,其功能包括以下几个方面: 存储管理 :将文件数据存储到物理存储介质中,并且管理空间分配,以确保每个文件都有足够的空间存储,并避免文件之间发生冲突。 文件管理 :文件的创建、删除、移动、重命名、

    2024年02月08日
    浏览(52)
  • 计算机操作系统和进程

    计算机操作系统和进程

    ✨个人主页:bit me👇 ✨当前专栏:Java EE初阶👇 ✨每日一语:心平能愈三千疾,心静可通万事理。 操作系统是一组做计算机资源管理的软件的统称 目前常见的操作系统有:Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等 防止硬件被时空的应用程序滥用

    2024年01月23日
    浏览(12)
  • 计算机操作系统——页面置换算法

    计算机操作系统——页面置换算法

    声明 :本篇博客参考书籍《计算机操作系统》(西安电子科技大学出版社) 首先说说影响页面换进换出的效率的几个因素: (1)页面置换算法。该因素是影响页面换进换出效率的重要因素。一个好的页面置换算法可以使进程在运行过程中具有较低的缺页率,从而减少页面换

    2024年02月07日
    浏览(19)
  • 计算机操作系统实验:进程调度实验

    计算机操作系统实验:进程调度实验

    前言 二、实验目的 三、实验要求 四、实验原理 五、实验过程 六、代码详解 总结 计算机操作系统是管理计算机硬件和软件资源的核心软件,它负责为用户提供一个友好、高效、安全的使用环境。进程调度是操作系统的一个重要功能,它决定了进程在处理器上的执行顺序和时

    2024年02月07日
    浏览(13)
  • 【计算机操作系统学习资源汇总】

    做优秀资源的搬运工!阅读经典,传承经典! 每个人的水平和理解不同,因此总结的水平也不同,推荐阅读一手资源,有时间尽量啃书。 发现好的资源会持续更新… 看书的一点小建议 如何阅读《深入理解计算机系统》这本书? [读书笔记]CSAPP深入理解计算机系统 中英双语字

    2024年02月05日
    浏览(22)
  • 计算机操作系统原理期末总复习

    计算机操作系统原理期末总复习

    1、现代操作系统的四个特征是什么?(4分) 并发、共享、虚拟、异步 并发 :两个或多个事件在 同一时间间隔内 发生。 共享 :内存中多个并发执行的进程共同使用系统中的资源。 2、操作系统内核的四个主要功能是什么?(4分) 内存管理、进程管理、设备管理、文件管理

    2024年02月10日
    浏览(48)
  • Linux操作系统:开源的计算机革命

    引言: 在计算机科学领域,Linux操作系统已经成为了一个不可或缺的存在。自1991年由林纳斯·托瓦兹(Linus Torvalds)首次发布以来,Linux已经从一个个人项目发展成为全球最流行的开源操作系统之一。本文将详细介绍Linux操作系统的起源、特点、应用以及未来发展趋势。 一、

    2024年02月04日
    浏览(19)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包