《程序是怎么跑起来的》读书笔记(5) -- 内存和磁盘的关系

计算机的5大部件:
输入装置,输出装置,存储器,运算器,控制器
内存和磁盘都被归类存储器

利用电流来实现存储的内存 VS 利用磁效应来实现存储的磁盘
高速高价小容量 : 低速低廉大容量

不读入内存就无法运行

存储程序方式:这是一个里程碑的机制,程序要保存在存储设备上,通过有序的读出来来实现运行
(以前是通过改变计算机的布线解决的)
磁盘存储的程序必须加载到内存中才能运行,因为负责解析和运行程序内容的cpu需要通过内部程序的程序计数器来指定内存地址,才能读出程序,第一章有讲

磁盘的程序——>内存加载出来——>cpu运行

内存磁盘交互1:磁盘缓存

磁盘缓存:从磁盘中读出的数据存储到内存空间中的方式。这样接下来需要读取同一数据时,就可以不用通过实际的磁盘,而是从磁盘缓存中把内容读出

windows采用磁盘缓存机制作为操作系统,但是现在硬盘访问速度的大幅改善,磁盘缓存的效果已经不如windows95那时明显
现在利用最常见的例子在于web浏览器中,web浏览器会把获取到的数据暂时保存到磁盘中,然后在需要中再显示出来

内存磁盘交互2:虚拟内存

虚拟内存指把磁盘的一部分作为假想的内存,磁盘缓存是把内存的一部分看作磁盘使用
借助虚拟内存,内存不足也可以运行程序,比如5MB的内存空间运行10MB的程序

编程怎么节约内存

现在的windows是一种图形用户界面的操作系统,一般512MB的内存才能运行,前身MS-DOS是命令行系统(CLI),在128KB的内存上就能运行

前面讲了虚拟内存貌似能够解决内存不足的的问题,但是虚拟内存在内存和磁盘中需要进行pagein 和pageout的频繁操作,这些是很慢的,应用还是一时无法操作。

从根本上解决问题,一种是花钱增加内存容量,另一种是把运行的应用文件变小,主要思考第二种方式,有两种解决办法
1. 通过dll(Dynamic Link Library)文件实现函数共有
不全部弄到exe文件里面,而是通过独立的dll文件里面包含一些共同需要的函数进行动态链接,windows系统本身就是多个dll文件的集合
2.通过调用——stdcall减小程序文件的大小
c语言的高级技巧,略

磁盘的物理结构

“《程序是怎么跑起来的》读书笔记(5) -- 内存和磁盘的关系”的一个回复

发表评论

电子邮件地址不会被公开。