本文共 1375 字,大约阅读时间需要 4 分钟。
计算机由系统软件和硬件组成,其内在概念亘古不变。
通过对hello world程序的生命期来了解计算机系统。
信息+上下文=信息,不同类型的信息有不同的上下文,上下文就是编码规则。
只由ASCII字符构成的文件为文本文件,其他所有文件为二进制文件。
C语言成功的因素:Unix由C语言编写、小而简单、为实践目的设计。
预处理阶段(.c->.i):处理#开头的命令,载入头文件,替换宏定义。
编译阶段(.i->.s):将c代码翻译成汇编。
汇编阶段(.s->.o):将汇编代码翻译成机器语言。
链接阶段:将所有目标文件合并为可执行文件。
GNU是开源文化的起源,其给linux内核提供了基础环境。
优化程序性能、理解链接出错的原因、避免安全漏洞。
shell是一个命令解释器。
系统硬件组成:
总线:电子管道。传送定长字节,4字节(32位),8字节(64位)。
I/O设备:系统与外部联系通道。键盘、鼠标、显示器、磁盘等。
主存:DRAM。一个线性数组,数据类型决定每个数据项大小。
处理器。CPU,一个字的存储设备。一直执行指令并更新计数器PC。
hello world运行过程:键盘./hello -> shell hello -> 内存 -> 键盘回车 -> shell hello.c -> 内存 -> CPU -> 寄存器 -> 显示器。
寄存器->主存->磁盘之间速度差异太大,1000倍->100倍,缓存作为暂存设备弥补这种差异。
利用高速缓存的局部性原理,存放可能经常访问的数据。
L1、L2:SRAM
利用高速缓存能将程序的性能提高一个数量级。
L0 寄存器
L1 高速缓存(SRAM)
L2 高速缓存(SRAM)
L3高速缓存(SRAM)
主存(DRAM)
本地二级存储(磁盘)
远程二级存储(分布式文件系统、Web服务器)
所有应用对硬件的操作都必须通过操作系统,shell和hello world程序都没有直接访问设备。
操作系统两个基本功能:防止硬件被应用滥用、为应用提供统一简单的API操作硬件。
进程是程序的运行态,使每个程序好像独占计算机资源。
操作系统通过上下文切换来交替执行每个进程,实现并发运行。
一个进程可由多个线程组成,多线程之间比多进程更加容易共享数据,因此更加高效。
虚拟内存为进程屏蔽了物理地址,使每个进程在虚拟地址空间运行,造成每个进程感觉独占内存空间。
虚拟内存空间由如下组成:
一切皆文件,unix将所有I/O设备抽象成文件,使得应用程序可以使用统一的方式来处理各种I/O设备。
网络也可以视为一个I/O设备,数据从网络中来,telnet通过网络I/O进行远程通信。
抽象是计算机科学中最重要的概念,文件是对I/O设备的抽象,虚拟内存是对存储器的抽象,进程是对运行中程序的抽象,
虚拟机是对计算机的抽象。
转载地址:http://lxrr.baihongyu.com/