CSAPP速读-1

硬件组成

这里写图片描述

这里写图片描述

1.总线

总线负责携带信息直接并在各个组件之间传递。64位系统的字(Word)为8字节,即总线传输的定长字节块大小为8字节。
32位系统,限定了虚拟地址空间为4GB,地址范围为0-2^(32-1)。

2.IO设备

一般为磁盘,鼠标,键盘,显示器,还有Socket。通过适配器和IOo总线相连。

3.主存

即内存,由一组DRAM芯片组成

4.CPU

处理器的核心是一个字长的寄存器,称为程序计数器(PC)。在任何时刻,都指向主存中某条机器语言指令(即包含该条指令的地址)。
这样的寄存器有很多,他会执行如下操作:
  • 加载:把一个字节或一个字复制到寄存器,覆盖原内容
  • 存储:把一个字节或一个字从寄存器复制到内存某位置,覆盖原内容
  • 操作:将2个寄存器的内容复制到ALU(算数/逻辑单元)对两个字做算数操作,并保存在一个寄存器中。
  • 跳转:从指令中抽取一个字,复制到PC中。

一段程序的运行过程

当键盘输入./hello时,shell将每个字符先逐一读取入寄存器(通过DMA可以跳过寄存器),再存放到内存中。
在敲下回车键,shell知道输入完毕,会将执行文件(如程序的二进制文件或.py)和数据从磁盘复制到主存,处理器之后执行hello程序的机器语言指令,这些指令将”hello world”从主存复制到寄存器文件,再从寄存器文件复制到显示设备,显示在屏幕上。

操作系统

作用

1.防止失控的应用程序滥用计算机硬件资源
2.向应用程序提供简单一致的机制来控制底层复杂而且不一样的硬件设备
  • 文件:IO设备的抽象
  • 虚拟储存器:主存和磁盘的抽象
  • 进程:处理器、主存、IO设备的抽象

进程

进程是操作系统对正在运行的程序的抽象。每个进程都好像独占使用硬件。但事实上是通过上下文切换来达到使用一个CPU就能运行多个进程。
上下文切换:上下文包括PC程序计数器,寄存文件当前值,以及主存的内容。当并发执行进程,操作系统会使用上下文切换来将控制权切换到另一个进程。
     进程A       进程B
------+-----|-----------进程A代码
------+->->-|->->-->----内核代码,切换上下文
------------|------+----进程B代码
------+-<-<-|-<-<--+----内核代码,切换上下文
------+-----|-----------进程A代码

线程

一个进程内有多个线程,因此有多个控制流。线程共享进程的代码和全局数据,多线程技术是一种让程序运行更快的手段。

虚拟存储器

这是一个抽象概念,它为每个进程提供一个假象,即每个进程都在独占使用主存。每个进程都看到一致的存储器,称为虚拟地址空间。

这里写图片描述

图中的地址是从下往上增大的。
  • 内核虚拟存储器:最上层为操作系统的代码和数据预留。内核总是驻留在内存中,是操作系统一部分。这块区域不允许应用程序读写或直接调用内核定义的函数。
  • 栈:用户虚拟地址空间的顶层。编译器用于实现函数调用,可以动态扩展和收缩
    这里写图片描述
  • 共享库:中间部分,如C标准库,数学库这样的共享库和数据的区域。
  • 堆:当调用malloc或free时,能动态增加或收缩内存。
  • 程序代码和数据:代码是从固定地址开始的,然后是变量对应的数据位置。代码和数据区直接按照可执行目标文件的内容初始化的。

文件

文件就是字节序列,包括磁盘,键盘,显示器,网络都能视为文件。系统所以输入输出都是通过使用一组称为Unix IO的系统函数调用读写文件来实现的。
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值