【交换分区】

1.操作系统是一个虚拟机 

把底层硬件通过时间共享或者多路复用等各种方式将资源平均分成N份,
实现操作系统的虚拟化,对于计算器最重要的组件有三个:
1.CPU--通过将时间片(time slice)来完成虚拟化;
2.内存--多个进程如何同时访问同一段物理内存?x86CPU上引入虚拟地址(线性地址)的概念,进程在访问
内存设备的时候,内存中的存储空间,每一个存储格(cell--也是我们说的页,一般是4K大小)都是有地址
的,CPU访问数据的时候就是根据地址来查找的,地址总线就是用来寻址的,CPU通过地址总线可以找到对应
的地址的存储单元,之后通过数据总线将数据读出来,在控制指令的控制下从数据总线完成数据的读取,这
些叫做编址存储单元,如果一个进程如果出现bug,可能会导致其他进程的内存发生错误.x86CPU之后引入虚
拟地址的概念,32位上4G,这个4G是假的,有的程序用的内存很小的,只用了一部分,大部分进程空间是分页
的,每4K是一个页面.交换空间,换进换出,交换空间的存在允许了内存的过载使用!!
3.I/O设备--通过多路复用来完成.

2.交换分区

比如说内存一共有2G,每4K是一页,那么一共有54288个cell,32位机器下每个进程都以为它们有3G
内存可用,但是物理内存是有限的,当物理内存中的54288内存块都被进程映射或其他用到的东西用完了,
如果有进程再申请内存,内核就会将通过LRU或者其他算法将一些内存移到磁盘的某个区域中,将相关信息
存储器来,空闲出一部分内存给现在要用的内存使用,当原来没有进程又要用内存的时候再用同样的算法
将重新找一块内存给它用,在这个过程中临时存放进程的内存信息的地方就是交换分区,交换分区使得内存
的过载使用成为可能.
在linux上这个分区必须是一个单独的分区,叫做swap分区.
把内存中的数据放到磁盘上的过程叫做page out,
取回来的过程就是page in.
当我们发现操作系统频繁地换进换出,就是内存不太够了,如果实在穷的买不起内存了,
那么可以再创建一块交换分区.




操作系统通过虚拟内存映射表来帮助进程找到它的内存的地址.
进程的kernel空间是映射到一起的,进程也无法读取kernel内存的,每个进程的pcb都是在内核空间的.
开发程序的时候要考虑到操作系统按页来分配内存.
内核的kernel的属性对于用户来说是没有任何读写属性的.
CPU有四个工作级别,0(内核态),1,2,3(用户态),处在3级的CPU只能访问0-3G空间,处于0级内核态的CPU能
访问3G-4G的内核空间,处于0级态的CPU理论上能对物理内存中的任何地方进行访问.
3级如何变成0级?通过系统调用.系统通过int 0x80软中断方式从用户态切换到内核态的.


内存映射表


问题:一个系统的交换空间能有多大呢?

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值