欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算机系统漫游

程序员文章站 2023-12-31 14:57:28
...

CSAPP 1.计算机系统漫游

个人博客,想要搭建个人博客的可以进来看看: http://www.ioqian.top/

1.信息就是 (位+上下文)

#-------> hello.c
#include<stdio.h>
int mian(){
    printf("hello , world\n");
    return 0;
}
/*   这个源程序实际上由0和1组成的序列,每8位为一组,称为字节
 *   每个字节表示程序中的某个文本字符,现在用ASCII码来表示文本字符,就是用一个唯一的单字节大小整数值来表示1个字符
 *  有ASCII字符组成的字符称为文本字符,其他的文件称为二进制文件 
 */

hello.c说明了一个基本思想,系统中的所有信息(包括磁盘文件,程序,用户数据及网络上的数据)都是由一串位表示的,区分这些数字对象的唯一方法就是我们读到这些对象的上下文。在不同的上下文中,一个相同的字节可能表示一个整数或者浮点数或字符串等

2.gcc hello.c -o hello

计算机系统漫游

  • 预处理 预处理器cpp把宏定义展开,得到了另一个源程序 *.c—->*.i
  • 编译 编译器ccl编译成汇编程序,汇编程序是通用的输出语言(fortra和c都生成相同的.s) *.i—>*.S
  • 汇编器 as汇编器生成可重定位二进制程序, *.s—->*.o
  • 链接生成可执行文件

3.处理器读取并解释存储在存储器中的指令

linux中的shell是一个外壳,等待输入命令然后执行,执行完毕后输出一个提示符等待下一个命令

DMA,不需要处理器直接把数据从硬盘拷贝到主存

3.1总线

负责携带信息在各个部件之间传递,通过总线被设计成定长的字节块,也就是字,字长有4个字节或者8个字节就是32位或64位

3.2I/O设备

3.3主存

在处理器执行程序中,存储程序的代码和数据,主存是由一组动态随机存取存储器(DRAM)芯片组成

3.4处理器

解释或执行存储在指令中的引擎,核心是一个字长的存储设备(程序计数器,PC)任何时候,PC都指向主存中某条指令的存储地址

4.存储设备结构

计算机系统漫游

  • L1的访问速度可以达到和寄存器一样快
  • SRAM (static random access memory), 静态随机访问存储器
  • 高效缓存的数据时从下一级缓存获取的

5.操作系统管理硬件

文件是I/O设备的抽象表示

虚拟存储器是对主存和磁盘I/O的抽象表示

进程则是对处理器,主存和I/o设备的抽象表示

5.1进程

进程是操作系统对一个正在运行的程序的一种抽象,一个cpu可以并发的执行多个进程,操作系统实现这种交错执行的机制称为上下文切换

5.2虚拟存储器

虚拟存储器是一个抽象的感念,他问每一个进程提供一个假象,每个进程好像独占主存,每个进程看到的是一致的存储器,称为虚拟地址空间。

计算机系统漫游

  • 栈区—由编译器自动分配释放,存放函数形参,局部变量和自动变量
  • 堆区—用于分配由malloc、realloc、calloc分配的空间
  • 数据区—该区又分为bss段,rodata段和data段:
  • bss段—保存未初始化或者初始化为0的全局变量
  • rodata段—用于保存常量
  • data段(静态数据区)—保存初始化不为0的全局变量或者static修饰的变量
  • 代码区—存放函数体的二进制代码

5.3文件就是字节序列,每个I/o设备都可以视为文件

6总结

计算机系统漫游

  • linux下全部都是文件体现了文件是I/O设备的抽象
  • 虚拟内存是主存和I/O的抽象
  • 进程是处理器,主存,I/o设备的抽象
  • 虚拟机是操作系统,处理器,主存,I/O的抽象
相关标签: CSAPP

上一篇:

下一篇: