第一章 计算机系统漫游

系统是硬件和系统软件相互交织的集合体,必须共同协作以达到运行应用程序的最终目的

程序简介

cpp 复制代码
// hello-world.cpp
#include<stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}

源程序是由0 / 1组成的位序列,1称为1比特,8位为一字节

ASCII码表示文本字符,每个字符用唯一的单字符大小的整数值表示

  • 文本文件:只由ASCII字符构成的文件
  • 其他为二进制文件

程序生命周期

高级c程序------低级机器语言指令(打包为可执行目标程序)

bash 复制代码
# 一条龙命令
gcc hello.c -o hello
输入后缀 生成后缀 命令 类型转换
.c .i gcc -E test.c -o test.i 预处理器cpp 文本------>文本
.i .s 汇编代码 gcc -S test.i -o test.s 编译器ccl 文本------>文本
.s .o obj文件 gcc -c test.s -o test.o 汇编器as 文本------>二进制
.o 可执行目标程序 gcc test.o -o test 链接器ld 二进制------>二进制
.c 可执行目标程序 (含调试信息) 默认名a.out gcc -g test.c 生成含调试信息的可执行文件

预处理

编译

汇编

链接

GNU项目(现代开放源码运动 ---- free software)是一个免税的慈善项目,目标为开发一个完整的类Unix操作系统;GNU环境包括EMACS编辑器、GCC编译器、GDB调试器、汇编器、链接器等工具,GCC编译器发展到可以支持多种不同的语言;Linux内核由Linux项目独立发展而来

编译系统

不同C 语言 翻译为 机器语言的形式不同,优化程序性能

系统硬件组成

  • 总线 :贯穿系统的一组电子管道,传送定长的字节块(字word),字长一般为4字节32位 / 8字节64位
  • I/O设备 :系统与外部的联系通道,键盘、鼠标、显示器、用于存储的磁盘驱动器等;每个I/O设备通过控制器(主板芯片组)或适配器(插在主板插槽上的卡)I/O总线相连
  • 主存 :由一组动态随机存取存储器(DRAM)芯片组成,临时存储程序和数据的设备;类比于线性字节数组,每个字节都有唯一的索引地址(从0开始)
  • 处理器 : 中央处理单元CPU,解释存储在主存中指令的引擎;核心程序计数器PC、大小为一个字的寄存器,指向主存中下一条机器指令;CPU从PC指向的内存处读取指令,解释指令,执行操作,再更新PC,指向下一条指令

高速缓存

磁盘------主存------CPU 程序执行------显示器

读取速度:寄存器>主存>磁盘

高速缓存存储器cache memory

存放经常访问的数据,处理大部分的内存操作:用静态随机访问存储器SRAM硬件技术实现

存储器层次

操作系统

管理硬件

  • 防止硬件被失控的应用程序滥用
  • 向应用程序提供简单一致的机制来控制复杂、大不相同的低级硬件设备

提供三个基本的抽象进程、虚拟内存、文件

进程

多个指令交错执行,上下文切换=>单处理器(单核)系统;内核是系统管理全部进程所用代码和数据结构的集合

一个进程由多个线程组成,每个线程都运行在进程上下文中,共享同样的代码和全局数据=>更高效的多线程编程模型

虚拟内存

一个进程=>一个虚拟地址空间(由大量标准定义且功能不同的区构成);进程虚拟内存的内容存储在磁盘上,用主存作为磁盘的高速缓存;地址从下往上增大

堆、用户栈:动态地扩展和收缩;编译器用实现函数调用,调用=>栈增长,返回=>栈收缩

文件

字节序列;所有输入输出都通过系统函数Unix I/O调用 读写文件来实现;每个I/O设备(磁盘、键盘、显示器、网络)都可以看成文件

系统间网络通信

系统从主存复制一串字节到网络适配器,数据流经过网络到达另一台机器


Amdahl定律

加速系统某部分对整体性能的影响取决于该部分的重要性和加速程度

要想显著加速整个系统,必须提升全系统中相当大部分的速度;k取极大值(某部分性能提升极致)时,S=1/(1-a)代表部分的系统占比

并发和并行

线程级并发

单处理器系统:多个进程间快速切换=>模拟并发(耗时较多)

多处理器系统:至少含有两个处理器的计算机系统

  • 多核处理器:多个CPU(处理器/核)集成到一张集成电路芯片
  • 超线程(同时多线程):允许一个CPU执行多个控制流

指令级并行

较低的抽象层次

流水线pipelining:划分一条指令执行活动为不同的步骤,每个阶段执行一个步骤,阶段可以并行操作,用来处理不同指令的不同部分

超标量(super-scalar)处理器:执行效率 > 一个时钟周期一条指令

单指令、多数据并行

SIMD并行 单指令、多数据

最低抽象层次,处理器的特殊硬件,允许一个指令产生多个可以并发执行的操作 => 提高处理影像、声音和视频数据应用的执行速度

编译器支持的 特殊的向量数据类型 编写程序也可做到SIMD并行性

抽象

抽象概念 原型
文件 I/O设备
虚拟内存 程序存储器
进程 正在运行的程序
虚拟机 整个计算机,包括操作系统、处理器和程序
相关推荐
启山智软6 小时前
B2B2C商城用户友好界面设计思路
java·开发语言·网络·安全·系统安全
送南阳马生序7 小时前
新电脑 Windows 系统初始配置
操作系统
低调包含17 小时前
面试(十)
c语言·面试·操作系统·嵌入式
七杯柠檬茶17 小时前
FreeRTOS学习笔记内置部分公司面试题目(更新中)
笔记·stm32·单片机·学习·操作系统·嵌入式·freertos
醉颜凉2 天前
银河麒麟服务器操作系统中查询服务器主板型号
运维·操作系统·国产化·kylin os·银河麒麟桌面操作系统
Ray Wang2 天前
0.计网和操作系统
计算机网络·操作系统·常见八股
小小工匠3 天前
系统安全 - Linux /Docker 安全模型及实践
linux·安全·系统安全
_小猪沉塘3 天前
L11&12&13 【哈工大_操作系统】内核级线程&内核级线程实现&操作系统之“树”
操作系统
醉颜凉3 天前
银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证
运维·安全·操作系统·国产化·麒麟·kylin os·安全授权认证