OSTEP-操作系统导论-文件系统与存储设备
操作系统将物理资源抽象为虚拟资源,例如将内存抽象为虚拟内存、CPU和内存抽象为进程;而对于磁盘,操作系统则以文件的形式加以抽象。
文件是磁盘的抽象。应用程序不会直接读写挂载在计算机上的磁盘本身,操作系统中也是不允许的。在Unix中,与存储系统交互的唯一方式就是通过文件:可以命名文件、读写文件等。在这背后,操作系统负责决定如何将文件映射到磁盘块,确保一个磁盘块只属于一个文件,并确保用户A无法操作用户B的文件。
用单一CPU抽象出无限个vCPU采用的是时分复用(time sharing),而用单一磁盘抽象出多个文件则是空分复用(space sharing)。
文件系统的目标是使用下层的持久存储设备作为资源,为上层提供文件抽象及相应的读写操作。
1.1 抽象:文件和目录
文件是一个线性的字节数组。文件系统中,文件的抽象与inode对应,inode由inode号(inumber)标识,inode包含(一级或多级)索引,这些索引直接或间接指向文件对应的数据块。
目录包含若干个文件或下级目录。文件系统中,目录的抽象也与inode对应,对应的inode同样有inumber,inode包含索引,指向目 ...
南京大学-操作系统-持久数据的可靠性 (RAID; 日志文件系统)
在今天的课程中,深入探讨了持久数据的可靠性,重点介绍了RAID技术和日志文件系统在数据保护中的作用。
持久数据的重要性
数据持久性:确保数据不会在意外情况下丢失是至关重要的,特别是在设备损坏或紧急情况下。备份策略能避免学业或工作的被动影响。
数据丢失风险及其影响
当今社会高度依赖信息系统,任何系统故障都可能造成严重后果。没有任何存储设备是绝对可靠的,必须认识到这些潜在的风险。
信息依赖的危险性:比如,丢失手机或银行账户信息会严重影响个人生活。
存储设备的故障:即使有纠错码(ECC)帮助缓解问题,设备在高负载或高温下仍可能损坏。无论是HDD还是SSD,都易受此困扰,因此需预防性备份。
RAID技术与数据存储的可靠性
RAID技术通过虚拟化多块磁盘来大幅提升系统可靠性和性能。这种反向虚拟化理念为1980年代的系统带来了重要变革。
RAID基本原理:通过多盘块冗余和独立性,确保即使一个磁盘失效,系统仍能正常工作。这种设计增加了数据存储的安全性和效率。
应用与优势:RAID技术为计算机系统的虚拟化奠定了基础,尤其体现在虚拟地址空间的设计中。
RAID 1与RAID 0的对比:RAID ...
CSAPP-深入理解计算机系统-写在后面
daf9e1003c8b639b6138b233a833233920e0b5eae94b8c4f41b4024ddb3bb3597130c246e53e9c68b81a808e0b7410c295eda4a0de0ccac27f2b220a5153611e85ac5f85a929e80008846bdcfc621c22d6544435c9ddf93efb6fae6811cb72abb7f9a72a0fdd054fac5b776a48a577b75f21221b9a732618526afb964cb2831ea309d5ad7b6b59604480be249549258d4513c656d3384c022147deaa3a425b1f09a5af0406117a4f9925888f88f92c43886d8ac95944e38ee12b0a194df6b12bdf526915d10b608819c7470e68a8d9bd6c22c168cbcc5767fe454f02a8da4b49636bf40944778777b0530ad2c5dd42795eb0f8e7e885e768e ...
南京大学-操作系统-文件与设备驱动程序 (驱动核弹发射器)
在本次课中,深入探讨了操作系统的文件和设备驱动程序,重点介绍“万物皆文件”的理念。强调了考试的主要内容将来自课程幻灯片和示例代码,要求学生重视理解基本原理,而非细节上的记忆。
文件描述符与系统调用
文件描述符:它们是进程访问和操作文件的关键工具。文件描述符作为一个简单的整数,实际上指向操作系统的各种对象,并支持灵活的文件处理操作。
系统调用:通过如open、read、write的系统调用,应用程序可以与文件和设备进行交互。这些调用是在UNIX和其他操作系统中实现硬件与软件桥接的重要手段。
设备驱动程序的设计与实现
操作复杂性:设备驱动程序的实现需考虑I/O控制、虚拟机管理等复杂性,展示了操作系统设计中的挑战。
设备与操作系统的互动:通过系统调用和驱动程序,操作系统能够有效管理文件和设备,实现对硬件资源的高效利用。
系统调用的实际应用
实际应用分析:通过分析工具和真实程序示例,如GLIBC和ExecTrace,展示系统调用是如何在程序中被实用和实现,提供有力的理解支撑。
效率提升:openat调用简化了复杂路径的文件操作,提升了实际编程中的效率。
操作系统内部运作
系统配置 ...
南京大学-操作系统-输入输出设备原理 (I/O 设备、总线、中断控制器、DMA 和加速器)
这次课程详细探讨了输入输出(I/O)设备在计算机系统中的作用,涵盖I/O设备及其虚拟化、总线、中断控制器、直接内存访问(DMA)以及加速器等重要组件。随着技术的进步,显卡(GPU)和其他加速器的出现进一步提升了计算机的处理能力。本次课程涉及的主题贯穿计算机与外部环境的互动,以及如何通过不同的硬件接口提升操作和处理效率。
输入输出设备的基础功能
计算机系统中的输入输出设备是与外部世界交互的关键途径。这些设备使计算机能够接收和执行外部指令来完成操作。
输入设备:诸如键盘和鼠标,作为用户与计算机的互动工具,承担了信息输入的角色。
输出设备:显示器和打印机等,用来向用户呈现信息或结果。
历史简述:早期的I/O设备通过直接的导线与CPU连接。现今复杂的接口(如树莓派的GPIO接口)使计算机可以更轻松地与外设进行互动。
CPU与设备的交互方式
在执行诸如Load和Store指令时,中央处理器(CPU)不直接关心数据的传输,而由底层硬件电路和接口来完成。
GPIO接口:在开发树莓派等硬件项目时十分实用,可通过简单的控制指令操作外部设备。
寄存器模型:I/O设备基本遵循寄存器模型,与CPU进行数 ...
南京大学-操作系统-持久数据存储原理
本次探讨了持久数据存储的基本原理,着重分析文件系统在操作系统中的重要性。文件是计算机操作的基本单位,其持久化确保了数据在关机后仍然存在。此外,课程还回顾了图灵机的基础知识,讨论了如何实现数据的持久存储,并探讨了不同存储介质的发展历程,包括磁带、机械硬盘和固态硬盘(SSD)的优缺点。最终,强调了现代SSD在性能方面的显著提升及其在数据存储中的广泛应用。
文件系统的作用与持久化
持久化的关键性:
文件作为操作系统中的核心对象,使数据管理更为简便,通过简单的操作即可实现数据的创建、修改和移动。
数据以比特形式进行持久保存,需要理解存储器与图灵机的原理,这为理解文件系统的实现提供了基础。
图灵机的贡献:
图灵机作为一个计算模型,对理解计算机的数据持久化及其强大能力有基本指导意义。
它帮助我们构建有效的存储设备,同时揭示了计算的无穷可能性。
存储器的基本原理
电磁存储技术:
数据通过电磁感应被存储和读取,存储器常采用二维网格结构,利用电容来代表二进制数据。
动态随机存取存储器(DRAM)通过定期刷新机制,补偿电容漏电以确保数据的持续性。
持久存储的意义:
即便在 ...
南京大学-操作系统-状态机模型的应用 (图灵机、Game of Life、状态机思想在编程世界的应用)
概述了操作系统课程的关键理念,以状态机模型为核心,重点关注其在计算机科学中的作用。通过历史背景和现代计算的比较,全面探讨了如何将这种模型应用于操作系统的不同机制中。
1. 状态机与计算机科学的核心观点
一切皆为状态机:
课程的核心思想是“一切都是状态机”。这是一种理解计算机科学的基本方式,有助于解析操作系统中的复杂问题。
状态机提供了算法和程序设计的基础视角,帮助我们理解操作系统的运行和管理。
图灵机的启示:
作为计算机科学的奠基模型,图灵机揭示了计算的基本可能性。通过学习图灵机,学生可以更好地理解计算的本质。
将图灵机与现代计算机进行比较,使得学生更深入地体会计算模型的演变,从中获益。
2. 状态机模型的现代应用
数学化与物理世界的联系:
状态机作为数学对象,为我们提供了观察和理解世界的新视角。这种视角体现于约翰·康威的生命游戏,其中展示了简单规则下的复杂行为。
状态机通过扩展至多维模型,更真实地模拟了物理世界的行为,为我们更好理解自然提供了工具。
现代计算和智能探索:
通过基本逻辑门构建复杂系统,展示了计算机科学的广度。此方法使我们能理解智能行为及 ...
南京大学-操作系统--虚拟化-处理器调度 (xv6 上下文切换;处理器调度:机制和策略)
本节课重点讨论了操作系统中的处理器调度机制,涵盖了上下文切换、调度策略及多处理器环境下的挑战。通过讲解和示例,帮助理解操作系统是如何有效管理进程和分配系统资源的。
1. 处理器调度与上下文切换
上下文切换:
上下文切换是在处理中断或系统调用时保存和恢复进程状态的关键机制。操作系统通过将寄存器状态封存到内存中,再切换到另一个进程,确保多个进程高效运行。
这项技术对于实现多任务运行至关重要,尽管其耗时较长,但设计良好的调度算法可以最小化其对系统性能的影响。
调度策略:
调度策略决定了系统如何选择下一个执行的进程。操作系统使用这些策略来管理CPU资源,例如优先级调度和公平分享策略,以便在用户体验和资源分配之间找到平衡。
2. 虚拟内存与分页机制
分页机制:
操作系统使用分页机制将虚拟地址映射到物理地址,支持按需加载和高效内存管理。通过页表,这种机制实现了虚拟内存的灵活使用,从而提高了系统的稳定性和安全性。
ERF文件与错误管理:
在加载新进程时,操作系统从文件系统读取Executable and Linkable Format(ELF)文件,并验证其magi ...
OSTEP-操作系统导论-内存虚拟化
内存虚拟化的目的是为进程创造独享大量虚拟内存的错觉,通过地址映射(Address Mapping)将进程的虚拟地址空间转换为硬件的物理地址。
1.1 虚拟地址空间的抽象
地址空间(Address Space)是程序可视的系统内存,包含其运行所需的代码和数据。每个程序运行在各自的地址空间中,实现了强隔离。用户进程使用的是虚拟地址(Virtual Address, VA),通过硬件(例如内存管理单元,Memory Management Unit, MMU)和操作系统协同实现的地址转换机制,将虚拟地址转换为物理地址(Physical Address, PA)。
物理地址结构与平台相关,通常不仅包括RAM,还包括I/O设备的内存映射和启动ROM。内核虚拟地址空间由内核设计,包含内核代码、数据、内核栈及可分配给用户程序的内存等;而用户进程的虚拟地址空间由内核提供,涵盖了用户代码、数据、栈和堆等。
在C语言中,变量直接声明使用栈内存,而堆内存则需要使用内存分配函数手动管理,如:
malloc():申请指定大小的堆内存,成功时返回地址,失败时返回NULL。
free():释放已申请的内存。
上述 ...
南京大学-操作系统--虚拟化-进程的实现 (虚拟地址空间;UNIX 和 xv6)
在本节课中,探讨了操作系统的进程实现,包括虚拟地址空间、UNIX和xv6等主题。通过一个简单的50行代码实验框架,创建了线程数据结构,并探讨了操作系统如何处理中断和进程调度。课程强调了进程与线程的区别,进程拥有独立的虚拟地址空间,而线程共享物理内存。此外,还详细介绍了虚拟地址到物理地址的转换机制,页表的作用,以及通过高效的数据结构实现地址映射。最后,讨论了UNIX的历史背景及其对现代操作系统的影响。
1. 操作系统中的线程管理
线程创建与管理:
复习了操作系统中的线程管理内容,特别是线程的创建和中断处理机制。操作系统有效地管理多个线程的运行,通过对寄存器的保存和进程调度。
每个线程都有自己的名字和入口地址,线程创建时会被分配相应的堆栈,从而便于管理和调度。
中断处理与进程调度:
中断处理是操作系统的关键任务之一,在中断时,操作系统保存当前寄存器状态,并进行进程调度,以保证系统的流畅运行。
进程与线程的主要区别在于线程共享内存,而进程则拥有独立的虚拟内存空间。
2. 虚拟内存与内存管理
内存隔离与安全管理:
操作系统使用虚拟内存管理实现进程之间的内存隔离,系统通 ...
