
操作系统
学习操作系统里的一些问题
hyummy0506
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
文件系统概述
文件描述符: 文件系统种类:原创 2019-05-29 15:35:27 · 251 阅读 · 0 评论 -
进程间的通信——信号、管道、消息队列、共享内存
信号: 其相当于是传的那个bit,不是数据,相当于就是通知,所以不适合数据交换,但是效率很高。 实现: 管道,用于数据交换: 管道就是内核中的一个buffer 管道是从文件中写的。 管道其实是父进程帮子进程建立好的一个通道,若进程间没有父子关系,管道(pipe)就没法工作了;管道里面数据是一种字节流,不具有结构化的表示形式。这两个缺点都可以通过消息队列克服 消息队列:...原创 2019-05-29 11:35:00 · 260 阅读 · 0 评论 -
死锁检测和死锁恢复
有环则代表可能出现死锁情况 在实际应用中很少用到银行家算法和死锁检测算法,因为时间复杂度比较高,并且银行家算法还要提前知道Max矩阵,而在实际运用中很难得到,所以这些不会直接用到操作系统中,只会在调试操作系统的时候用到。 例一: 序列:P0,P2,后面都可以满足了。 例二: 即会出现死锁情况。当执行P0后,available变成0 1 0,不满足任何...原创 2019-05-28 19:00:07 · 1949 阅读 · 0 评论 -
银行家算法(死锁避免)
注意死锁避免是在进程发出请求时进行判断,而死锁检测和死锁恢复是允许进入死锁状态,在运行时进行判断。 银行家算法具体步骤: 但若是finish[i]存在false,且找不到满足true的状态了,就处于unsafe状态。 两个例子:如下图,当四个进程P1,P2,P3,P4都没结束,即finish[i]都为false,这时我们响应p2。 如上图,根据a...原创 2019-05-28 17:51:25 · 3240 阅读 · 0 评论 -
死锁
举例: 死锁的必要条件: 在之前已经介绍死锁处理办法,以下是概括性描述死锁: 避免死锁,就是打破死锁的四个必要条件,即可打破死锁条件,就是死锁预防: 死锁避免: 找到资源执行序列(安全的执行序列): ...原创 2019-05-28 16:26:30 · 128 阅读 · 0 评论 -
经典同步问题-3——哲学家问题
可以先根据人的思维去思考人会怎么做,然后再去进行程序设计 每个人都拿左边叉子,导致死锁: 改进,但仍有问题: 重复进行操作 随机时间: 以下方法只允许一个人吃饭,效率不高: 把哲学家状态作为临界区资源 ...原创 2019-05-27 17:49:19 · 173 阅读 · 0 评论 -
经典同步问题-2——多读写操作写操作优先
利用管程实现写者(Writer)优先操作原创 2019-05-26 17:38:50 · 334 阅读 · 0 评论 -
经典同步问题-1——多读写操作之读操作优先
以上其实是读者优先操作原创 2019-05-26 17:26:06 · 247 阅读 · 0 评论 -
进程间的同步互斥——管程
其实与Java语言中的lock与condition类似。 用管程实现生产者消费者问题,注意管程定义只能一个线程进入临界区原创 2019-05-29 10:28:06 · 1253 阅读 · 0 评论 -
进程间的同步——信号量以及同步互斥区别
设成1用于互斥 设为0用于同步 先解释一下同步与互斥的概念和区别: 进程同步 进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。 比如说进程A需要从缓冲区读取进程B产生的信息,当缓冲区为空时,进程B因为...原创 2019-05-26 17:14:42 · 1265 阅读 · 0 评论 -
进程间同步互斥
1、原子操作 2、临界区加锁(互斥) 3、信号量 4、管程原创 2019-05-29 10:39:11 · 278 阅读 · 0 评论 -
进程间的同步互斥
多个进程可能访问多个共享资源,或者进行交互 举例: 一条c语言其实是4条汇编语言 总结来说:和Java中锁的概念类似,进入临界区加锁,离开临界区解锁 ...原创 2019-05-26 16:07:24 · 281 阅读 · 0 评论 -
操作系统——进程和线程
进程状态转化图: 与虚存相关 如线程不需要进行页表切换 内核线程,操作系统可以强制执行。原创 2019-05-26 15:39:10 · 188 阅读 · 0 评论 -
操作系统调度算法
I/O操作和CPU:当某个线程进行I/O操作时,CPU会处于无事可做状态,此时希望CPU对其他线程进行执行。 性能指标: 基本调度算法: 缺点:周转时间、等待时间都会较长 优点:平均等待时间最短 缺点:违背公平原则 下一次执行时间预估: 轮询调度算法: ...原创 2019-05-24 20:36:04 · 321 阅读 · 0 评论 -
页面置换算法
常用页面用页面锁定 替换d页 FIFO产生缺页较多 LRU算法缺页次数较少,但是实现开销大 举例,如图开销较大 页表(page table)中就有这个访问位,根据这个访问位进行时钟置换算法 注意used bit 置1由硬件操作,清0由操作系统执行 和LRU效果类似,贴近LRU效果,但是执行...原创 2019-05-23 17:54:58 · 186 阅读 · 0 评论 -
虚拟内存技术及程序局部性原理
覆盖技术 上世纪80 90年代用到的技术,如dos系统 2.交换技术 Unix 原理看似简单,但是实际操作起来会非常复杂 3.虚存技术 注意,如c语言,java语言,包括python语言都是按行存储二维数据,而matlab是按列存储二维矩阵 MEMORY EXCEPTION 操作系统会帮你处理,就涉及到虚拟内存技术,...原创 2019-05-18 22:04:59 · 1457 阅读 · 0 评论 -
TLB
原创 2019-05-18 20:51:12 · 736 阅读 · 0 评论