首页 > 编程语言 >读《程序是怎样跑起来的》第五章有感

读《程序是怎样跑起来的》第五章有感

时间:2024-02-21 17:57:44浏览次数:27  
标签:缓存 有感 程序 扇区 第五章 内存 磁盘 虚拟内存

第五章——内存和磁盘的亲密关系

本章重点是在计算机系统中高速小容量的内存与低速高容量的磁盘如何协同作业。
内存主要是指主内存(负责存储CPU中运行的程序指令和数据的内存),磁盘主要是指硬盘。

不读入内存就无法运行
存储程序方式:
程序保存在存储设备中,通过有序地被读出来实现运行。

磁盘中存储的程序,必须要加载到内存后才能运行。
原因:CPU需要通过内部程序计数器来指定内存地址,然后才能读出程序。即使CPU可以直接读出并运行磁盘中保存的程序,由于磁盘读取速度慢,程序运行速度还是会降低。所以,存储在磁盘中的程序需要读入到内存后才能运行。

磁盘缓存加快了磁盘访问速度
磁盘缓存:
指的是把从磁盘中读出的数据存储到内存空间中的方式。当接下来需要读取同一数据时,就不用通过实际的磁盘(低速),而是从磁盘缓存(高速)中把内容读出,改善磁盘数据的访问速度。

随着磁盘访问速度的改善,磁盘缓存的效果没有之前那么明显。

缓存:
把低速设备的数据保存在高速设备中,需要时可以直接将其从高速设备中读出。例如在Web浏览器的使用中会用到。

虚拟内存把磁盘作为部分内存来使用
虚拟内存:
是指把磁盘的一部分作为假想的内存来使用。
磁盘缓存是假想的磁盘(实际是内存),虚拟内存是假想的内存(实际是磁盘)。
为了实现虚拟内存,就必须把实际内存的内容,和磁盘上的虚拟内存的内容进行部分置换(swap),并同时运行程序。

虚拟内存的方法:有分页式和分段式两种。
分页式:在不考虑程序构造的情况下,把运行的程序按照一定大小的页(page)进行分割,并以页为单位在内存和磁盘间进行置换。为了实现虚拟内存功能,Windows在磁盘上提供了虚拟内存用的文件(page file,页文件)。

分段式:分段式虚拟内存是指,要把运行的程序分割成以处理集合及数据集合等为单位的段落,然后再以分割后的段落为单位在内存和磁盘之间进行数据置换。

节约内存的编程方法
(一)通过DLL文件实现函数共有
DLL文件,在程序运行时可以动态加载Library(函数和数据的集合)的文件。多个文件可以共有同一个DLL文件,可达到节约内存的效果。

(二)通过调用-stdcall来减小程序文件大小
通过调用-stdcall来减小程序文件的方法,是用C语言编写应用时可以利用的高级技巧。

栈清理处理:
C语言中,在调用函数后,需要执行栈清理处理指令。把不需要的数据从接收和传递函数时使用的内存上的栈区域中清理出去。该命令是程序编译时由编译器自动附加到程序中的,编译器默认将该处理附加在函数调用方。
栈清理处理,比起在函数调用方进行,在反复被调用的函数一方进行时,程序整体要小一些。所使用的就是-stdcall,就可以把栈清理处理变为在被调用函数一方进行。

磁盘的物理结构(存储数据的形式)
磁盘是通过把其物理表面划分成多个空间来使用的。
划分方式分为扇区方式和可变长方式两种。扇区是指将磁盘划分为固定长度的空间,可变长方式是指把磁盘划分为长度可变的空间。一般的Windows计算机所使用的都是硬盘和软盘,都是扇区方式。
扇区方式:把磁盘表面分成若干个同心圆的空间就是磁道,把磁道按照固定大小划分成的空间就是扇区。

扇区是对磁盘进行物理读写的最小单位。但在逻辑方面(软件方面)磁盘进行读写的单位是扇区整数倍簇。
磁盘容量越大,簇的容量也越大。但在软盘中,簇和扇区的大小是相等的。
注意:不管是硬盘还是软盘,不同的文件是不能存储在同一个簇中的,否则就会导致只有一方的文件不能被删除,所以不管多么小的文件,都会占用1簇的空间。

