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

前言

信息就是位+上下文

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

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

系统的硬件组成

总线

I/O设备

主存

处理器

常用指令:

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

操作系统

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

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

进程

上下文

进程间的转换由操作系统内核管理的,内核常驻主存,比如当应用程序读取文件时,执行一条系统调用指令,将控制权传递给内核,然后内核执行请求返回数据,内核不是独立进程

线程

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

虚拟内存

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

文件

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

网络

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