基础概念:计算机系统 = 硬件+软件系统

C语言代码编译过程

hello.c –(预处理器)> hello.i- -(编译器)>hello.s –(汇编器)> hello.o –(链接器)> 可执行程序

  • hello.c --> hello.i:预处理器将 #include 里的内容直接插入程序文本
  • hello.i --> hello.s:编译器将hello.i的内容处理成汇编语言
  • hello.s --> hello.o:汇编器将汇编语言处理成机器代码(二进制)
  • hello.o --> hello:链接器将库函数里已经编译好的函数(比如printf)可执行文件代码合并到hello.o中

计算机主要硬件组成

  • 总线:在个部件之间传递信息。总是传送定长的字节块(字 word)。机器字长(字中字节的个数)一般为32位(4字节)或者64位(8字节)
  • I/O设备:一般鼠标、键盘、显示器、磁盘。每个I/O设备都有I/O控制器或者I/O适配器与I/O总线相连。I/O控制器一般为主板上的芯片,I/O适配器为插在主板上的卡。
  • 主存:临时1存储设备,用于在程序运行时存储程序和相关数据。由一组DRAM构成
  • 处理器:由寄存器(容量一个字)、程序计数器(CP)、算术逻辑单元(ALU)组成。CP指向主存中某一条机器语言指令的位置(其内存地址)。
  • 高速缓存(cache memory):一般存在三级缓存L1、L2、L3。存在于cpu和主存之间

操作系统管理硬件

基本功能:防止硬件被滥用、向应用程序提供简单机制控制硬件

三大抽象概念

  • 文件:对I/O设备(包括磁盘)的抽象
  • 虚拟内存:对主存和磁盘I/O设备的抽象
  • 进程:对处理器、主存、I/O设备的抽象

进程

进程:操作系统对正在运行的程序的一种抽象。

并发运行:一个进程和另一个进程的指令教程交错执行。

线程:一个进程由多个线程组成,线程共享相同的代码和全局数据。

虚拟内存:操作系统将每个进程的内存地址看作一致的,称为虚拟地址空间。

虚拟内存结构(由低到高)

  • 程序代码和数据区(大小固定)
  • 堆(heap):堆的容量可以动态变化
  • 共享库:用于存放类似C标准库、数学库等
  • 栈(stack):用于函数调用,其容量可以动态的变化
  • 内核虚拟内存:由内核调用,不允许其它程序调用或者读写数据

文件

文件就是字节序列,网络也可以看作文件。

Amdahl 定律

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

S = 1/[ (1-a) + a/k ]

  • S:加速比 T 原/ T现
  • a:该部分运行所占时间比例
  • k:该部分性能提升比例

并行&并发

并发(concurrency):一个系统同时具有多个活动

并行(parallelism):使用并行来使一个系统运行更快

线程级并发

即多个程序同时运行,这是通过在不同进程间快速切换来模拟。

多核处理器:每个核(CPU)有自己的寄存器、L1、L2缓存共用L3缓存。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注