深入理解计算机系统阅读1
深入理解计算机系统阅读
14:50
1 计算系统中所有的信息都是由比特来表示
计算系统中所有的信息都是由比特来表示。区分这些数据对象的唯一方法是我们读到这些数据的上下文。在不同的上下文中,同样的字节可以表示为字符串,整数,机器指令。
2 hello.c 字符文本-->机器指令-->打包成exe可执行目标文件
Hello.i
优化被
修改的
文本
Hello.s
汇编文本
链接 Print.o
Hello.c
文本
预处理器
cpp
编译器
ccl
链接器
ld
hello
汇编器
as
Hello.o
可重定位
的目标程序
二进制
可执行的目标程序
寄存器
L0
高速缓存
L1
高速缓存
L2
主存储器DRAM
本地磁盘
分布式文件系统 web服务器
3层架构
应用
操作系统
处理器 内存 io设备
2操作系统有两个基本作用
防止应用滥用硬件
向应用提供简单一致的操作方法
操作系统通过抽象的概念来实现这些
如文件是对io设备的抽象表示
虚拟存储器是对主存和磁盘i/o设备的抽象表示
进程是对处理器主存i/o设备的抽象表示
3什么是进程
像 hello 这样的程序在系统上运行时,系统会提供一种假象,就好像系统上只有
这个程序在运行,看上去只有这个程序在使用处理器、主存和 I/O 设备。处理器看上去就像在不
间断地一条接一条地执行程序中的指令,即该程序的代码和数据是系统存储器中唯一的对象。这些假象是通过进程的概念来实现的
4什么上下文
CPU 看上去都像是在并发地执行多个进程,这是通过处理器在进程间切
换来实现的。操作系统实现这种交错执行的机制称为上下文切换
操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文
它包括许多信息,例如 PC 和寄存器文件的当前值,以及主存的内容。在任何一个时刻,单处理器系统都只能执行一个进程的代码。
Hello.exe
shell
操作系统负责保存并切换上下文
等hello.exe执行完毕操作系统切换回shell进程
5什么是线程
进程是最小的资源单位
线程是最小的执行单位
一个进程实际上可以由
多个称为线程的执行单元组成
每个线程都运行在进程的上下文中,
并共享同样的代码和全局数据
6虚拟存储器
虚拟存储器是一个抽象概念,它为每个进程提供了一个假象,即每个进程都在独占地使用主
存,每个进程看到的是一致的存储器,称为虚拟地址空间
虚拟地址空间
内核虚拟存储器
用户栈
运行时创建
共享库的存储器映射区
运行堆区
malloc创建数据
读写数据
只读代码和数据
hello程序加载