最新要闻
- 新疆昭苏野狼谷:纳凉赏景好地方
- Uzi无缘世界赛登热搜 花有重开日人无再少年
- 19.50万起 比亚迪海豹DM-i预扣提车价曝光:又要乱杀合资了
- 手机 智能表这十大救命功能要开启:不知道的快来学
- iPhone 13 Pro掉水里捞出还能正常使用 泡了40多分钟!
- 国产顶级豪华!新一代红旗L5样车下线:配4.0T V8大心脏
- 刚刚,武汉一高校郑重声明!
- 美涉台法案违宪?台湾关注后续进展,专家:折射美“府会之争”
- 雷军年度演讲定档8月14日:小米MIX Fold 3、Redmi K60至尊版要来了
- 李想放言“50万以上所有乘用车销量第一” !纯电MPV理想MEGA遭泄密
- 国内玩家可玩:《守望先锋2》Steam开启预载
- SSD硬盘还得降 SK海力士首发321层TLC闪存:核心容量翻倍
- 硬刚奥德赛 广汽传祺再推全新MPV 配2.0T混动发动机
- 武汉通报12号线兴业路站基坑渗漏水:已封堵
- 长三角国家高新区党建联盟第二次联席会议暨党建引领高水平科技自立自强研讨会召开
- 官方辟谣!“申请江西省社保卡可领取补贴”的信息不属实
手机
![顺络电子:董事长部分股权办理股票质押业务](http://www.viltd.com/uploadfile/2022/0610/20220610103218963.jpg)
顺络电子:董事长部分股权办理股票质押业务
![深圳7月二手住宅成交2259套,中介称近期咨询客户开始增加](http://www.viltd.com/uploadfile/2022/0610/20220610103218963.jpg)
深圳7月二手住宅成交2259套,中介称近期咨询客户开始增加
- 顺络电子:董事长部分股权办理股票质押业务
- 深圳7月二手住宅成交2259套,中介称近期咨询客户开始增加
- 最新洪水形势如何?时隔多年为何又见洪水?解答来了!
- 李明俊在调研白龟湖科创新城和环湖路建设工作时强调 勇于担当负责 善于创新突破 着力打造群众满意的放心工程
- 遮天:东荒两大家族登场,庞博成为妖王,妖族公主颜如玉绝美登场
- 京运通: 我司自扩产硅片业务以来,所有单晶炉均为自供
家电
csapp笔记——第一章计算机系统漫游
计算机系统漫游
前言
csapp可以说是每一个computerer必须学习的一本书,它讲的知识点并不太晦涩难懂,但是其包含的知识广度是难以想象的,在完成本书的学习后,对计算机系统的运行原理等的理解会上一个大的台阶,让我们进入这第一章的学习,对计算机的系统会有一个大概的了解。本书首先通过了一个c语言程序在运行要经过那些步骤引入了对于计算机系统的简要描述。
(资料图片)
这是一个简单的c语言程序
#includeint main(){ printf("hello, world\n"); return 0;}
1.信息就是位+上下文
在我们计算机系统中,大多都使用ASCII码来表示文本字符,那么ASCII码是什么呢?,用一个单字节大小的二进制整数表示的字符,我们将像hello.c一样由ascii码表示的文件称为文本文件,而其他的文件则称为二进制文件,hello.c的二进制ascii表示如下
我们可以看到,每一行的末尾都有\n,这是ASCII中的不可见字符,同时由这样的例子说明了一个基本思想∶系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。比如,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。
1.2程序在其他程序中被翻译成不同的格式
在一个c语言的程序被翻译成一个可执行文件的过程中一共经历了4个阶段,这是个阶段的统称就是编译系统(预处理器,编译器,汇编器,连接器)
我们来看运行hello.c这个文件的生命周期,首先我们通过预编译器变成了hello.i文件预处理器:预处理器(cpp)根据以字符 # 开头的命令,修改原始的 C 程序。比如 hello.c 中第 1 行的#include
命令告诉预处理器读取系统头文件 stdio.h 的内容,并把它直接插入程序文本中。结果就得到了另一个 C 程序,通常是以 .i 作为文件扩展名。然后经过编译器编译为汇编语言hello.s,汇编语言可以作为不同语言不同编译器的通用输出语言,然后通过汇编器将汇编语言翻译成晦涩难懂的二进制机器指令,最后和printf.o文件一起被连接器合并成为一个可执行文件
1.4处理器读并解释在内存中的指令
我们的hello.c被存放在内存中,我们要像运行它就必须在shell中运行该文件,该文件在被运行的过程中会被读取到cpu中,最后在通过相关的io总线输出在用户的显示屏中,我们首先要知道计算机的硬件构成:
1.cpu(处理器):中央处理单元(CPU),简称处理器,是解释(或执行)存储在主存中指令的引擎。处理器的核心是一个大小为一个字的存储设备(或寄存器),称为程序计数器(PC)。在任何时刻,PC 都指向主存中的某条机器语言指令(即含有该条指令的地址)
2.主存(内存):
3.i/o设备:
4.总线
一个典型系统的硬件组成CPU:中央处理单元;ALU:算术/逻辑单元;PC:程序计数器;USB:通用串行总线如图是一个hello程序的读取过程,先通过io的键盘输入hello,用户回车后程序知道了该命令结束了,(注意在shell中输入的如果不是内别指令,系统会将其当可执行文件处理)然后 shell 执行一系列指令来加载可执行的 hello 文件,这些指令将 hello 目标文件中的代码和数据从磁盘复制到主存。数据包括最终会被输出的字符串 “hello, world\n”。
1.5高速缓存的重要性
再我们的机械原理中我们知道了较大的存储设备要比较小的存储设备运行得慢,而快速设备的造价远高于同类的低速设备。比如说,一个典型系统上的磁盘驱动器可能比主存大 1000 倍,但是对处理器而言,从磁盘驱动器上读取一个字的时间开销要比从主存中读取的开销大 1000 万倍。而通过1.4的了解我们知道了一个指令再运行时候要经历很多的读写,如再读取hello指令是会将磁盘上的信息存入主存,而运行时又要将主存中的信息送入处理器,这是很麻烦又减慢了我们计算机程序的运行速度,这是我们的高速缓存存储器就出现了,它作为暂时的集结区域,存放处理器近期可能会需要的信息。这是一个高速缓存存储器的系统图
1.6储存设备形成层次结构
在处理器和一个较大较慢的设备(例如主存)之间插入一个更小更快的存储设备(例如高速缓存)的想法已经成为一个普遍的观念。实际上,每个计算机系统中的存储设备都被组织成了一个存储器层次结构,如图 所示。在这个层次结构中,从上至下,设备的访问速度越来越慢、容量越来越大,并且每字节的造价也越来越便宜。
该结构的基本理念是上层作为下层的高数缓存,这样就可以保证我们越长用的指令读取也就越快。
1.7操作系统管理硬件
在之前hello可执行文件的例子中,无论是shell还是hello都没有直接对硬件进行使用,而是通过中间的操作系统层级对硬件进行调用(依靠操作系统提供的服务)我们可以将操作系统看做硬件和软件层之间的一层软件,软件只能通过它调用硬件,操作系统有两个好处:
1.防止硬件被失控的软件胡乱调用;
2.提供简单一致的机制来使软件控制复杂且功能不同的低级硬件系统
操作系统通过3个抽象概念来实现这两个功能(进程,虚拟内存和文件)
1.71进程
进程是对操作系统中正在运行的程序的抽象,对于一个cpu来说执行进程是并发运行(交错运行),操作系统保持跟踪进程运行所需的所有状态信息。这种状态,也就是上下文,包括许多信息,比如 PC 和寄存器文件的当前值,以及主存的内容。,进程间通过操作系统内核(kernel)管理的。内核是操作系统代码常驻主存的部分。当应用程序需要操作系统的某些操作时,比如读写文件,它就执行一条特殊的系统调用(system call)指令,将控制权传递给内核。然后内核执行被请求的操作并返回应用程序。注意,内核不是一个独立的进程。相反,它是系统管理全部进程所用代码和数据结构的集合。
1.72线程
一个进程可以看着一个单一的控制流,多线程是运行进程中多个执行单元,他们有同样的上下文,代码,和全局数据,使得他们可以比进程更好的实现数据共享。
1.73虚拟内存
虚拟内存同样也是个抽象的概念,它使每个进程看起来都是独占主存空间,每个进程看到的主存都是一致的他们被称为虚拟地址空间,下图是Linux的虚拟地址空间
每个进程看到的虚拟地址空间由大量准确定义的区构成,每个区都有专门的功能。补充5
1.74文件
文件就是字节序列,Linux万物皆是文件,每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件。系统中的所有输入输出都是通过使用一小组称为 Unix I/O 的系统函数调用读写文件来实现的。
1.8系统间的网络通信
代系统经常通过网络和其他系统连接到一起。从一个单独的系统来看,网络可视为一个 I/O 设备,如图 1-14 所示。当系统从主存复制一串字节到网络适配器时,数据流经过网络到达另一台机器,而不是比如说到达本地磁盘驱动器。相似地,系统可以读取从其他机器发送来的数据,并把数据复制到自己的主存。
小结
计算机系统是由硬件和系统软件组成的,它们共同协作以运行应用程序。计算机内部的信息被表示为一组组的位,它们依据上下文有不同的解释方式。程序被其他程序翻译成不同的形式,开始时是 ASCII 文本,然后被编译器和链接器翻译成二进制可执行文件。处理器读取并解释存放在主存里的二进制指令。因为计算机花费了大量的时间在内存、I/O 设备和 CPU 寄存器之间复制数据,所以将系统中的存储设备划分成层次结构——CPU 寄存器在顶部,接着是多层的硬件高速缓存存储器、DRAM 主存和磁盘存储器。在层次模型中,位于更高层的存储设备比低层的存储设备要更快,单位比特造价也更高。层次结构中较高层次的存储设备可以作为较低层次设备的高速缓存。通过理解和运用这种存储层次结构的知识,程序员可以优化C程序的性能。操作系统内核是应用程序和硬件之间的媒介。它提供三个基本的抽象∶1)文件是对 I/O 设备的抽象;2)虚拟内存是对主存和磁盘的抽象;3)进程是处理器、主存和 I/O 设备的抽象。最后,网络提供了计算机系统之间通信的手段。从特殊系统的角度来看,网络就是一种 I/O 设备。补充
1.ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。
ASCII 由电报码发展而来。第一版标准发布于1963年 ,1967年经历了一次主要修订[5][6],最后一次更新则是在1986年,至今为止共定义了128个字符;其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。
2.上下文是从英文context翻译过来,指的是一种环境。相对于进程而言,就是进程执行时的环境;
具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。
3. 加快处理器的运行速度比加快主存的运行速度要容易和便宜得多。 针对这种处理器与主存之间的差异,系统设计者采用了更小更快的存储设备,称为高速缓存存储器(cache memory,简称为 cache 或高速缓存),作为暂时的集结区域,存放处理器近期可能会需要的信息。图 1-8 展示了一个典型系统中的高速缓存存储器。位于处理器芯片上的 L1 高速缓存的容量可以达到数万字节,访问速度几乎和访问寄存器文件一样快。一个容量为数十万到数百万字节的更大的 L2 高速缓存通过一条特殊的总线连接到处理器。进程访问 L2 高速缓存的时间要比访问 L1 高速缓存的时间长 5 倍,但是这仍然比访问主存的时间快 5~10 倍。L1 和 L2 高速缓存是用一种叫做静态随机访问存储器(SRAM)的硬件技术实现的。比较新的、处理能力更强大的系统甚至有三级高速缓存∶L1、L2 和 L3。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局部性原理,即程序具有访问局部区域里的数据和代码的趋势。通过让高速缓存里存放可能经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成。
4.进程是操作系统对一个正在运行的程序的一种抽象。在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件。而并发运行,则是说一个进程的指令和另一个进程的指令是交错执行的。在大多数系统中,需要运行的进程数是多于可以运行它们的 CPU 个数的。传统系统在一个时刻只能执行一个程序,而先进的多核处理器同时能够执行多个程序。无论是在单核还是多核系统中,一个 CPU 看上去都像是在并发地执行多个进程,这是通过处理器在进程间切换来实现的。操作系统实现这种交错执行的机制称为上下文切换。为了简化讨论,我们只考虑包含一个 CPU 的单处理器系统的情况。我们会在 1.9.2 节中讨论多处理器系统。
5.
程序代码和数据。对所有的进程来说,代码是从同一固定地址开始,紧接着的是和 C 全局变量相对应的数据位置。代码和数据区是直接按照可执行目标文件的内容初始化的,在示例中就是可执行文件 hello。在第 7 章我们研究链接和加载时,你会学习更多有关地址空间的内容。
堆。代码和数据区后紧随着的是运行时堆。代码和数据区在进程一开始运行时就被指定了大小,与此不同,当调用像 malloc 和 free 这样的 C 标准库函数时,堆可以在运行时动态地扩展和收缩。在第 9 章学习管理虚拟内存时,我们将更详细地研究堆。
共享库。大约在地址空间的中间部分是一块用来存放像 C 标准库和数学库这样的共享库的代码和数据的区域。共享库的概念非常强大,也相当难懂。在第 7 章介绍动态链接时,将学习共享库是如何工作的。
栈。位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。特别地,每次我们调用一个函数时,栈就会增长;从一个函数返回时,栈就会收缩。在第 3 章中将学习编译器是如何使用栈的。
内核虚拟内存。地址空间顶部的区域是为内核保留的。不允许应用程序读写这个区域的内容或者直接调用内核代码定义的函数。相反,它们必须调用内核来执行这些操作。
关键词:
-
-
-
-
csapp笔记——第一章计算机系统漫游
四年供应房源超1.5万套 上海城投宽庭计划年内发行保租房公募REITs产品
新疆昭苏野狼谷:纳凉赏景好地方
Uzi无缘世界赛登热搜 花有重开日人无再少年
19.50万起 比亚迪海豹DM-i预扣提车价曝光:又要乱杀合资了
手机 智能表这十大救命功能要开启:不知道的快来学
iPhone 13 Pro掉水里捞出还能正常使用 泡了40多分钟!
国产顶级豪华!新一代红旗L5样车下线:配4.0T V8大心脏
刚刚,武汉一高校郑重声明!
山东布谷科技直播程序源码使用Redis进行服务器横向扩展
美涉台法案违宪?台湾关注后续进展,专家:折射美“府会之争”
北大团队确认:韩国团队的LK-99不是室温超导体!美国研究人员:是劣质材料,电阻非常高
雷军年度演讲定档8月14日:小米MIX Fold 3、Redmi K60至尊版要来了
李想放言“50万以上所有乘用车销量第一” !纯电MPV理想MEGA遭泄密
国内玩家可玩:《守望先锋2》Steam开启预载
SSD硬盘还得降 SK海力士首发321层TLC闪存:核心容量翻倍
硬刚奥德赛 广汽传祺再推全新MPV 配2.0T混动发动机
武汉通报12号线兴业路站基坑渗漏水:已封堵
长三角国家高新区党建联盟第二次联席会议暨党建引领高水平科技自立自强研讨会召开
官方辟谣!“申请江西省社保卡可领取补贴”的信息不属实
巴西男孩在石灰粉堆玩耍中毒身亡 还竖大拇指拍照留念:网友唏嘘
固态硬盘怎么选? 一篇搞定!千元左右国产4TB直接入
价格屠夫!联想小新Pad Pro 12.7今晚首销:1599给骁龙870+12.7大屏
奇瑞瑞虎8新车上市 油电同价竞争“冠军” 售12.69万起
LK-99超导“神话”破灭!中美团队均否认其超导性
死亡笔记日剧(关于死亡笔记日剧的基本详情介绍)
“城管蓝”守护包头“烟火气”
苹果确认用USB-C 但限速!iPhone 15设计图/零部件齐曝光:这些细节确认
一加Ace 2 Pro首次支持UFCS融合快充协议:快充不挑充电器
Steam Deck仍是最佳掌机?
选读SQL经典实例笔记20_Oracle语法示例
杂题选做二
北京火锅有哪些品牌(北京火锅)
首个全产业链标准体系建设指南出台 助力万亿元级氢能产业“加速跑”
李想超自信!理想汽车明年挑战BBA有信心:努力成为销量第一豪华品牌
腾讯老牌音乐手游《节奏大师》今日不删档测试!安卓、iOS都能玩
迎接第八涨!今日起国内油价四连涨几无悬念 加一箱油将多花8元
安卓唯一性能小平板!联想拯救者Y700二代今晚首销:2399元起
Crash 的文明世界 & JZPTREE & TREESUM 题解
穆迪昨日下调美国10家中小型银行的评级,表明对美国银行业健康状况的担忧浮出水面,市场对此感到不安,美元录得近0.5%的涨幅
女子2百多网购却被花呗扣款3千多?花呗深夜回应:确认是主动消费
必须支持?鸿蒙系统不兼容安卓应用:华为在下一盘大棋
二次规划问题和常见求解框架
8月8日基金净值:国联安中证半导体ETF最新净值0.8763,跌0.49%
雷军换上小米MIX Fold 3:上一台手机是Redmi K60至尊版
《仙剑世界》最新实机PV公布:高清技术重构仙剑经典场景
2009年的B站镇站之宝:14年过去 依旧让全世界上头
《德州电锯杀人狂》化身游戏:NVIDIA DLSS带来性能飙升
突破性进展!这座岛即将加入全国铁路网
unhealthy用英语怎么说 unhealthy
今晚,闭幕!这些亮点为你揭秘!
MySQL流程控制语句
小米平板6卖疯了:2023年Q2小米平板出货量逆势增长41.6%
2799元真香!锐龙7迷你电脑竟比充电头还小巧:难以想象
7月中国销量最高车型出炉:前两名都是比亚迪 前7占5席
兴业证券:全球产业链正在发生哪些变化?
Go 变量
使用appuploader工具流程(Windows版本)
1600吨风电安装平台交付:核心设备100%国产
毕业季助推二季度长沙租赁市场热度,2000元/月以下房源关注度较高
CodeForces CF1846G 题解
辽宁省地质勘探矿业集团总经理王福亮被查
第三方Apple Watch充电要快起来了!苹果将强制换用快充模块
曝特斯拉开始给上海工厂员工上调工资 马斯克曾称国内工人配得起上万月薪
技嘉发布半高式刀卡RTX 4060:残暴三风扇、ITX机箱装不下
yum update更新报错 Transaction Check Error 解决方法
仪器仪表驱动安装及注意事项以Keithley 2600为例
就仁爱礁有关问题,国防部回应
《博德之门3》暂无DLC计划:怕做不好 要对玩家负责
3999元 宏碁新款非凡Go青春版笔记本开卖:12核i5+铝合金机身
还能愉快授权吗?Arm将上市:英伟达苹果英特尔等巨头联手承包
观众看电影《孤注一掷》中途退票 影院回应
“理想有的我也有”小鹏X9尺寸曝光 全尺寸SUV正在开发
韩国举办世界童子军大会状况百出,参会者提前撤离
虚拟现实时代:虚拟世界的前景与挑战
11999元 联想ThinkBook Plus Twist笔记本上架:双屏翻转设计
伊利官方旗舰店大促:纯牛奶65元2箱 比商超便宜38元
苹果iPad销量逆势增长 哪家安卓平板厂商可绝地反击?
新晋品牌邮氧的茶引热议!网友:中国邮政是懂奶茶取名的
毛利率21.8%超特斯拉 理想公布第二季度财报:日均进账1个亿
上海7月二手房交易量1.26万套环比持平 月末小幅翘尾
CoinBase是什么?
万人说新疆|方寸之间铸匠心
传蔚来汽车销售月薪最高41万 BBA销售坐不住了:哪里有新店?
7499元 极米H6 Pro 4K投影仪发布:1920 CCB超高亮度
RTX 4060 Ti 16GB大显存很有用!最多提升113%
小米13 Ultra DXO屏幕得分130分 无频闪 较前代有提升
募资212亿 芯片巨头回A上市 次日就破发!A股股价是港股2倍?公司回应
Midjourney API 申请和接入小白教程
广西构建涉外民商事纠纷联动解决机制 营造良好营商环境
【财经分析】隐债置换预期利好城投表现 下沉行情中切忌忽视风险
又一品牌加入换电行列 广汽埃安昊铂将于2025年建成500座换电站
维修免人工费 微星推出“抗洪度险”服务:6大地区可用
深圳:借力会展打造产业发展活力场
成功搞定H7-TOO的FreeRTOS Trace图形化链表方式展示任务管理
OpenAI承认存在真实机器人 1/3用户被欺骗
收评:两市缩量收低沪指跌0.25% 券商与地产行业明显调整
上海五部门联合发布实施细则:加大对药品领域违法犯罪行为的打击力度
首发MagicOS 7.2 荣耀MagicBook X Pro锐龙版发布:到手4199元起
写代码还得靠自己!ChatGPT回答编程问题错误率超50%