OSTEP-操作系统导论-写在后面
《操作系统导论》是我读过的关于计算机相关的书籍中写的最好的一本,没有之一,写的比CSAPP还要好(感谢jyy老师的安利)。整体读下来非常的流畅,深入浅出(感觉这个成语是对于这种技术书籍的最高赞语)。配合jyy老师的操作系统课程,简直相得益彰,第一次感觉到上课和看书(技术类的)是一种享受。写的一点都不学究,非常易懂,幽默诙谐,里面真的有很多让人会心一笑的段子。作者的功力一看就非常深厚,查了下作者好像是夫妻,羡慕了,学技术还要被撒狗粮。一开始担心认为可能翻译会有点不好,要不要直接上手英文版,看下来后翻译的也还行,除了个别地方"class"翻译成了类,实际上应该是课,还有个地方也有较大出入,但是已经忘记了,反正是瑕不掩瑜。
该书提出操作系统的三大话题是:virtualization, concurrency 和 persistency;细分下来,分别对应了操作系统中的数个组件(或技术)。
三大话题
对应技术 - 抽象
技术目标
虚拟化(virtualization)
CPU虚拟化- 进程
对每个程序提供“该系统拥有无限数量的CPU”的假象
虚拟化(vir ...
南京大学-操作系统-写在后面
daf9e1003c8b639b6138b233a83323392759d63b3830c291522ae4bbdefd227195056e211c052804e9a93d1d5fe336762f6a0c4564e582ffc9c955ec0dd0928c9f6c08049057c858eb2721331ca2c6c4b4fc8377dc2517f0e54617bd28161aab57176114435860e387b91eccae33f3ea7a7bb18c824a7186101c76497a3b512fad0899c63c8e914577c3b544675fbec3a6c5855063c7e954af8554eff5a75aa050021a91f6280309d636f78450382f85a7e50a104b13a0752d89234a62b138bbab8bd805705dc038010add5bfca6641dd99c39634605835d8ec2eeb8019dcbc5aa259a1bec798c0761a42bacccdca66e936c18a20036cabb9 ...
南京大学-操作系统-课程总结 (从逻辑门到计算机系统)
本学期的操作系统课程立足于计算机科学的核心,涵盖了从数字逻辑到编程语言的广泛内容,系统地阐明了操作系统在计算机体系中的重要性。课程通过实践操作和实例分析,使学生深入理解操作系统如何在不同层次之间建立联系,并通过编程语言实现复杂计算功能。
操作系统在计算机体系中的角色
连接性与重要性:操作系统在底层硬件与高级编程语言之间起桥梁作用。理解其工作原理有助于全面掌握计算机系统的架构。
教学方法与反馈:课程内容涵盖了繁杂的学科界面,教师结合学生反馈进行了适当的内容调整,以提升理解效果。
从逻辑门到编程语言的深层次学习
数字逻辑与基础课程:数字电路课程强调与非门作为现代计算机系统的基础组件,理解简单逻辑门对构建复杂电路的重要性。
编程与创意:编程不仅是代码书写,更是将抽象想法转成计算机指令的过程。允许学生探索底层硬件和逻辑电路的可能性。
编程语言与系统概念的整合
编程基础与调试技巧:重点在函数调用、递归及状态机。调试技能帮助学生快速定位和解决程序bug。
语言选择与教学策略:课程选择C语言教学,以简化底层电路与语言的连接。通过学习Simple C,学生可以更容易地翻译成汇编语言,理解编译 ...
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. 状态机模型的现代应用
数学化与物理世界的联系:
状态机作为数学对象,为我们提供了观察和理解世界的新视角。这种视角体现于约翰·康威的生命游戏,其中展示了简单规则下的复杂行为。
状态机通过扩展至多维模型,更真实地模拟了物理世界的行为,为我们更好理解自然提供了工具。
现代计算和智能探索:
通过基本逻辑门构建复杂系统,展示了计算机科学的广度。此方法使我们能理解智能行为及 ...