计算机系统漫游
文章目录
1. hello world程序在计算机中的执行过程
有C程序:
#include<stdio.h>
int main()
{
printf("hello world");
return 0;
}
1.1 hello world 程序解释成机器可读程序的过程
预处理过程将头文件相关内容编译进hello world 程序文件,而后编译器将这个预处理后的文件生成汇编语言程序,汇编器将汇编语言程序解释成机器文件(二进制)供机器读取,最终链接器将printf函数链接进入形成最终的可执行文件
1.2 hello world目标程序在机器中的执行过程
-
调用powershell程序,准备执行目标程序文件
-
加载hello world 程序
-
回车执行-----这个过程在计算机内产生了一系列交互过程
a.
首先shell程序看成进程A,加载hello world程序后,系统进程切换到hello程序,进行hello程序执行b. 我们输入hello_world程序后,shell将字符逐个读入寄存器,在将其放入到内存中
c. 当我们在键盘上按下回车键时,shell程序知道我们已经结束程序的命令输入,shell执行指令,将hello程序的代码和数据从磁盘复制到主存(数据包括最终被输出到屏幕的hello world)
d. 一旦目标文件hello中的代码和数据被加载到主存,处理器开始执行hello程序的main程序中的机器语言指令(这些指令将“hello world”字符串中的字节从主存复制到寄存器文件,再从寄存器文件中复制输出到显示设备 -
屏幕上得到 hello world
如上完成一次程序执行
2. 关键概念
- 主存主要用来存储数据和程序
- 处理器包括
寄存器PC
、寄存器文件
和逻辑单元ALC
- I/O设备主要包括键盘、鼠标、显示器和磁盘
- 进程是cpu、主存、I/O设备的抽象
- 线程是一个进程的组成单元
- 内核是操作系统代码常驻主存的部分,它是系统管理全部进程所用代码和数据结构的集合
- 并发指一个同时具有多个活动的系统
- 并行指用并发来来使一个系统运行的更快
3. 关于提高程序运行速度
3.1 添加缓存方法
给cpu添加一个缓存,让待执行的程序所需要的内容临时存放在这里,可以减少因为程序存放主存中调用的过程,从而减少程序运行时间
高级别存储设备(L0最高)可以缓存低级别设备内容,而高级别缓存可以加快程序运行的速度
3.2 Amdahl 定律
若系统执行某应用程序需要时间为Told。假设系统某部分所需执行时间与该时间的比例为α,而该部分系统所提升的比例为k。即该部分初始所用时间为αTold,现在所需时间为(αTold)/k。因此总执行时间
Tnew=(1-α)Told+a*Told/k
得到加速比S
S=1/((1-α)+α/k)
结论
- 虽然我们对系统的一个部分做出了很大改进,但是获得的整个系统加速却明显小于这部分的加速比
- 当某部分提升比例k趋近无穷大,得到
其它
- 系统中的总线是一组组的电子管道,用来传输定长的字节块,传送4个字节的是32位操作系统,8个字节的是64位操作系统
1个字节=8个比特
-
操作系统用来管理硬件并避免其它程序滥用cpu
-
操作系统通过三个抽象(下图)实现点2的功能
-
系统与系统之间通过网络适配器来进行通信
实际上可以将网络适配器看成是一个特殊的I/O设备
- 文件是I/O设备的抽象、虚拟内存是主存和I/O设备的抽象、进程是处理器、主存、I/O设备的抽象,而虚拟机是整个操作系统的抽象
上一篇: 饿了么大数据平台建设
下一篇: 接入饿了么开放平台