写在前面
工作找得差不多之后,总是感觉技术方向很迷茫。后面看一本书《暗时间》,上面说的对:
大量的新技术其实只是一层皮,背后的支撑技术其实都是十来年不变的东西。底层知识永不过时;算法数据结构永不过时;分析问题和解决问题的能力永不过时;强大的学习能力和旺盛的求知欲永不过时;你大脑的思维方式永不过时。
关于读书速度
有选择地阅读。 对于一些逻辑混乱,作者都不知道自己问题是什么,或者上来就是技术方法细节,而不是从方法背后的理念出发,直观解释的书,没必要一定说服自己读下去,继续读反而是增加烦恼,浪费时间。
快or慢。 快慢从来不是一个问题,好书、知识密度大、需要思考的书就慢读。质量差,没啥的,该快就快,有必要过一遍的话,该不读就直接扔一边去,没必要纠结。
“三天打鱼,两天晒网”的人往往最后会变成“整天晒网,永不打鱼”。也就是说耐心和恒心吧。一本再厚的书,每天看一点,总有看完的一天。
言归正传
- 信息就是 位+上下文
- 利用直接存储器存取(DMA)技术,数据可以不通过处理器而直接从磁盘到达内存。
- hello world 程序在执行的时候,hello world 字符串复制路径:硬盘->主存->寄存器->显示设备。
- 一个典型系统的硬件组成:
- 存储设备形成设备层次
- 进程的上下文切换
系统调用和中断的关系就在于,当进程发出系统调用申请的时候,会产生一个软件中断。产生这个软件中断以后,系统会去对这个软中断进行处理,这个时候进程就处于核心态了。 操作系统有两个基本的功能:
- 防止硬件被失控的应用程序滥用。(应用程序只能通过系统调用的方式来请求)
- 向应用程序提供简单一致的机制来控制复杂而又大相径庭的低级硬件设备。比如对于所有的I/O设备,包括硬盘、键盘、显示器、网络都视为文件,通过一组称为UNIX I/O的系统函数调用来实现输入输出。
操作系统内核是应用程序和硬件之间的媒介。提供三个基本的抽象:
- 文件是I/O设备的抽象
- 虚拟存储器是对主存和磁盘的抽象
- 进程是对一个正在运行的程序的抽象,包括处理器、主存和IO设备。