计算机系统漫游

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

gcc

  • 预处理 预处理器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的抽象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值