第一章:计算机系
目录
统漫游
1.程序翻译:
程序翻译 (编译系统)= 预处理(将以字符#开头的命令,直接插入程序文本)
+ 编译(形成汇编语言)
+ 汇编 (将汇编语言翻译成机器语言指令,并编码成固定格式)
+ 链接(将多个文件以某种方式进行合并,并加载到内存,可以由系统执行)
2.系统硬件
系统硬件 = 总线(各个部件间传递以“字节”为单位的信息)
+ I/O设备(系统与外界的联系通道)
+ 主存(临时存储设备,由动态随机存取存储器DRAM寻片组成,用来存放程序和程序处理的数据)
+ 处理器(CPU,核心为一个“字”大小的存储设备,即程序计数器PC)
3.简述exe的系统流程
初始化 :用户输入“./hello”(执行hello.exe),shell程序将字符读入寄存器,并存放在内存中;
数据加载 :shell加载执行hello文件,将hello目标文件中的代码和数据从磁盘复制到主存中(采用DMA技术--直接存储器存取,即数据直接从磁盘到达主存,而不经过处理器)
程序运行 :处理器执行main程序的机器语言指令,将结果“hello, world\n”字符串从主存复制到寄存器文件,再从寄存器文件复制到显示设备。
4.cache,存在即合理
cache,高速缓冲存储器,存放处理器近期可能需要的信息。
系统一般包含三级高速缓冲:L1(以位于处理器芯片的为例,容量可以达到数万字节,速度与访问寄存器文件一样快),
L2(以特殊总线连接到处理器,容量为数十万到百万字节,访问时长比L1长5倍),
L3。
5.what is 操作系统
操作系统,换一种角度说,链接了软件和硬件,具有两个基本功能:
(1)防止硬件被失控的应用程序滥用;
(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。
上图为“操作系统抽象表示”,其中
进程:操作系统对正在运行的程序的一种抽象,线程类似于进程的子单元;
虚拟内存:是一种抽象的概念,后续会有所具体介绍。
如上图所示(进程的虚拟地址空间),每个进程看到的虚拟地址空间由大量准确定义的区构成,其中包括:
程序代码和数据:首先是代码、其次是数据;
堆: 主要是malloc、free函数动态地扩展和收缩区域;
共享库:存放C标准库以及数学库等;
栈:位于用户虚拟地址空间顶部,编译器用来实现函数调用;
内核虚拟内存:地址空间顶部的区域是为内核保留的,不允许应用程序读写该区域内容或直接调用内核代码定义的函数。
上述博文的主要参考书目是“深度理解计算机系统”,图片也为该书原图,本人只是作简单总结,便于小伙伴们学习!!!