摘要: Locks 为了解决在执行一系列指令时中间发生中断事情,引入了lock。 1. Locks: The Basic Idea 使用lock,关键部分为balance = balance + 1。 2. Pthread Locks 传递了一个变量来锁定和解锁,因为可能使用不用的锁来保护不同的变量(提高并 阅读全文
posted @ 2022-10-14 19:08 astralcon 阅读(127) 评论(0) 推荐(0)
摘要: Interlude: Thread API 带着两个问题学习本章节: OS创造和控制线程预留了什么接口? 这些接口是如何被设计以实现易用性和实用性? 1. Thread Creation 2. Thread Completion 3. Locks 除了创建和加入线程,另一个最有用的函数集就是为了使关 阅读全文
posted @ 2022-10-14 19:08 astralcon 阅读(34) 评论(0) 推荐(0)
摘要: Concurrency: An Introduction 我们这里引入了thread(线程)的概念,与前面所说process(进程)的区别如下: 线程之间进行上下文切换地址空间保持不变。 每个线程都将有一个stack。 1. Why Use Threads? 在深入了解thread之前,首先需要知道 阅读全文
posted @ 2022-10-14 19:07 astralcon 阅读(27) 评论(0) 推荐(0)
摘要: Complete Virtual Memory Systems 通过VAX/VMS和LINUX两个系统来说明前面所说的部分在完整的VM系统中如何体现。 1. VAX/VMS Virtual Memory 1.1 Memory Management Hardware VAX-11为每个进程提供了32位 阅读全文
posted @ 2022-10-14 19:07 astralcon 阅读(70) 评论(0) 推荐(0)
摘要: Beyond Physical Memory: Policies 对于OS的replacement policy,如何决定哪个(些)page(s)应该被移出内存是非常重要的,弄不好就会严重影响性能。当然的,为了避免极端情况下的行为发生,OS还包括一些调整措施。 1. Cache Management 阅读全文
posted @ 2022-10-14 19:06 astralcon 阅读(74) 评论(0) 推荐(0)
摘要: Beyond Physical Memory: Mechanisms 效率就是金钱。为了提高效率,一台计算机肯定不能一次只运行一个程序,而是一次运行多个程序。但是这样的话,page肯定不能全部存在内存中,所以就需要将page存在磁盘中。 1. Swap Space 首先我们要做的就是在磁盘中预留出一 阅读全文
posted @ 2022-10-14 19:06 astralcon 阅读(95) 评论(0) 推荐(0)
摘要: Paging: Smaller Tables 这章解决page带来的第二个问题:page table太大,会占用太多内存。 1. Simple Solution: Bigger Pages 一种非常简单的方法就是虚拟地址位数不变的情况下,增大page的大小,这样page的数量就会减少,相应的page 阅读全文
posted @ 2022-10-14 19:06 astralcon 阅读(101) 评论(0) 推荐(0)
摘要: Paging: Faster Translations (TLBs) 使用分页(paging)可能会导致高性能开销,因为分页需要大量的映射信息。由于该映射信息存储在物理内存中,所以对其进行查找要产生额外的内存开销。 为了解决这一问题,我们就需要依赖OS的老朋友硬件,在芯片的MMU中添加TLB(tra 阅读全文
posted @ 2022-10-14 19:05 astralcon 阅读(72) 评论(0) 推荐(0)
摘要: Paging: Introduction 在解决大多数空间管理问题时,操作系统会采用两种方法中的一种。一种是前面我们所提及到的segmentation,很不幸的是这种方法实现起来很困难。另一种方法就是接下来要介绍的paging。 1. A Simple Example And Overview 下图 阅读全文
posted @ 2022-10-14 19:05 astralcon 阅读(109) 评论(0) 推荐(0)
摘要: Free-Space Management 使用segmentation实现虚拟内存时,我们可能会遇到上图所示情况,总共未使用的空间是20字节,但是被分成了2个10字节的内存段,如果有个15字节的程序请求CPU给它分配内存,CPU只能拒绝这个请求。这一章就是为了解决这个问题。 1. Low-leve 阅读全文
posted @ 2022-10-14 19:04 astralcon 阅读(112) 评论(0) 推荐(0)