“差不多”精神
数学是一门严谨的学科,以精确为追求。
软件没有精确可言,是十足的“差不多”学科。没有对错,只有好坏。无法精确计算可靠性、健壮性、成本、算法强弱,只能估算。
计算机硬件基础知识
总体看:
所有设备通过一条总线连接起来,通过总线实现控制、通信。
流水线:
将指令的执行过程拆分为多个步骤,就行工厂里制造一个产品的流水线。
指令读取->指令译码->读操作数->指令执行->写结果
多道程序:
一次加载多个程序进内存,多个程序都处于运行过程中。
CPU以某种策略在多个程序中调度执行。
计算机的存储机构:
寄存器->缓存->主存(内存)->磁盘(硬盘)
越往后速度越慢、成本越低,容量越大。
中断:
CPU提供的让其它设备打断当前执行流程的机制。
抽象
操作系统提供的是一种抽象。
抽象来源于具体,又超越具体。
操作系统提供的抽象来源于计算机硬件,但给人和应用软件感觉到更多、更好的硬件。
用户态、内核态
根据工作不同,程序拥有的权限和资源是不同的。
用户态、内核态,实际是处理器状态,由处理器的状态寄存器的一个状态位确定。
访问资源时,要经过地址翻译,在翻译过程中进行权限检查。
操作系统的结构
模块化:
操作系统由多个功能块组成,每个块提供接口,多个块相互调用功能。
问题:功能块间关系复杂;容易造成死锁。
层级结构:
参考人类社会层次关系
操作系统的各个功能,分上下层级,上层调用下层的服务。
问题:大量功能都在内核态实现,提供了大量的攻击面。
微内核:
只将操作系统最核心的功能放到内核态,减少攻击面。
将大量功能移动到用户态。
系统调用
操作系统通过系统调用为其它程序提供服务。
系统调用分类:
进程管理类
文件管理类
设备管理类
内存管理类
信息维护类
通信类
系统调用三个阶段:
参数准备
系统调用分发
系统调用执行
———————————————————————————————————————————
欢迎关注我的微博:大雄_RE。专注软件逆向,分享最新的好文章、好工具,追踪行业大佬的研究成果。