2019.11.28 星期四 阴
- 磁盘(disk)的概念:是指利用磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,也可以反复地被改写,断电后也能保持数据不丢失。
- 磁盘的发展过程:软盘(soft disk)>碟片式>固态硬盘(SSD芯片式)
- 几种存储数据的特点:
- 寄存器:一般用于CPU的内部;速度最快,数量最少,价格最贵;
- 内存:速度一般快,数量一半多,价格一般贵;
- 磁盘:速度慢,数量最多,价格最便宜;
- 速度:寄存器>内存>磁盘
-
磁盘缓存(Cache):磁盘缓存是为了减少CPU透过I/O读取磁盘机的次数,提升磁盘I/O的效率,用一块内存来储存存取较频繁的磁盘内容,减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏;
现在浏览器,数据库等使用比较多;
- 读缓存:操作系统为已读取的文件数据,在内存较空闲的情况下留在内存空间中(这个内存空间被称之为“内存池”),当下次软件或用户再次读取同一文件时就不必重新从磁盘上读取,从而提高速度。
- 写缓存:将要写入磁盘的数据先保存于系统为写缓存分配的内存空间中,当保存到内存池中的数据达到一个程度时,便将数据保存到硬盘中。
- 虚拟内存(Virtual Memory):虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的“虚拟内存”;Linux的“交换空间”等。
内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,WINDOWS运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存,虚拟内存在硬盘上的存在形式就是 PAGEFILE.SYS这个页面文件。
例如,一个程序运行需要6G内存要求,但是计算机只用4G内存,就在硬盘上划分一个2G的虚拟内存等;
调取方式:
- 分页式:分页式调度是将逻辑和物理地址空间都分成固定大小的页。主存按页顺序编号,而每个独立编址的程序空间有自己的页号顺序,通过调度辅存中程序的各页可以离散装入主存中不同的页面位置,并可据表一一对应检索。
页式调度的优点是页内零头小,页表对程序员来说是透明的,地址变换快,调入操作简单;缺点是各页不是程序的独立模块,不便于实现程序和数据的保护。
- 分段式:分段式调度是按程序的逻辑结构划分地址空间,段的长度是随意的,并且允许伸长。
它的优点是消除了内存零头,易于实现存储保护,便于程序动态装配;缺点是调入操作复杂
- 段页式在段页式调度中把物理空间分成页,程序按模块分段,每个段再分成与物理空间页同样小的页面。
段页式调度综合了段式和页式的优点。其缺点是增加了硬件成本,软件也较复杂。大型通用计算机系统多数采用段页式调度
- 节约内存的编程方式:
- 函数共用:动态链接库(Dynamic Link Library)简称DLL;
动态链接库(Dynamic Link Library)
是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)或者 ".drv"(旧式的系统驱动程序)
动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 文件中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。
- 被调用方清理栈:
__stdcall表示
1.参数从右向左压入堆栈
2.函数被调用者修改堆栈
3.函数名(在编译器这个层次)自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸
- 其他:1.__cdecl 2.,__fastcall,3.__thiscall,4.__nakedcall,5.__pascal,6.__vectorcall。
函数调用约定,是指当一个函数被调用时,函数的参数会被传递给被调用的函数和返回值会被返回给调用函数。函数的调用约定就是描述参数是怎么传递和由谁平衡堆栈的,当然还有返回值。
参数传递顺序
1.从右到左依次入栈:__stdcall,__cdecl,__thiscall,fastcall
2.从左到右依次入栈:pascal
调用堆栈清理
1.调用者清除栈。
2.被调用函数返回后清除栈。
7:节约硬盘的方式:
数据压缩:数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。数据压缩包括有损压缩和无损压缩。
- 可逆压缩(无损压缩):一些机制是可逆的,这样就可以恢复原始的数据,这种机制称为无损数据压缩
1.RLE:图像、EXE文件,传真等。缺点:无法准确的进行文本压缩;
2.哈夫曼:
1.JPEG:
- 数据压缩的方式非常多,不同特点的数据有不同的数据压缩方式(也就是编码方式),下面从几个方面对其进行分类:
-
即时压缩和非即时压缩:
1.即时压缩一般应用在影像、声音数据的传送中。即时压缩常用到专门的硬件设备,如压缩卡等。
2.非即时压缩一般不需要专门的设备,直接在计算机中安装并使用相应的压缩软件就可以了。 -
数据压缩和文件压缩
1.数据压缩包含了文件压缩,但有时,数据是专指一些具有时间性的数据,这些数据常常是即时采集、即时处理或传输的
2.文件压缩就是专指对将要保存在磁盘等物理介质的数据进行压缩,如一篇文章数据、一段音乐数据、一段程序编码数据等的压缩。 -
无损压缩与有损压缩
1.无损压缩利用数据的统计冗余进行压缩。数据统计冗余度的理论限制为2:1到5:1,所以无损压缩的压缩比一般比较低。这类方法广泛应用于文本数据、程序和特殊应用场合的图像数据等需要精确存储数据的压缩。
2.有损压缩方法利用了人类视觉、听觉对图像、声音中的某些频率成分不敏感的特性,允许压缩的过程中损失一定的信息。虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响较小,却换来了比较大的压缩比。有损压缩广泛应用于语音、图像和视频数据的压缩。