第四课:磁盘(计算机科学——po学院)

第四课:磁盘

磁盘的发展

软盘——>碟片式硬盘(100MB)——>SSD芯片式硬盘(民用500MB,商用2000MB)
磁盘和内存息息相关。

储存数据

  • 内存:通过内存地址进行访问,一般快、一般多、一般贵;
  • 寄存器:在CPU内部,速度最快、数量最少、最贵;
  • 磁盘:速度非常慢、数量最多、最便宜。

目前计算机运算速度的瓶颈在磁盘

程序执行的方式(存储程序式计算机——冯·诺依曼模型):

  1. CPU直接从磁盘中取数据,取回到寄存器中进行运算,再将数据存储到磁盘中;
  2. 通过内存,将硬盘当中的数据加载到内存中,CPU直接访问内存。

加快磁盘的运作

磁盘的介质决定了运行速度,内存从硬盘中读取数据要花费时间(设计磁盘缓存来减少这部分时间)。

磁盘缓存

CPU从磁盘中读取数据的同时,将数据加载在内存当中,再次使用可直接读取内存(win95/win98/现在的浏览器)。
应用:浏览器、数据库、服务端。

虚拟内存

内存不够用,将磁盘划分一部分空间当作内存使用。
物理内存:CPU只能执行物理内存当中的程序;
虚拟内存:虚拟内存当作加载使用,当需要使用这部分的时候,再与物理内存做置换。

虚拟内存置换算法

  • 分段式:需要运行的程序以处理集合(逻辑分段),需要用的存储到物理内存中,其余的放到虚拟内存中,需要使用时进行置换;
  • 分页式:把程序做成一页页的大小,以页为单位,在物理内存和虚拟内存中置换。

节约内存的编程方式

  1. 函数共用:动态加载,DLL动态链接库(程序A、B相同部分可以通过DLL存储)。
  2. 被调用方清理栈:在内存中有一块专门的空间存储临时值,这块地址叫做栈(栈不能无限大)。一般清理栈是在函数调用完之后进行的,两种调用方式(Windows的_stdcall和其他方式)。

_stdcall:被调用方底部生成addesp8,更加节省内存,调用完清理;
其他方式:在调用代码下面用addesp8进行栈清理,每调用一次清理一次。

节省磁盘的方式

数据压缩

  • RLE压缩算法:
    (AAAABBCCCDDDD——>A4B2C3D4)可以很好的压缩图像(图像黑白两种颜色连续的)和EXE(EXE有很多0000空白区)。
    无法有效的压缩文本,有时候会造成空间扩大(l love——>l1l1o1v1e1)。
  • 哈弗曼算法:
    压缩文本,采用编码的方式将经常出现的字符用短编码表示。

可逆压缩(可还原,上述);不可逆压缩(JPEG格式)

内存物理结构

扇区、可变长
扇区(按磁道划分):以簇的方式进行读写,即使文件大小不能满足一簇,也按照一簇操作;一簇中不能有相同的文件。(簇是Windows对磁盘读写的单位)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值