Lesson04 PoEdu培训第一课 计算机科学篇(4) 硬盘
文章类别: 培训笔记 3 评论

Lesson04 PoEdu培训第一课 计算机科学篇(4) 硬盘

文章类别: 培训笔记 3 评论

磁盘

带着问题学习

硬盘的物理结构

硬盘是以扇区的方式进行管理的.

为单位进行读写

簇不是固定的大小

一般的, 1簇就是1扇区

1扇区是512字节

    如果一个文件是2byte, 那么这个文件存储后是512byte 
    因为最小单位就是1簇

1簇不能存储2个不同的文件, 否则会导致一个文件不能正确读取.

程序的执行

方式一: 直接从硬盘加载

硬盘加载示意图

方式二: 通过内存中缓存数据进行加载

硬盘内存加载示意图1

硬盘内存加载示意图2

加快程序的运行

磁盘缓存

最开始的时候, 计算机在使用数据时, 先从硬盘加载.

同时, 将数据放到内存中一份

那么下一次在使用的时候就从内存中取

这就是早期的磁盘缓存技术

虚拟内存

虚拟内存就是在硬盘上划出一块空间来当做内存使用, 代替内存存储数据.

虚拟内存运行图

    在执行的时候,物理内存和虚拟内存之间存在数据的互换
    交换算法:
    分页式互换: 将程序分为固定大小的好多页, 使用的时候加载某一页或某几页, 使用PAGEIN(放入物理内存), PAGEOUT(放入虚拟内存)操作来进行交换.
    分段式互换: 将程序分成算法段,数据段等等各种段, 物理内存中只放我们需要用到的段, 用完了在和虚拟内存交换

置换的次数越少,运行的效率越高

节约内存的编程方式

函数共用

    将公共方法形成动态链接库(dll或so文件)

优点: 动态加载, 内存共享.

被调用方清理栈

    清理栈操作是在函数调用完成之后进行的.

Windows下是使用 _stdcall其他函数 两种方式

_stdcall 的节省方法

在函数的最后加上一句 add esp, 8

压缩数据

    压缩数据就是通过一定的压缩算法来把数据压缩存放
可逆压缩

RLE算法

举个例子:

压缩 AAAAAABBBCCCCDDD --> A6B3C4D3

善于压缩图像 (传真使用的压缩算法)

但是极端情况下不能进行压缩

ABCDEFG 经过压缩会变成2倍, 压缩率200%.

哈夫曼压缩

使用出现的频率来压缩 然后以编码的方式(类似电报)

出现频次最多的, 用最短编码来表示

不可逆压缩
    比如JPEG格式, 有损压缩, 不能还原.

作业

    整理错题, 复习之前的视频.

如有错误,请提出指正!谢谢.

回复 / Cancel Reply
  1. 关于RLE算法这里,自然语言算是极端环境吗?

    回复
    1. @勤劳勇敢的中国人

      不能说是完全的极端环境,但是自然语言,尤其是中文这种语言类型,不是很适合使用RLE,会造成反效果.

      回复
      1. @花心胡萝卜

        基本上自然语言都很少用连续相同的字符。所以RLE本身来说不适应在自然语言环境中压缩。

        回复