![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
本专栏主要介绍操作系统相关的知识
绝域时空
这个作者很懒,什么都没留下…
展开
-
操作系统经典问题之哲学家就餐算法
一、问题描述一群哲学家围绕一个圆桌思考问题,圆桌上摆满了美食。在每个哲学家两边各有一个筷子,两个哲学家之间只有一个筷子,只有当哲学家拿到左右两边的筷子才可以吃饭,当哲学家吃饱了就会将筷子放下来接着进行思考。为了避免哲学家饿死,就诞生出哲学家就餐的问题。二、解决思路(1)1、思路分析为了避免哲学家饿死,我们现在给哲学家定另一个规矩:最后一个哲学家比较扛饿,他的肚子最大,一时半会儿饿不死,他最后才可以吃。假设有n个哲学家,我们通过设置一个信号初始值n-1。2、伪代码实现semaphore count原创 2021-12-21 12:34:54 · 5685 阅读 · 2 评论 -
操作系统之死锁检测算法:银行家算法
一、银行家算法银行家是用来检测进程是否会发送死锁的一种算法,这是死锁避免的一种提前预防的机制。可以利用银行家算法进行系统安全进行一个预估。下面我将用一个案例来详细介绍银行家算法的过程。二、银行家算法案例详解假设...原创 2021-11-10 14:58:58 · 9889 阅读 · 1 评论 -
操作系统之死锁及其产生条件
一、死锁在多道程序应用的领域中,由于多个进程并发执行,这样可以在很大程度上提高程序运行效率。这时候就会产生一个状态叫死锁,死锁 是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我将介绍死锁产生的四个条件。二、死锁产生条件1、互斥条件: 进程要求对所分配的资源进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。2、不剥夺条件: 进程所获得的资源在未使用完之前, 不能被其他进程强行夺走,即只能由获得该资源原创 2021-11-10 08:12:51 · 565 阅读 · 0 评论 -
操作系统经典问题之吸烟者问题
一、吸烟者问题一个资深老烟民,不喜欢吃抽带滤嘴的烟,就爱自己卷烟抽。卷烟的制造就需要三样物品:烟叶、纸和胶水。但是每次只能提供三种材料的一种,吸烟者要想吸烟这个问题怎么解决。...原创 2021-11-09 08:22:55 · 413 阅读 · 0 评论 -
操作系统经典问题之读者-写者问题
一、读者-写者问题一个很好看的小说是由一个著名的作家书写,这篇小说吸引了很多的读者进行阅读。但是如果读者在阅读的时候,作家进来修改文章了,就会导致每个读者看到的内容不同,进而每个人对于这个文章的理解就会有偏差。基于这个问题,一个十分有意思的读者-写者问题诞生了。二、思路分析这个问题的思路就是,可以允许多个读者访问这个文件,但是对于写者只能允许当文件里没有读者时,才可以允许写者进入修改文件。除了对文件加上一个互斥锁外,我们还需要一个统计读者的计数参数count。三、代码实现int count=0;原创 2021-11-07 20:25:38 · 411 阅读 · 0 评论 -
操作系统经典问题之爸爸放苹果妈妈放橘子儿子吃橘子女儿吃苹果问题
一、爸爸放苹果妈妈放橘子儿子橘子女儿吃苹果问题现在有一个盘子,爸爸向这个盘子里放苹果,妈妈向这个盘子里放橘子。儿子只从这个盘子里拿妈妈放置的橘子吃,而女儿从这个盘子里拿爸爸放的苹果吃。这是由生产者-消费者问题,发展过来的多生产者多消费者问题二、思路分析对于盘子来说,这是一个临界资源,一次只能有一个生产者或者一个消费者进入,因此需要设置互斥锁 对于盘子进行限制。对于一个盘子,其容量是有限的,对应的临界资源是有限的。对于爸爸和妈妈放置的橘子,我们也需要对其进行互斥保护,因此需要设置相应的信号量进行保护。原创 2021-11-07 11:15:16 · 9822 阅读 · 0 评论 -
操作系统经典问题之生产者消费者问题
一、生产者消费者问题生产者和消费者问题是计算机同步互斥的经典问题,其意思就是生产者把生产出来的产品放在仓库里,消费者把产品从仓库里取出来。仓库属于临界区,生产者和消费者一次只能一个进入临界区中。两个进程之间就有一个同步互斥问题,下面我将对该问题进行详细介绍。二、思路分析对于一个仓库,仓库的容量是有限的,对应的临界资源是有限的,假设仓库的容量是n。当仓库装满了,就不能允许生产者进行访问,如果仓库满了,生产者再把产品放进仓库就会导致仓库爆仓。与此同时,当库存为零时也不能允许消费者进入,这个不符合逻辑。基于原创 2021-11-07 10:44:08 · 9943 阅读 · 2 评论 -
操作系统之同步互斥问题之信号量
一、信号量关于解决程序的同步互斥问题的信号量,其整型信号量的定义如下:white(s){ //P信号量 while(s<=0);//进入死循环 s=s-1;}signal(s){ //V操作 s=s+1;}二、利用信号量实现前驱关系假设进程的前驱如下图所示:semaphore a1=a2=b1=b2=c=d=e=O; //初始化信号量S0(){ //P0进程 V(a1); V(a2) ;}S1(){ //P1进程 P(a1); //监测P0进程是否完成 V(b1原创 2021-11-07 10:11:39 · 346 阅读 · 0 评论 -
操作系统之同步互斥算法
一、硬件开关中断方式这种实现进程同步互斥具有很高的效率但是会造成系统负担过大。.....关中断;临界区;开中断;.....二、单标志方法该算法设置一个公用整型变量tum, 用于指示被允许进入临界区的进程编号,即若turn = 0, 则允许凡进程进入临界区。该算法可确保每次只允许一个进程进入临界区。缺点就是进程只能交替进入临界区//P0进程while(turn!=0){临界区;turn=1;退出区;}//P1进程while(turn!=1){临界区;turn=0;退出区原创 2021-11-06 21:17:04 · 1131 阅读 · 0 评论 -
操作系统之进程同步互斥问题
一、同步互斥原创 2021-11-06 18:24:56 · 381 阅读 · 0 评论 -
操作系统的进程调度算法
标题原创 2021-11-05 14:55:56 · 782 阅读 · 0 评论 -
操作系统之三种进程通信方式
程序在运行的过程中,进程之间需要进行相互通信。下面我将介绍三种进程之间通信的方式。1、共享存储: 通信进程共享一个存储空间,通过对该空间进行读/写操作进程通信2、消息传递: 直接以格式化的数据“消息”为单位,通过“发送消息”&“接收消息”原语进行通信消息传递有两种方式:1、直接通信:进程间直接传送消息;2、间接通信:进程中有“信息”中间实体(类似于网络中的电子邮箱系统的信箱)3、共享文件: (pipe 文件、缓冲区),半双工。性质同IO 中的缓冲区。且运行多进程读写管道。数据一旦被读出立刻丢原创 2021-11-05 08:26:00 · 5713 阅读 · 0 评论 -
操作系统之进程状态及其切换方式
一、进程状态进程从创建到消亡的过程,大致可以将进程的状态可以分为五种:1、创建状态;2、就绪状态;3、运行状态;4、阻塞状态;5、终止状态。下面我将介绍这几种状态,以及其状态之间的切换的条件和规则。二、五大进程进程介绍及其之间相互切换1、创建状态: 我们知道我们下载安装的应用程序,只要我们不点击它,大概率是不会自己运行(大流氓软件除外)。这是因为程序的代码块是静态的放置在存储空间上(也就是磁盘上),当我们双击桌面的应用程序时,首先操作系统会在内存上申请进程代码控制块(PCB),之后操作系统会通过操作原创 2021-11-05 08:24:49 · 3149 阅读 · 0 评论 -
操作系统之进程概念及其组成
一、进程在多道程序环境下, 允许多个程序并发执行, 此时它们将失去封闭性, 并具有间断性及不可再现性的特征。为此引入了进程(Prnccss) 的概念, 以便更好地描述和控制程序的并发执行, 实现操作系统的并发性和共享性(最基本的两个特性)。进程是由:进程控制块(PCB)、程序段和数据段组成,下面我将介绍这三个模块的特点。二、进程控制块(PCB)进程存在的唯一标志,常驻内存,系统通过控制PCB来控制进程。PCB用链表形成的队列组织,进程的不同状态对应着PCB 挂在不同的队列(等待队列、就绪队列)。其原创 2021-11-05 07:26:03 · 544 阅读 · 0 评论 -
操作系统的特征
操作系统具有以下特征:并发、共享、虚拟和异步。下面我将介绍操作的基本特征的相关概念1、并发: 并发是指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中同时存在多个运行的程序,因此它具有处理和调度多个程序同时执行的能力,这种状态我们称之为并发。2、共享: 资源共享即共享, 是指系统中的资源可供内存中多个并发执行的进程共同使用。共享可分为:1、互斥共享方式;2、同时访问方式。3、虚拟: 虚拟是指把一个物理上的实体变为若干逻辑上的对应物。物理实体(前者)是实的, 即实际存在的而后者是虚的原创 2021-11-04 21:28:43 · 2857 阅读 · 0 评论 -
初识操作系统和操作系统发展简介
一、操作系统说道操作系统,我们不由的想到Windows系统,这是一个典型的视窗操作系统。除了Windows操作系统外,还有一个比较典型的操作系统,这个操作系统就是Linux系统。Linux系统是一个典型的文件系统,在Linux的基础上发展出很多操作系统,例如典型的安卓操作就是基于Linux系统进行封装而成的。归根到底,操作系统本质上是一种软件,该软件主要用于帮助用户管理硬件,并为用户提供一些接口。我们撰写的软件可以在这个软件上进行运行,进而可以帮助用户解决一些问题。二、操作系统发展阶段在最开始的计算机原创 2021-11-04 21:14:02 · 200 阅读 · 0 评论