操作系统(1)

  存储和寻址


存储:操作系统的存储是结构化的最下面使我们很熟悉的硬盘,硬盘的数据能够长久存放,并且硬盘都很大。现在都是多少T的硬盘和SSD硬盘。硬盘上面有内存1,2,4,8,16,只要关机就没有的,它能快速的进行随机访问,再往上就是CPU,CPU除了运算模块就是缓存,缓存有好几个级别,有些可以和CPU几个核共有的,有些是独有的,再往上面就是离CPU运算单元最近的寄存器。


寄存器是最快的,他在我们CPU旁边,我们硬盘最慢的,同样的钱在我们结构化配置才是最优的性能。

有的人就拿很大的内存做事情,这是有的,比如Google的搜索就是速度又快质量又高,因为他把整个互联网都放在内存里面。谷歌把所有网页爬下来,当然不是全部放在内存,当然真正有用的放在内存,访问量低的放在硬盘里面,基于内存做出来的搜索系统显然又快又好。

比如说我们创业想要做搜索引擎的话,我们没有钱来买这么多内存,就没办法执行这个了。


寻址空间:寻址空间就是我们每一个进程,我们每一个指针可以取到的地址范围。

寻址空间和我们机器上装了多少物理内存没有关系的,和此时到底有多少进程也没有关系,每个进程就有自己独立的寻址空间。

寻址空间:32位-----4G, 如果我们只有32位,我们装8G内存也没有,因为指针只能32位,访问到4G

64位-----10^19Bytes    这个已经是天文数字,一时半会我们还不会考虑这个大小有问题


64位JVM 就是我们JAVA的虚拟机   64位JAVA虚拟机意味着什么?我们JAVA并没有指针的概念,我们不可以具体操作地址,但是在虚拟机内部它本身有寻址的逻辑,我们是用64位JVM我们寻址可以寻到64位 地址空间。所以它可以使用更大的内存,我们把32位JAVA程序迁移到64位JVM上面呢,绝大多数的情况下我们并不需要做太多考虑,也不需要修改任何代码,只需要重新编译。


 比如说我们有这样一个C/C++代码


p是存放地址 ,*p是吧这个地址指向int性数据给读出来,把他赋给我们局部变量叫做n

编译成汇编就是右边,也就是说我们把EBX寄存器所指向的地址给读出来放在EAX寄存器

编译器他会记住我们p对应EBX,n对应EAX这样一件事情


我们有一个指针P,它所指向的数据不是我们需要的内存把他读出来就是了,但是它所指向的不是我们物理内存而是我们逻辑内存,这只在逻辑上存在,就是我们所说道寻址空间,他是我们说到的每个进程都有自己的逻辑内存,它的大小和我们物理内存也没有关系,他就是和我们操作系统的位数有关系,32位或者64位。

操作系统做的是我们给定位逻辑内存地址,那么我们怎么样才能找到实际的数据在哪里,我们吧逻辑内存的地址和实际内存的地址建立对应关系不就好了?可以找到我们给他对于到物理内存里面去。这个对应关系不是实线是虚线,因为我们逻辑内存这么大,对应到物理内存不一定对应的出来,有可能他在物理内存里面,我们直接取出来就可以了,也有可能他不在物理内存里面,她在哪里呢?在虚拟内存里面,我们操作系统都会在硬盘上开辟一个空间叫做虚拟内存,我们都知道硬盘是比较大的,只要放的下,我们都可以把我们内存里的东西放到硬盘上去,接下来我们必须把这个数据读出来不是说他不在我们物理内存里就不给他寻了,那我就要把虚拟内存的数值放到物理内存里面去,但是放的时候呢他不是说吧这个INT比如说4字节或者8字节,不能说把这么一块大小放过去这样的话我们一个一个字节来比对的话呢,这个系统开销实在太大了,所以在我们虚拟内存有个分页的概念,我们不是说只把P指向的那部分放过去,而是把P所在的分页放过去,这个分页可能有几K也可能多少兆,这个是根据操作系统配置谈的。我们会把一大片内存从虚拟内存拿出来放进我们物理内存,其中就包括P所指向的那块数据,那么我们放进内存就有一个问题,我们物理内存放的下吗,他放的下很好我们放进去就完事了,他放不下我们把物理内存里我们很久没有用的一块东西,这个就由我们算法去找,我们会找那一块是不用的,找到这块之后把他交换出来进我们虚拟内存,这个过程就叫做分页或者叫交换,这样就确保P这块数据进入到我们物理内存里面

在我们Windows系统上面大家如果看到C盘根目录会有一个很大的文件,可能几百兆或者几G,有没有办法去访问?这个就是Windows分配的一块硬盘空间

在Linux里面我们一般不是有权限看到这块空间

那么接下来问题就好做了,我们在物理内存看到p这块数据我们要做的就是取出来放到我们寄存器EAX里面去就好勒

在一个运行良好的系统我们绝对大部分数据都在我们物理内存里面这样的话会很快,但是物理内存使用量过多会频繁分页

那么我们知道硬盘是很慢的这样的话我们系统他的性能就会很慢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值