《深入理解计算机系统》开篇 小道研究 • 2024年4月12日 下午3:57 • 网站运维 当我开始阅读《深入理解计算机系统》时,我意识到可能有些晚,但我知道现在就是最好的时候。相较于之前读的《JavaScript语言精髓与编程实践》,这本书的文字更加舒适、更耐读。 不过我没有放弃《JavaScript语言精髓与编程实践》,因为书中包含了很多深度的内容等待我去探索,但我现在想先放松一下,读一下《深入理解计算机系统》来缓冲一下大脑。 书在写什么 我们致力于搞懂写一个 Hello 的程序,我们通过跟踪 hello 程序的生命周期,从它的创建、运行、输出消息到终止,来学习在系统上执行程序时发生了什么以及为什么会这样。 程序的生命周期始于一个源文件 hello.c,这是我们通过编辑器保存的文本文件,实际上是由 0 和 1 组成的位序列,每 8 个位组成一组,被称为「字节」,每个字节表示程序中的某些文本字符。 程序如何被机器读懂 当我们写一段程序时,这段程序会如何在计算机上执行呢? 我们需要将每一条写过的语句转换成一系列低级的机器语言指令,就是转成 0、1 这样的文本文件。然后这些指令打包成二进制文件,然后存储到磁盘,这样就变成了可执行文件。 这个流程就是编译系统,它由四个阶段组成:预处理阶段、扫描阶段、汇编阶段和链接阶段。 预处理阶段会修改原始程序,将所有的宏定义展开,将所有引用的文件插入到程序文本中。 扫描阶段将文本文件翻译成另一种文本文件,也就是翻译成汇编语言。 汇编阶段将汇编语言翻译成机器语言,如果我们用编辑器打开可执行文件,会看到一堆乱码。 连接阶段将可执行文件加载到内存中,由系统执行。 高速缓存器 大容量存储设备的运行速度相对较慢,而小容量、高速设备的价格却高于同类低速设备。 例如,磁盘驱动器的价格可能是存储器的 1000 倍,但对于处理器而言,从磁盘驱动器读取一个字所需时间开销比从存储器中读取要大 10,000,000 倍。 为了解决处理器与存储器之间的差异,系统设计者采用了高速缓存存储器(cache memory)来存放可能需要的信息。 当前端请求后端文件后,文件被缓存到 cache memory 中,所以我们再次访问文件会提示文件来源于 cache memory 中,而我们需要访问的文件存储在 cache memory 中,访问速度也大大加快了。 存储设备层次结构 计算机系统中的存储设备被组织成了一个存储层次结构。从上到下,设备的访问速度越来越慢,容量越来越大,并且每个字节的造价也会越来越便宜。 这个层次结构以金字塔的形式展现,最上面是 CPU 寄存器,最下面是磁盘二级存储设备。 L0 寄存器属于CPU内部的高速缓存,速度非常快,容量也非常有限,但是造价很高。L1、L2 高速缓存的速度比主存快得多,但是容量也比主存小很多,造价也比主存高。主存的速度比磁盘等二级存储设备快得多,但是容量比高速缓存小很多,造价也比高速缓存高。本地磁盘存储的容量比主存大很多,但是速度比主存慢得多,造价也比主存低。远程二级存储的容量比本地磁盘存储更大,但是速度更慢,造价也更低。存储层次结构的主要思想是上一层的存储器作为下一层存储器的高速缓存。例如,寄存器文件就是 L0 的高速缓存,L1 是 L2 的高速缓存,L2 是主存的高速缓存,主存又是磁盘二级存储设备的高速缓存,在某些具有分布式文件系统的网络中,本地磁盘存储就是存储在其他系统中磁盘上的数据的高速缓存。操作系统操作系统是应用程序和硬件之间的中间层,它通过进程、虚拟内存和文件等基本抽象概念来实现功能。文件是对I/O设备的抽象,虚拟内存是对内存和磁盘I/O设备的抽象,进程则是对正在运行的程序的抽象。通过这些抽象,操作系统使得应用程序可以方便地访问系统资源,并且可以同时运行多个程序。进程进程是操作系统对正在运行的程序的抽象,一个系统可以同时运行多个进程,每个进程都好像在独占硬件资源。无论在单核还是多核系统中,CPU都会看上去在执行多个进程,这是通过处理器在进程间切换来实现的。操作系统管理这种交替执行机制,被称为上下文切换。进程的转换是由操作系统内核管理的。虚拟内存虚拟内存是为每个进程提供一个虚拟的地址空间,使得每个进程都可以独占使用内存,而且每个进程看到的内存都是一致的。虚拟地址空间中最上面的区域是保留给操作系统中的代码和数据的,这对所有进程来说都是一样的。文件文件是计算机系统中的一个重要概念,每个文件都可以包含磁盘、键盘、显示器以及网络等各种输入输出设备。所有输入输出都是通过一小组名为 Unix I/O 的系统函数调用读写文件实现的。文件的概念非常强大,它为应用程序提供了一个统一的接口,使得程序可以处理系统中可能存在的各种格式和类型的设备。网络通信随着全球网络的发展,计算机系统中最重要的用途之一就是通过网络从一台主机复制信息到另一台主机。例如,电子邮件、即时通讯、FTP等应用就是基于网络复制信息的功能。从单个系统的角度来看,网络可以被看作是一个 I/O 设备。当系统将一串字节从存储器复制到网络适配器时,数据流经过网络到达另一台机器,而不是到达本地磁盘驱动器。系统可以读取从其他机器发送来的数据,并将数据复制到自己的存储器中。计算机系统包含「缓存器、寄存器、操作系统、网络通信」等几个方面,我们会在后面的文章来逐步梳理书中的内容。题图生成于:Stable Diffusion内容优化使用 Notion AI内容来源于《深入理解计算机系统》 原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34569.html 赞 (0) 小道研究 0 0 生成海报 微信扫码分享 如何在matlab中绘制极坐标图形? 上一篇 2024年4月12日 下午3:56 便宜vps 下一篇 2024年4月12日 下午3:58 相关推荐 网站运维 某办公处理软件公式编辑器再次出现漏洞 01 概述各公司的网络安全防护体系的壁垒日益增高,攻击人员从防护体系的正面撕开入侵的路径的机会越发渺茫。使用多个0day组合攻击相对成本较高,社工这种低成本收益 小su 2024年9月21日 00 Ansible 实战详解(ansible技术原理与实战) Ansible 实战详解自动化运维工具—ansible详解 一、ansible 简介 1、ansible 是什么? ansible是目前最受运维欢迎的自动化运维工具,基于Python开发,集合了 CSDN 网站运维 2024年6月28日 00 网站运维 解决LabVIEW访问Access数据库时出现“provider not found”错误的问题 通过LabVIEW的Database工具包访问Access数据库(新版本的Access数据库后缀为.accdb,2007及以前版本的后缀为.mdb)。本人电脑软 小su 2024年9月27日 00 WireShark网络取证分析第五集 题目介绍 这是一个早晨的仪式,莫尼曼尼一边啜饮着咖啡,一边快速浏览着夜里收到的邮件,其中一条消息引起了她的注意,因为它显然是通过了邮件过滤器的垃圾邮件,这条信息颂扬了在网上买药的好… 七芒星实验室 网站运维 2024年4月2日 00 发表回复 您的邮箱地址不会被公开。 必填项已用 * 标注*昵称: *邮箱: 网址: 记住昵称、邮箱和网址,下次评论免输入 提交