操作系统笔记(九)内存管理

news/2024/7/20 15:50:02 标签: 内存管理, 操作系统, 运维
  • 进程管理回顾
  1. 本质:操作系统内核对物理CPU的虚拟,让每个进程以为自己独占了CPU。
  2. 类似的:内存管理的目的是提供一个虚拟接口,让每个进程以为自己独占了RAM。
  • 基本方法:
  1. 单用户,单任务:MS-DOS
    • 用户进程最大内存640K。
    • 问题:内存过小,如果应用程序需要更多内存怎么办
    • 解决方案:overlay。仅加载当前必须的代码和数据。
  2. 多任务
    • 问题:P1, P2都在运行,P1需要申请更多内存,但内存已经用完
    • 解决方案:swap(将P2临时交换到外存)。缺点:磁盘传输导致swap成本极高。
  • 重定位问题
  1. 源程序变成进程:源码 -> 目标文件 -> 可执行文件 -> 进程
  2. 概念:可执行文件(链接器实现地址绑定)使用地址为相对地址(逻辑地址),而进程需要绝对地址(物理地址)。
  3. 实现:内存管理单元(MMU)负责将逻辑地址和加载地址结合成物理地址。
  • 内存保护问题
  1. 概念:保护进程内存不被其他进程访问或破坏。
  2. 实现:MMU实现,在重定位之前检查limit register是否大于逻辑地址。
  • 内存分配问题
  1. 概念:管理内存的分配和回收。即动态内存分配问题。
  2. 可分配的内存空间:hole。分配内存则分配hole,回收内存则回收hole,涉及hole的合并。
  3. 外部碎片:分配回收导致较小的内存碎片 -> 解决方案:分配hole的策略(首次适应,最佳适应,最坏适应) 
  4. 内部碎片:内存分块分配,导致分配给进程的内存大于进程所需,导致的碎片。

转载于:https://www.cnblogs.com/niuxu18/p/note_os_9.html


http://www.niftyadmin.cn/n/659826.html

相关文章

githash工具玩转linux,抛砖引玉,发个群晖自行编译套件的教程

抛砖引玉,发个群晖自行编译套件的教程2020-11-30 18:37:1925点赞109收藏15评论拿iperf3举例吧,这个是用来测试带宽的,其实用docker也可以实现,但是编译套件,所占用的空间更小。但我只学会了spksrc自带的一些套件的编译…

mac linux 性能测试工具,Mac/Linux压力测试神器Siege详解(附安装过程)

背景描述在做Web项目或者一个服务器程序的时候,往往会遇到以下的场景,想要确定自己服务器吞吐量有多大、在服务器中需要应用线程池但不知道线程池的数量应该设置多少、对JVM相关参数进行调优验证时需要大量的请求来触发GC等等。总之,在很多场…

微信开发 ---- 群发接口

官网:https://mp.weixin.qq.com/wiki?tresource/res_main&idmp1481187827_i0l21 2018.03.15:GitHub下载代码 订阅号每天可以发一条,服务号每个月只能发4条。本篇的内容跟上篇内容相关,请先看上篇再看着篇。 微信开发…

linux 7安装ssh,CentOS 7安装和配置ssh

1、安装openssh-serveryum install -y openssl openssh-server2、修改配置文件用vim打开配置文件/etc/ssh/sshd_config1602581233(1).jpg将上图的PermitRootLogin,RSAAuthentication,PubkeyAuthentication的设置打开。3、启动ssh服务#启动ssh服务systemc…

数独

你一定听说过“数独”游戏。如【图1.png】,玩家需要根据99盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。 数独的答案都是唯一的,所以,多个解也…

linux6.5 安装yum,centos6.5 yum安装

查看、卸载已安装的yum包查看已安装的yum包[rootiZ23rter8cjZ ~]# rpm -qa|grep yumyum-Metadata-parser-1.1.2-16.el6.x86_64yum-plugin-fastestmirror-1.1.30-17.el6_5.noarchyum-plugin-security-1.1.30-17.el6_5.noarchyum-3.2.29-43.el6.centos.noarchyum-utils-1.1.30-17…

Selenium(Python)等待元素出现

1、显式等待 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC driver webdriver.Firefox()driver.get("http://…

linux循环buffer,C++版的循环缓冲区类

C版的循环缓冲区类(实际测试可用!)/** CCycleBuffer.h** Created on: 2013-5-27* Author: shiguang*/#ifndef __test__CCycleBuffer__#define __test__CCycleBuffer__#include #include #include #include class CCycleBuffer{public:bool isFull();bool isEm…