行万里路
6d63b89221e13b3febb0d4b727fe1cb7b9a5d0e0ce86e70d76eba31de419c45e
踏遍青山人未老。我的旅游札记。需要密钥
GeekBank-C++设计模式
daf9e1003c8b639b6138b233a8332339e1ead0f55448465b1865b02b7555ef8e24019512ab5e7650eb07c89edd1fd4d2e86732c01a11c90b199c02639281d9ecce078c29de5c4ca676c5f529d6b24fb381a4e20f5a3b81cd4ad3d645a52ace1744ca9f4c39f13096c3b6c240e6019259
主观看法,不宜公开。需要密钥。
OSTEP-操作系统导论-写在后面
《操作系统导论》是我读过的关于计算机相关的书籍中写的最好的一本,没有之一,写的比CSAPP还要好(感谢jyy老师的安利)。整体读下来非常的流畅,深入浅出(感觉这个成语是对于这种技术书籍的最高赞语)。配合jyy老师的操作系统课程,简直相得益彰,第一次感觉到上课和看书(技术类的)是一种享受。写的一点都不学究,非常易懂,幽默诙谐,里面真的有很多让人会心一笑的段子。作者的功力一看就非常深厚,查了下作者好像是夫妻,羡慕了,学技术还要被撒狗粮。一开始担心认为可能翻译会有点不好,要不要直接上手英文版,看下来后翻译的也还行,除了个别地方”class”翻译成了类,实际上应该是课,还有个地方也有较大出入,但是已经忘记了,反正是瑕不掩瑜。
该书提出操作系统的三大话题是:virtualization, concurrency 和 persistency;细分下来,分别对应了操作系统中的数个组件(或技术)。
三大话题
对应技术 - 抽象
技术目标
虚拟化(virtualization)
CPU虚拟化- 进程
对每个程序提供“该系统拥有无限数量的CPU”的假象
虚拟化(virtualizati ...
南京大学-操作系统-写在后面
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与RAI ...
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设备基本遵循寄 ...
