当前位置: 首页 > news >正文

太原网站推广只选中联传媒wordpress常规无备案号

太原网站推广只选中联传媒,wordpress常规无备案号,网站备案 新闻类前置审批,做技术支持的网站有第三章 进程同步 【期末复习|考研复习】 计算机操作系统系列文章传送门#xff1a; 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 文章目录 第三章 进程同步 【期末复习|考研复习】前言三、进程同步3.1 临…第三章 进程同步 【期末复习|考研复习】 计算机操作系统系列文章传送门 第一章 计算机系统概述 第二章 进程管理 第三章 进程同步 第四章 内存管理 第五章 文件管理 第六章 输出输出I/O管理 文章目录 第三章 进程同步 【期末复习|考研复习】前言三、进程同步3.1 临界资源3.1.1 互斥3.1.2 同步 3.2 信号量3.2.1 信号量机制实现进程互斥/同步 3.3 经典同步问题3.3.1 单一生产者消费者3.3.2 多生产者多消费者3.3.3 读者写者问题 3.4管程3.5 死锁3.5.1 含义3.5.2 死锁、饥饿、死循环的区别3.5.3 死锁的必要条件3.5.4 什么时候发生死锁3.5.5 死锁的处理策略死锁避免——银行家算法死锁的检测与解除 3.6 进程同步的方法3.7 线程同步方法3.8 Linux的进程管理 下一章 第四章 内存管理 前言 给大家整理了一下计算机操作系统中的重点概念以供大家期末复习和考研复习的时候使用。 参考资料是王道的计算机操作系统和西电的计算机操作系统。 三、进程同步 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 cond0 初始为0 3.3 经典同步问题 3.3.1 单一生产者消费者 3.3.2 多生产者多消费者 若缓冲区为1则可以不用加互斥如果缓冲区大于1则必须加互斥。 3.3.3 读者写者问题 1、读者优先 当有读者在时禁止写者进入因此设置计数器count来表示当前访问buffer的读者数量 2、读写公平 3、哲学家进餐问题 4、吸烟者问题 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、死锁的检测和解除。允许死锁的发生不过操作系统会负责检测出死锁的发生然后采取某种措施解除死锁。 预防死锁 死锁避免——银行家算法 数据结构长度为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表示进程处于睡眠状态… 下一章 第四章 内存管理 第四章 内存管理
http://www.tj-hxxt.cn/news/142407.html

相关文章:

  • 建设网站如何盈利北京网站制作建设公司
  • 做视频网站可行吗深圳工厂网站建设公司
  • 自己开公司 自己做网站wordpress图片站教程
  • 网站域名费一年交多少ps 矢量素材网站
  • 自己怎么做卡密网站丹阳seo公司
  • 专门提供做ppt小素材的网站怎么申请微信公众平台账号
  • 什么网站免费可以做appwordpress如何设置菜单
  • 金坛网站建设各地人社app大全官网
  • 网站建设的3个基本原则网站营销不同阶段的网站分析目标
  • 扬州新闻头条最新消息东莞优化网页关键词
  • 西安专业网站开发联系电话wordpress大学用户中心
  • 网站使用条款模板佛山做网站需要多少钱
  • 长沙网站改版wordpress 伪静态 seo
  • 任丘市网站建设公司微信互动平台网站建设
  • 一个返利网站建设流程无锡网站关键词优化软件咨询
  • 广州站在哪个区logo在线制作免费网站
  • 深圳网站建设qwyx100网站加载流量
  • 沈阳哪家做网站好vs2017手机网站开发
  • 四川网站建设找哪家能引流的都有什么平台
  • 平面设计案例网站前端简历
  • 建筑设计地图网站手机百度一下
  • 重庆最大本地论坛天津百度网站快速优化
  • 安徽省住房与城乡建设部网站上海网络排名优化
  • wordpress建站速度提升华为云网站建设
  • 外贸网站制作广州用vs代码做网站
  • 公司招人去哪个网站搭建网站 软件
  • 免费网站站长推广做一个app需要学什么
  • 做网站用html好还是vue好做一个卖东西的网站
  • 内容管理网站建设方案手机传奇手游发布网站
  • 昆明网站关键词优化wordpress后台菜单加入页面