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

《程序是怎样跑起来的》第五章、第六章

时间:2024-02-17 20:47:03浏览次数:29  
标签:编码 哈夫曼 文件 程序 第五章 内存 第六章 磁盘 数据

心得:了解了内存和磁盘的关系,以及数据的压缩方法
知识点:
1、现在计算机采用的是存储程序方式(程序内置方式),即在存储装置中保存程序,并逐一运行的方式
2、磁盘缓存
通过使用内存来提高磁盘访问速度的机制称为Disk Cache(磁盘缓存),即把从磁盘中读出的数据存储到内存空间中的方式
Windows操作系统提供了磁盘缓存机制。把低速设备的数据保存在高速设备中,需要时可以直接将其从高速设备中读出,这种缓存的方式在其他情况下也会用到
3、虚拟内存
把磁盘的一部分作为假想内存来使用的机制称为虚拟内存(virtual memory)。这与磁盘缓存是假想的磁盘(实际上是内存)相对,虚拟内存是假想的内存(实际上是磁盘)
实际内存也称为物理内存
Windows操作系统提供了虚拟内存机制。虚拟内存的方法有分页式和分段式两种。Windows采用的是分页式,该方式是指在不考虑程序构造的情况下,把运行的程序按照一定大小的页(page)进行分割,并以页为单位在内存和磁盘间进行置换。在分页式中,我们把磁盘的内容读出到内存称为Page In,把内存的内容写入磁盘称为Page Out。一般情况下,Windows计算机的页的大小是4KB
4、节约内存的编程方法
①通过DLL文件实现函数共有
DLL(Dyanmic Link Library)文件,顾名思义,是在程序运行时可以动态加载Library(函数和数据的集合)的文件。注意:多个应用可以共有同一个DLL文件
静态链接即在EXE程序文件中,静态加载函数的方式。 Windows的操作系统本身也是多个DLL文件的集合体,在不变更EXE文件的情况下,只通过升级DLL文件就可以更新
②通过调用_stdcall来减小程序文件的大小
C语言中在调用函数后,需要执行栈清理处理指令。栈清理处理是指,把不需要的数据从接收和传递函数的参数时使用的内存上的栈区域中清理出去。该命令不是程序记述的,而是在程序编译时由编译器自动附加到程序中的。编译器默认将该处理附加在函数调用方
5、磁盘的物理结构
磁盘的物理结构是指磁盘存储数据的形式
磁盘是通过把其物理表面划分成多个空间来使用的,划分的方式有扇区方式(指将磁盘划分为固定长度的空间)和可变长方式(指把磁盘划分为长度可变的空间)两种。一般的Windoes计算机所使用的硬盘和软盘采用的都是扇区方式。扇区方式中把磁盘表面分成若干个同心圆的空间就是磁道,把磁道按照固定大小(能存储的数据长度相同)划分而成的空间就是扇区
在Windoes计算机中,一般磁盘的1个扇区是512字节
6、文件是将数据存储在磁盘等存储媒介中的一种形式。程序文件中存储数据的单位是字节。文件就是字节数据的集合。在任何情况下,文件中的字节数据都是连续存储的
7、压缩数据的方法
①RLE算法,即把文件内容用“数据*重复次数”的形式来表示的压缩方法。RLE算法是一种很好的压缩方法,经常被用于压缩传真的图像等,但它并不适合文本文件(文本文件是由不同类型的字符组合而成的,而且不同的字符出现的次数也是不同的)的压缩
②哈夫曼算法,是哈夫曼于1952年提出来的压缩算法,即为各压缩对象文件分别构造最佳的编码体系,并以该编码体系为基础来进行压缩。在哈夫曼算法中,通过借助哈夫曼树构造编码体系,即使在不使用字符区分符号的情况下,也可以构建能够明确进行区分的编码体系,即就算表示各字符的数据位数不同,也能够做成可以明确区分的编码。
哈夫曼算法能够大幅提高压缩比率,用哈夫曼算法压缩过的文件中读取数据后,就会以位为单位对该数据进行排查,并与哈夫曼数进行比较,看是否达到了目标编码,所以哈夫曼算法可以对数据进行区分。哈夫曼算法的关键就在于“多次出现的数据用小于8位的字节数来表示,不常用的数据则可以用超过8位的字节数来表示”。注意,不管是不满8位的数据还是超过8位的数据,最终都要以八位为单位保存到文件中。日本人比较常用的压缩软件LHA,使用的就是哈夫曼算法。
8、莫尔斯编码
莫尔斯编码是1837年莫尔斯提出的。莫尔斯编码不是通用语言,而是通过“嗒 嘀 嗒 嘀”这些长点和短点的组合来传递文本信息的。实际上,根据字符种类的不同,莫尔斯电码符号的长度也是不同的。莫尔斯编码把一般文本中出现频率高的字符用短码来表示,这里所说的出现频率是根据印刷行业的印刷活字数目而确定的。莫尔斯编码是根据日常文本中各字符的出现频率来决定各字符的编码的数据长度的。在莫尔斯编码中E的数据长度最短
9、·······

