操作系统-内存管理-内存与外存的对换(swapping)_进程对换功能主要基于-程序员宅基地

技术标签: 操作系统  内存  内存管理  

操作系统-内存管理-内存与外存的对换(swapping)


1.对换的引入

多道程序环境下,可能会有如下两个问题:

  1. 内存中的某些进程可能被阻塞(由于等待I/O或其他原因),但是该进程占用了大量的内存空间,甚至会发生内存中所有的进程都被阻塞的情况。
  2. 在上述情况下,还有些作业在外存上等待调入内存,但因内存空间已被那些阻塞的进程占用所以这些在外存上等待的作业无法被调入内存执行。

上诉两个问题会导致系统资源被严重浪费,且系统吞吐量(单位时间内完成的工作量)会下降。为了解决这个问题,引入了对换(swapping)。

2.概念

对换是指将内存中暂时还不能被运行的进程或者暂时用不到的程序和数据,调到外存上(在linux中,有个/swap分区专门用户对换),以便腾出足够的内存供在外存中等待的作业使用。

3.对换分类

按照进行对换的单位,可以将对换分为如下三类:

  1. 进程对换(整体对换):以进程为单位进行对换。
  2. 页面对换(部分对换):以页面为单位进行对换。
  3. 分段对换(部分对换):以分段为单位进行对换。

整体对换主要用于分时系统,而部分对换的主要目的是为了支持虚拟存储系统

4.进程对换

为了实现进程对换,要操作系统要实现的三大功能:

  1. 对换空间的管理
  2. 进程的换出
  3. 进程的换入

4.1.对换空间(外存的磁盘空间)的管理

具有对换功能的操作系统通常将外存分为文件区对换区
文件区用于存放文件,对换区存放从内存中换出的进程。
文件区的侧重点是外存空间利用率,为了提高文件区的外存空间利用率,文件区采用离散分配方式
对换区的侧重点是换入换出速度,为了提高对换区的换入换出速度,对换区采用连续分配方式
为了对换区中的空闲磁盘分区进行管理,可以采用类似于动态分区分配中采用的空闲分区表/链。
至于对换区中的空闲磁盘分区的分配算法也可以借鉴动态分区分配算法。

4.2进程的换出

(1)选择处于阻塞状态下并且优先级最低的进程作为换出进程
(2)启动磁盘
(3)将该进程的程序和数据传送到磁盘

4.2进程的换入

(1)操作系统定时的查看所有进程的状态
(2)找出处于就绪状态的进程
(3)找出换出时间最长的进程作为换入进程
(4)将该进程换入内存

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huangxiang360729/article/details/77940467

智能推荐

解决hexo + Typora 图片上传问题_post_asset_folder-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏10次。hexo + Typora 图片上传问题本文解决hexo + Typora图片上传不显示的问题本文部分参考如下两篇博客博客解决方案详细解释解决步骤:按如下步骤修改设定Typora中图片放置的位置这样当自己新建一个文章后,如果添加图片,会自动生成一个与文章同名的文件夹,并将图片存入该文件夹中,此后该文章中所有添加的图片均存入该文件夹中。修改博客根目录下的_config.yml文件中的post_asset_folder字段设置为true当设置 post_asset_folde_post_asset_folder

《基于Apache Flink的流处理》读书笔记_flink 的流处理读书分享-程序员宅基地

文章浏览阅读7.2w次,点赞4次,收藏28次。第1章 状态化流处理概述传统数据处理绝大多数企业所实现的传统架构都会将数据处理分为两类:事务型处理分析型处理事务型处理企业在日常业务运营过程中会用到各类应用,例如:客户管理管理软件、基于Web的应用等,这些应用系统通常都会设置独立的数据处理层(应用程序本身)和数据存储层(事务型数据库系统)。这些应用通常会连接外部服务或实际用户,并持续处理诸如订单、邮件、网站点击等传入的数据。期间每处理一条事件,应用都会通过执行远程数据库系统的事务来读取或者更新状态,多个应用会共享同一个数据库系统,有时候还_flink 的流处理读书分享

