CSAPP 计算机漫游

本文探讨了计算机硬件组织,包括内存、总线和输入输出设备的作用,以及操作系统如何作为硬件接口。深入解析了C语言虚拟内存分布和程序运行过程,涉及hello程序的编译、加载和执行,以及上下文切换、加速理论和操作系统层面的进程管理。
摘要由CSDN通过智能技术生成

计算机硬件组织

在这里插入图片描述

PC:存放下一条指令的地址(地址大小为一个字)
内存:存放指令和数据
总线上的一次传输的数据大小与数据总线的条数有关(一般为一个字)
输入输出设备:输入输出设备通过适配器或者控制器与IO总线间传递数据

操作系统

操作系统:软硬件的接口
目的:1.防止对硬件设备的不安全修改或者接触
2.提供统一的机制应用硬件

操作系统的三个抽象机制
———————————————————————
在这里插入图片描述
C语言的虚拟内存分布
在这里插入图片描述

可执行文件hello的运行过程

可执行文件hello主要是输出hello world的功能

1.hello.c 变为可执行文件hello的过程

预编译—>编译—>汇编—>链接

2.硬件层面的运行

1.输入【./hello】,shell将输入字符串读入寄存器,处理器会把hello这个字符放入内存
2.按下回车键,从内存找到hello.c,经过一系列指令把hello.c变为hello,之后加载可执行文件hello
包括1,2

3.将在内存的hello的数据和代码从磁盘复制到内存【此处复制用的是DMA技术】
在这里插入图片描述

4.处理器依次执行main函数代码,取出内存的数据【hello world】到寄存器,然后通过I/O总线输出到I/O设备
在这里插入图片描述

3.操作系统层面的运行

在这里插入图片描述
如图:总共两个进程(可以理解为运行中的程序)
【shell和hello】

  1. 当通过shell执行hello程序,会先进行shell进程到hello进程的上下文切换

切换:【通过系统调用,且产生了用户态到核心态的转换】
上下文切换:【上下文指的是进程的寄存器状态,存储【页表】等】
2.当hello进程执行完毕之后,会再进行一次hello进程到shell进程的上下文切换

加速理论

1.阿姆达定理

在这里插入图片描述

此处α表示可加速的部分占整体任务的比重,k表示加速后的加速比例
S表示加速比

2. 加速方法

  1. 多线程【线程切换只需要切换寄存器和栈】

  2. 流水线执行【把指令划分为不同部件执行的指令,那么同一个部件可以执行多次指令】
    在这里插入图片描述

  3. 单指令多数据【允许一条指令多个并行操作,由硬件支持】(适用于音视频的传输)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值