标签:编码,哈夫曼,文件,程序,第五章,内存,第六章,磁盘,数据
From: https://www.cnblogs.com/HCL291026hcl/p/18018344

相关文章

  • 《程序是怎样跑起来的》第七章读后感
    在学习计算机知识时,我们往往会直接关注程序编写和运行的具体操作,而不太会深入思考其背后所依赖的环境。第七章则专门探讨了这个问题,指出程序运行环境实际上是由操作系统和硬件共同组成的。例如,在日常生活中常见的Windows操作系统,就是与各种计算机硬件相配合,为程序提供运行平台的一......
  • 程序是在何种环境中运行的
    Windows克服了CPU以外的硬件差异计算机的硬件并不仅仅是由CPU构成的,还包括用于存储程序指令和数据的内存,以及通过I/O连接的外围设备。Windows操作系统对克服这些硬件构成的差异做出了很大贡献。在Windows的应用软件中,键盘输入、显示器输出等并不是直接向硬件发送指令,而是通过向Wi......
  • 程序是怎样跑起来的
    《程序是怎样跑起来的》是一本引导读者深入理解计算机程序运行原理的书籍。通过简洁明了的文字和生动的实例,作者展示了从计算机底层硬件到高级编程语言的运行机制,帮助读者建立起对程序运行流程的完整认识。阅读这本书后,我最大的感受是它对编程思想的深入挖掘。在传统观念中,编程往......
  • 程序是怎么跑起来的读感
    通过对这本书后面内容的阅读,后面几张讲了并发和并行的概念以及其在程序执行中的应用。作者首先解释了并发和并行的区别,指出并发是多个任务交替执行,而并行是多个任务同时执行。然后,作者介绍了常见的并发模型和并行计算的方法。在这几章中,读者可以了解到为什么并发和并行对于提高程......
  • {fastcluster}:快速分层聚类程序(Fast Hierarchical Clustering Routines)
    1.函数代码该R包中最主要的函数是 hclust ,代码如下:>fastcluster::hclustfunction(d,method="complete",members=NULL){if(method=="ward"){message("The\"ward\"methodhasbeenrenamedto\"ward.D\&quo......
  • 《程序是怎样跑起来的》总结一二三四章
    一:物理层面:CPU由具有开关功能的晶体管构成逻辑层面:内部由、寄存器,控制器,运算器,时钟四个部分构成,各部分通过电信号相互连通程序启动后,根据时钟信号,控制器会从内存中读取指令与数据,通过对这些指令进行解释执行,运算器对数据进行运算,控制器根据运算结果来控制计算机控制器:负责......
  • 程序是怎样跑起来的第五六章读后感
    从第五章可以了解计算机采用的是存储程序方式。磁盘缓存是从磁盘中读出数据存储在内存中的,当数再次被读取时并不是从磁盘而是直接从内存中高速读出。DLL是DynamicLink的略称。函数的加载方式分为两种,一种是静态链接,另一种是动态链接。磁盘保存数据的物理单位是扇区。数据不读入......
  • 程序是怎样跑起来的 第六章
    压缩分类:压缩后的数据可以复原的称为可逆压缩,无法复原的称为不可逆压缩文件是将数据存储在磁盘等存储媒介上的一种形式,其以字节为存储单位,文件就是数据集合的字节任何情况下:文件的字节序列都是连续存储的RLE压缩算法:将文件内容用数据X重复次数,从而实现数据压缩,常用于压缩......
  • 程序是怎样跑起来的 第七章
    程序的运行环境=操作系统+具体硬件硬件核心考虑参数为CPU,不同的CPU指令集不同,能解释的机器语言种类也不同,其只能解释自身的机器语言,也就是常说的cpu指令集常见的有:x86、MIPS、SPARC、PowerPC本地代码:通过将源代码进行编译后生成的机器语言的程序成为本地代码(机器直接运......
  • 程序是怎样跑起来的 第八章
    本地代码:本地代码的内容就是数值的罗列集合(二进制的数据展示)编译器:负责将源代码转换为本地代码,每种语言都有其专用的编译器由于cpu类型不同,本地代码的类型也不同,编译器可以将源代码编译成不同cpu类型的本地代码交叉编译:在当前平台编译另外平台的本地代码,例如在win上编译linu......