安装Pyinstaller_安装pyinstaller本地whl-程序员宅基地

文章浏览阅读361次。https://www.lfd.uci.edu/~gohlke/pythonlibs/上下载whl格式的pyinstaller执行1.在终端使用pip install xxx.whl 安装中途提示需要下载Collecting altgraphCollecting pywin32-ctypes>=0.2.0Collecting pefile>=2017.8.1Collect..._安装pyinstaller本地whl

[转]Redmine 配置163邮箱-程序员宅基地

文章浏览阅读443次。redmine的邮件发送功能还是很有用的。像项目有更新啦,任务分配啦,都能邮件发送的相关责任人。我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了。查了网上的资料,都是讲修改下配置文件就可以了,他们没错,只是没有讲全。下面是我整理的一个redmine邮件发送功能设置的一个完整流程。1. sendmail安装与检查linux机器上安装的redmine要能发送邮件,..._redmine配置邮箱

【微信小程序3】本地缓存:一次性存储多个对象值_setstoragesync可以一次存多个数据吗-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏5次。一、缓存介绍每个微信小程序都有自己的本地缓存。同一个微信用户,同一个小程序 storage 上限为 10MB。localStorage 以用户维度隔离,同一台设备上,A 用户无法读取到 B 用户的数据。可以通过 wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。二、(异步)和(同步)的区别:wx.set._setstoragesync可以一次存多个数据吗

随便推点

FFmpeg时间戳详解。 解码编码_ffmpeg do_video_out 时间戳计算-程序员宅基地

文章浏览阅读3.3k次。对于时间戳一直不懂。 偶然看到这篇博客,写得很好。 转自:http://blog.chinaunix.net/uid-26000296-id-3483782.html一、FFmpeg忽略了adaptation_field()数据FFmpeg忽略了包含PCR值的adaptation_filed数据;代码(libavformat/mpegts.c)分析如下:/* 解析TS包 */int _ffmpeg do_video_out 时间戳计算

Brownie 开发智能合约(入门使用)-程序员宅基地

文章浏览阅读8k次,点赞4次,收藏15次。简介上篇文章,使用了 Remix 在线 IDE,个人感觉 Remix 在入门智能合约开发时,是很好的上手工具,因为 Remix 帮我们处理好了编译、部署的过程,并且还通过 JavaScri..._brownie读取sol文件时中文不支持

新增一自增列-程序员宅基地

文章浏览阅读69次。/// <summary> /// 为m_DataTable新增一自增列 /// </summary> private void AddAutoIncrementComunm() { DataColumn col = new DataColumn(NewColumn..._for (int i = 0; i < jiaoyixinxi2.rows.count; i++)如何展示自增的值

7. 无线体内纳米网:改善体内电磁通道信号传播性能的若干新型石墨烯材料_go有导电性吗?-程序员宅基地

文章浏览阅读1.2k次。本文专注无线体内纳米网之电磁传播通道中的一个极其重要的问题:为什么作为填料注入血液循环系统的某些新型石墨烯材料,能够改善血液通道太赫兹电磁信号的传播性能,并成为这一应用场合的最佳选择?在这方面,本人并非专家,因此不求全面、深入,只为解除心惑,努力做到以例服人,行文有据可查。_go有导电性吗?

getoutputstream java_Servlet输出流getOutputStream()-程序员宅基地

文章浏览阅读850次。实例代码:index.jsp$Title$inputStreamServlet.javaimport javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServlet..._java getoutputstream

anacoda,sublime-text3,opencv-python,tensorflow,pycharm安装和简单使用_在sublimetext 运行opencv-程序员宅基地

文章浏览阅读2.6k次。1、下载软件anaconda3-5.12、然后就是安装和环境变量配置,Tensorflow1.打开cmd,输入:2. 重新回到cmd,启动环境tensorflow:3. 安装GPU版的TensorFlow和CPU版本:4.测试安装的效果,或sublime下是报错5. 如何查看已安装的库6.Anaconda安装虚拟环境到指定路径参考的博客:安装opencv-python..._在sublimetext 运行opencv

推荐文章

热门文章

相关标签