摘要: 最简单的内存抽象就是没有抽象,程序直接使用物理内存地址,地址从 0 开始到一个最大值。每个内存地址对应一个内存单元,这个单原包含 8 个 bits,称之为一个 字节(byte)。 在这种情况下,不可能同时运行多个任务。因为多个程序共享物理内存,一个进程可能会修改另一个进程在内存中的数据,导致意料之外 阅读全文
posted @ 2025-05-12 23:47 DantalianLib 阅读(1) 评论(0) 推荐(0)
摘要: 主存(RAM) 是计算机系统中的一个非常重要的资源,需要被谨慎地管理和使用。 我们都希望内存可以无限大、无限地快,并且断电也不会丢失数据,但是这并不现实。 目前的内存系统是一个由缓存、主存、磁盘构成的 层级结构(memory hierarchy)。操作系统的作用就是将这个层级结构抽象为一个易于使用的 阅读全文
posted @ 2025-05-12 23:45 DantalianLib 阅读(2) 评论(0) 推荐(0)
摘要: 2.5.1 哲学家就餐问题 The Dining Philosophers Problem 简单描述下这个问题: 若干个哲学家围着圆桌,每两个人之间有一把叉子。每个哲学家都会思考,而当哲学家思考累了后,就想要吃饭。但是只有拿到左右两边的两把叉子时,哲学家才可以吃饭。吃完后,哲学家继续思考…… 让哲学 阅读全文
posted @ 2025-05-10 01:18 DantalianLib 阅读(2) 评论(0) 推荐(0)
摘要: 进程间通信主要是三个问题: 一个进程如何传递消息给另一个进程 多个进程之间如何不会相会妨碍(竞争、死锁) 多个进程之间存在依赖时,需要处理进程的顺序 2.3.1 竞态条件 Race Conditions 当多个进程读写一个共享的数据,并且最终的结果依赖于进程地执行顺序时,这种状态就叫做竞态条件 2. 阅读全文
posted @ 2025-04-07 00:43 DantalianLib 阅读(7) 评论(0) 推荐(0)
摘要: 在多任务系统中,如果在同一时刻有多个进程或者线程需要运行,但是只有有限的 CPU 资源,就需要决定接下来应当运行哪些进程(线程)。这种操作系统的机制就叫做调度,其对应的算法就叫做调度算法。 2.4.1 调度简介 Introduction to Scheduling 在一些早期的机器上,CPU 是稀缺 阅读全文
posted @ 2025-04-02 20:45 DantalianLib 阅读(8) 评论(0) 推荐(0)