![](https://img-blog.csdnimg.cn/20200728065906627.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
操作系统
OS相关
贫道法号说不得
萌新初长成~~~
展开
-
【《现代操作系统 第4版》】7、死锁
所谓死锁,就是一种"我手上拿着苹果,想要你手上的梨子,你手上拿着梨子,想要我手上的苹果"的僵持状态。资源大部分死锁都和资源有关。所谓资源就是需要排他性使用的对象。资源可以是硬件设备(如蓝光驱动器)或是一组信息(如数据库中一个加锁的记录)。通常在计算机中有多种(可获取的)资源。一些类型的资源会有若干个相同的实例,如三台蓝光驱动器。当某一资源有若干实例时,其中任何一个都可以用来满足对资源的请求。简单来说,资源就是随着时间的推移,必须能获得、使用以及释放的任何东西。资源的分类可抢占资源:可以从拥有原创 2020-08-07 01:41:01 · 1032 阅读 · 0 评论 -
【《现代操作系统 第4版》】6、进程间的通信之经典的IPC问题
哲学家就餐问题1965年,Dijkstra提出并解决了一个他称之为哲学家就餐的同步问题。这个问题可以简单地描述如下∶五个哲学家围坐在一张圆桌周围,每个哲学家面前都有一盘通心粉。由于通心粉很滑,所以需要两把叉子才能夹住。相邻两个盘子之间放有一把叉子。哲学家的动作包括思考和进餐,当一个哲学家觉得饿了时,他就试图分两次去取其左边和右边的叉子,每次拿一把,但不分次序。如果成功地得到了两把叉子,就开始吃饭,吃完后放下叉子继续思考。问∶能为每一个哲学家写一段描述其行为的程序,且决不会死锁吗?方案1#define原创 2020-08-05 11:52:02 · 370 阅读 · 0 评论 -
【《现代操作系统 第4版》】5、进程间的通信之同步
同步与互斥为了克服并发问题中的竞态条件引入了锁机制从而使得多个进程之间能够互斥的访问共享资源。而为了实现进程间的同步又引入了信号量和管程等模型。生产者-消费者问题有两个进程共享一个公共的固定大小的缓冲区。当生产者想要将数据写入缓冲区的时,如果缓冲区已满则让生产者睡眠,等到消费者从缓冲区中取出一个或多个数据项时再唤醒它。同样的,当消费者试图从缓冲区中取数据,如果缓冲区为空则消费者睡眠,等到生产者向其中放入一个新的数据再唤醒它。#define N 100 /* 缓冲区 slot 槽的数量 */原创 2020-08-04 23:39:50 · 494 阅读 · 0 评论 -
【《现代操作系统 第4版》】3、调度算法
当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做 调度程序(scheduler) 的角色存在,它就是做这件事儿的,该程序使用的算法叫做 调度算法(scheduling algorithm) 。尽管有一些不同,但许多适用于进程调度的处理方法同样也适用于线程调度。当内核管理线程的时候,调度通常会以线程级别发生,很少或者根原创 2020-07-28 06:57:23 · 1035 阅读 · 0 评论 -
【《现代操作系统 第4版》】4、进程间的通信之互斥
进程之间经常需要进行通信。进程间通信(Inter Process Communication,IPC)需要面临如下三个问题:一个进程如何把信息传递给另一个进程如何确保两个或更多的进程在关键活动中不会出现交叉比如两个进程为不同的客户视图争夺飞机上的最后一个座位如何确定程序正确的执行比如进程A产生数据而进程B打印数据,那么B在打印之前必须等待,直到A已经产生一些数据由于在不同地址空间进行通信的线程属于不同进程间的通信,所以除了第一个问题外,后两个问题在线程间的通信中也存在,它们的解决原创 2020-07-24 09:40:20 · 545 阅读 · 0 评论 -
【《现代操作系统 第4版》】2、进程与线程
进程进程是OS的核心概念,它是对正在运行程序的一个抽象。进程模型一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。从概念上说,每个进程拥有它自己的虚拟CPU。真正的CPU在各进程间来回切换,这种快速切换称作多道程序设计。由于CPU在各进程之间来回快速切换,所以每个进程执行其运算的速度是不确定的。而且当同一进程再次运行时,其运算速度通常也不可再现。所以,在对进程编程时决不能对时序做任何想当然的假设。进程和程序间的区别是很微妙的,但非常重要。用一个比喻可以更容易理解这一点。想象原创 2020-07-24 09:39:34 · 312 阅读 · 0 评论