随笔分类 -  操作系统导论

操作系统导论
摘要:Locality and The Fast File System "old UNIX file system" looked like this: super block(S): contains information about the entire file system inode reg 阅读全文
posted @ 2022-10-14 19:13 astralcon 阅读(99) 评论(0) 推荐(0) 编辑
摘要:File System Implementation 这章会介绍一个简单的文件系统vsfs(Very Simple File System)。该系统为简化版的UNIX系统,纯软件;有现在大部分文件系统中的基本磁盘结构、访问方法和各种策略。 带着问题学习:如何实现一个简单的文件系统? 1. The W 阅读全文
posted @ 2022-10-14 19:13 astralcon 阅读(85) 评论(0) 推荐(0) 编辑
摘要:Interlude: Files and Directories 带着问题学习:操作系统应如何管理持久性设备?什么是API?实施的重要方面是什么? 1. Files And Directories 在虚拟化存储方面有两个重要的抽象: 文件(file) 目录(directory) 文件:一组字节的线性 阅读全文
posted @ 2022-10-14 19:12 astralcon 阅读(61) 评论(0) 推荐(0) 编辑
摘要:Redundant Arrays of Inexpensive Disks (RAIDs) 带着问题学习:如何制作容量大、速度快、可靠的磁盘? 解决上述问题使用了一种技术叫做Redundant Array of Inexpensive Disks(RAID):协同使用多个磁盘。 RAIDs相对于单个 阅读全文
posted @ 2022-10-14 19:11 astralcon 阅读(105) 评论(0) 推荐(0) 编辑
摘要:Hard Disk Drives 带着问题:磁盘是如何存储和获取数据的? 1. The Interface 磁盘可以看作n个扇区的数组(驱动器地址空间从0到n - 1)。 多扇区操作是可以的。许多文件系统一次将读或写很大字节的内容。但是,在更新磁盘时,驱动制造商唯一保证的就是单个512字节扇区的写入 阅读全文
posted @ 2022-10-14 19:11 astralcon 阅读(129) 评论(0) 推荐(0) 编辑
摘要:I/O Devices 带着问题学习:如何将I/O集成到系统中?一般机制是什么?如何使它们高效? 1. System Architecture 上图所示,I/O设备被分成三层。但是为什么需要将其分层? 最直接的原因:物理(physics)和成本(cost)。高性能通道没有太多空间插入设备且设计总线的 阅读全文
posted @ 2022-10-14 19:11 astralcon 阅读(97) 评论(0) 推荐(0) 编辑
摘要:Event-based Concurrency (Advanced) 我们前面讨论并发问题都是使用多线程。但是,关于并发的问题不止这一方面,还有使用基于GUI的应用程序和因特网服务器的并发,这些叫做基于事件的并发(event-based concurrency)。 要解决的基于事件的并发问题有两个: 阅读全文
posted @ 2022-10-14 19:10 astralcon 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Common Concurrency Problems 带着问题:如何处理常见的并发错误问题? 1. What Types Of Bugs Exist? 主要研究4个开源应用: MYSQL Apache Mozilla OpenOffice 2. Non-Deadlock Bugs 大部分并发问题都 阅读全文
posted @ 2022-10-14 19:10 astralcon 阅读(48) 评论(0) 推荐(0) 编辑
摘要:Semaphores 带着问题学习:如何使用信号量(semaphores)? 1. Semaphores: A Definition semaphore是一个具有整数值的对象,可以使用两个例程来对其进行操作。 POSIX中两个例程为sem_wait()和sem_post()。 在使用之前必须初始化, 阅读全文
posted @ 2022-10-14 19:09 astralcon 阅读(83) 评论(0) 推荐(0) 编辑
摘要:Condition Variables 输出结果如下: 在多线程情况下我们可以尝试使用共享变量,可以但是效率非常低下: 问题来了:在多线程情况下,线程应该如何等待条件? 1. Definition and Routines condition variable有两个操作: wait() // 当一个 阅读全文
posted @ 2022-10-14 19:09 astralcon 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Lock-based Concurrent Data Structures 带着问题:给定一个数据结构,如何给其添加锁使其拥有正确性和高效性? 1. Concurrent Counters 1.1 Simple But Not Scalable 上述代码满足了正确性,但是对于性能,我们一无所知。为了 阅读全文
posted @ 2022-10-14 19:09 astralcon 阅读(16) 评论(0) 推荐(0) 编辑
摘要:Locks 为了解决在执行一系列指令时中间发生中断事情,引入了lock。 1. Locks: The Basic Idea 使用lock,关键部分为balance = balance + 1。 2. Pthread Locks 传递了一个变量来锁定和解锁,因为可能使用不用的锁来保护不同的变量(提高并 阅读全文
posted @ 2022-10-14 19:08 astralcon 阅读(102) 评论(0) 推荐(0) 编辑
摘要:Interlude: Thread API 带着两个问题学习本章节: OS创造和控制线程预留了什么接口? 这些接口是如何被设计以实现易用性和实用性? 1. Thread Creation 2. Thread Completion 3. Locks 除了创建和加入线程,另一个最有用的函数集就是为了使关 阅读全文
posted @ 2022-10-14 19:08 astralcon 阅读(28) 评论(0) 推荐(0) 编辑
摘要:Concurrency: An Introduction 我们这里引入了thread(线程)的概念,与前面所说process(进程)的区别如下: 线程之间进行上下文切换地址空间保持不变。 每个线程都将有一个stack。 1. Why Use Threads? 在深入了解thread之前,首先需要知道 阅读全文
posted @ 2022-10-14 19:07 astralcon 阅读(21) 评论(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 阅读(50) 评论(0) 推荐(0) 编辑
摘要:Beyond Physical Memory: Policies 对于OS的replacement policy,如何决定哪个(些)page(s)应该被移出内存是非常重要的,弄不好就会严重影响性能。当然的,为了避免极端情况下的行为发生,OS还包括一些调整措施。 1. Cache Management 阅读全文
posted @ 2022-10-14 19:06 astralcon 阅读(61) 评论(0) 推荐(0) 编辑
摘要:Beyond Physical Memory: Mechanisms 效率就是金钱。为了提高效率,一台计算机肯定不能一次只运行一个程序,而是一次运行多个程序。但是这样的话,page肯定不能全部存在内存中,所以就需要将page存在磁盘中。 1. Swap Space 首先我们要做的就是在磁盘中预留出一 阅读全文
posted @ 2022-10-14 19:06 astralcon 阅读(81) 评论(0) 推荐(0) 编辑
摘要:Paging: Smaller Tables 这章解决page带来的第二个问题:page table太大,会占用太多内存。 1. Simple Solution: Bigger Pages 一种非常简单的方法就是虚拟地址位数不变的情况下,增大page的大小,这样page的数量就会减少,相应的page 阅读全文
posted @ 2022-10-14 19:06 astralcon 阅读(73) 评论(0) 推荐(0) 编辑
摘要:Paging: Faster Translations (TLBs) 使用分页(paging)可能会导致高性能开销,因为分页需要大量的映射信息。由于该映射信息存储在物理内存中,所以对其进行查找要产生额外的内存开销。 为了解决这一问题,我们就需要依赖OS的老朋友硬件,在芯片的MMU中添加TLB(tra 阅读全文
posted @ 2022-10-14 19:05 astralcon 阅读(51) 评论(0) 推荐(0) 编辑
摘要:Paging: Introduction 在解决大多数空间管理问题时,操作系统会采用两种方法中的一种。一种是前面我们所提及到的segmentation,很不幸的是这种方法实现起来很困难。另一种方法就是接下来要介绍的paging。 1. A Simple Example And Overview 下图 阅读全文
posted @ 2022-10-14 19:05 astralcon 阅读(89) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示