以上就是本章所学内容,下章见!

标签:缓存,有感,程序,扇区,第五章,内存,磁盘,虚拟内存
From: https://www.cnblogs.com/zyk0915-/p/18025856

相关文章

  • 《程序是怎么跑起来的》第九章
    关于第九章的学习我了解到了“操作系统和应用之间的关系”对于第九章的学习,我们可以学习五个课时,本章讲述了在软件商城购买软件的注意事项,首先我们在购买时一定不要忘记了操作系统的使用,这也就要讲述到操作系统的作用。操作系统的功能在不断地演进和完善,以适应不断变化的计算机环......
  • 《程序是怎样跑起来的》第六章
    这一章不仅系统地介绍了内存的概念、种类和重要性,还详细阐述了程序是如何与内存进行交互的。我深刻感受到了内存管理对于程序运行的重要性。内存作为程序运行的基础,其分配、使用和回收直接影响着程序的性能和稳定性。合理的内存管理不仅可以提高程序的运行效率,还能有效避免内存泄......
  • 《程序是怎样跑起来的》——第八章读后感
    一:1.利源代码进行编译后可得到本机代码。2.通过编译和链接可得到EXE文件。3.对源文件进行编译可得到日标文件。例如,补源文件wempikes进行编译可得到目标文件sample.obj。日标文件的内容较是在机代码。4.链接器会从库文件中提取必要的目标文件并将它们拼接成。EXE文件。在程......
  • 《程序是怎么跑起来的》第八章
    今天沃阅读了程序是怎么跑起来的第八章,从源文件到可执行文件。本章分为九个课时,分别介绍了关于编码器,原代码和代码的执行方面的问题,且计算机只能运行本地的代码,虽然计算机通常只能直接运行本地代码,但通过虚拟机和解释器等技术,可以实现在计算机上运行非本地代码的需求。本地代码是......
  • 《程序是怎样跑起来的》第10章
    本章主要讲通过汇编语言认识程序的真面目。本章讲汇编语言到程序,那么,我们总得要知道什么是汇编语言吧?其实呢汇编语言就是(assemblylanguage)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的......
  • Python启动其他程序
    通过python脚本来启动其他的程序,一般使用subprocessimportsubprocess#启动Windows上的计算机程序subprocess.Popen('C:\\Windows\\System32\\calc.exe')#启动记事本,并打开text.txt文件,在该列表中第一个元素表示程序名称,后面的都是参数subprocess.Popen(['C:\\Windows......
  • 《程序是怎么跑起来的》第七章
    今天沃阅读了程序是怎么跑起来的,中的第七章,其中第七章分为6节,主要讲述了‘程序是在任何环境中运行的’对于这一章讲述了对于不同环境下无法实现运行问题的解决。运行环境是指应用程序所依赖的操作系统和硬件设备的组合。操作系统提供了应用程序运行所需的基本功能,例如内存管理、......
  • 《程序是怎样跑起来的》第一章第一节读后感
    在阅读了《程序是怎样跑起来的》第一章第一节之后,我有以下几点感悟:编程语言的重要性:在这一节中,作者强调了编程语言在程序运行过程中的关键作用。编程语言是程序员与计算机进行沟通的桥梁,通过编程语言,我们可以将复杂的逻辑和算法转化为计算机能理解的指令。因此,选择......
  • 《程序是怎样跑起来的》第二章第一节读后感
    在《程序是怎样跑起来的》的第二章第一节中,作者详细介绍了计算机硬件的基本组成和功能。通过阅读这一部分,我对计算机的底层原理有了更深入的理解,并对计算机硬件有了更全面的认识。首先,作者介绍了计算机的基本组成,包括运算器、控制器、存储器和输入输出设备。这些部件......
  • 《程序是怎样跑起来的》第9章
    本章主要讲操作系统与应用程序的关系。我也知道了在操作系统上运行的程序叫应用程序,调用操作系统提供的功能叫做系统调用,Wimdows10是32位或者64位的操作系统,GPU的全称是图形用户界面。通常,程序员的工作就是编写各种提高工作效率的应用程序,而对于作为应用程序运行环境的操作系......