读书笔记系列深入理解计算机系统之计算机系统漫游

前言

信息就是位+上下文

源文件就是0和1组成的位,8个位一组,称为字节,每个字节表示程序中文本字符。大多数计算机系统使用ASCLL码来表示文本字符,ascll码是有单字节大小整数值表示每个字符。

以C语言的成功执行为例子,成功执行的二进制要经过下列流程: 源程序(文本文件) -> 预处理 -> 编译 -> 汇编 -> 链接 -> 生成可执行文件

系统的硬件组成

总线 贯穿系统的电子管道,携带信息字节在各部件中传输,总线设计成定长字节块,也就是字。现在的机器一字可能为4个字节,也可能为8字节 I/O设备 系统与外部世界联系通道,每个I/O设备通过控制器或适配器与I/O总线相连 主存 一个临时存储设备,处理器执行时,用来存放程序和程序处理的数据。 处理器 是解释或执行存储在主存中指令的引擎。核心是一个大小为一个字存储设备(或寄存器),称为程序计数器。 任何时候,pc都指向主存中某条机器语言指令;不断的执行计数器指向的指令,更新计数器,指向下一条指令。整个操作围绕主存,寄存器文件(由一些单个字长的寄存器组成)和算术逻辑单元进行 可能存在的操作:

从shell窗口输入一个指令,信息流从I/O设备到寄存器,从磁盘拷贝执行指令到内存,然后再通过到寄存器,输出到显示设备上,可以看出,系统花费大量的时间把消息从一个地方挪到另一个地方,这些较大的存储设备和较小的存储设备运行速度有明显的差异,例如处理器和主存之间的运行速度的差距越来越大,这时系统设计采用了更小更快地存储设备,称为高速缓存存储器

操作系统

上述shell操作程序的例子都是依靠操作系统提供的服务完成的。所有应用程序对硬件的操作尝试都必须通过操作系统 操作系统两个基本功能:

操作系统通过进程(处理器,主存,I/O设备),虚拟内存(主存,磁盘I/O设备),文件(I/O设备)等抽象概念来实现上述两个功能

进程 进程是操作系统对一个正在运行的程序的一种抽象。在程序运行时,操作系统会提供一种假象,就好像系统上只有这个程序在运行,无论是单核还是多核的情况下,通过处理器在多个进程间切换来实现并发运行,这种交错执行的机制称为上下文切换。 操作系统保持跟踪进程运行所需的所有状态信息,这种状态被称为上下文。 进程间的转换是由操作系统内核管理的,内核常驻主存,比如当应用程序读取文件时,执行一条系统调用指令,将控制权传递给内核,然后内核执行请求返回数据,内核不是独立进程

线程 一个进程通常由多个线程执行单元组成,每个线程运行在进程上下文中,共享同样代码和全局数据,相比进程之间更容易共享数据,相率更高。

虚拟内存 为每个进程提供一个假象,每个进程独占使用主存;整个进程的虚拟地址空间如同一杯鸡尾酒,从下到上依次为:程序代码合数据,堆,共享库,栈,内核虚拟内存

文件 文件就是字节序列,每个I/O设备,磁盘,键盘,显示器,甚至网络,都可以看成文件

网络

现代系统通过网络和其他系统连接在一起,网络也可视为一个I/O设备