操作系统期末复习 第七讲 空间的协调-主存储器

一、内存的分配

1.1程序内的分配

分段:程序在执行时的虚拟地址布局时分段的。

 xt/.rodata/.rwdata/.zidata    存放各个大小固定的段,分配是已知的。

.stack    分配也是已知的,而且这个段一般比较小,MB量级。

.heap    最大的段。程序中所有的内存分配请求都在这一段进行。

应用程序的内部:

指令流的分工    多个指令流可以分工合作,完成程序的功能。

按性质分工    不同的指令流处理不同性质的工作,如一些指令流主要负责I/O,另一些指令流主要负责计算等等。

按对象分工    不同的指令流处理不同部分的工作,如每功能个指令流负责处理一 部分数据或一个服务对象。

动态内存分配

功能性质的不确定性    很多应用程序有很多功能,但用户这次要用哪个功能它不知道。因此,它必须等待用户的决定才能加载那个功能对应的数据。当然,也可以在应用程序启动时加载一 切,但那些用不到的功能就造成空间浪费。

工作阶段的不确定性    哪怕对于同一个功能,在不同的工作阶段,它需要的内存的数量也是不同的。当然,也可以直接按照最大用量阶段的内存用量进行分配,但此时就会造成空间浪费。 服务对象的不确定性    即便在同一个工作阶段,如果该阶段针对的对象的大小不同,为了容纳这些对象,使用的内存的数量也会不同。当然,也可以直接按照最大的对象来分配内存,但对于较小的对象而言这将造成空间浪费。

动静态对比        相对于静态内存分配,动态内存分配最大的特点就是其动态性。动态性是为了在不确定情况下节约内存而引入的。如果一台计算机的内存是无限大的,或者工作性质、工作阶段、服务对象是完全确定的,不需要动态内存分配。

动态内存分配请求的生命周期:

程序内的分配策略:

固定分区法:

固定块法:我们可以把堆空间划分成多个大小相等的内存块。每次动态分配内存的时候,我们都分配固定的一块空间。这相当于把malloc的参数给丢掉了,不管它传递进来什么都分配一个可能的最大请求。

碎片:出于某些原因,无法有效利用而被浪费掉的资源。在这里是出于内存分配策略被浪费掉的内存空间。

内部碎片:实际上已经指派给某个分配,但是逻辑上无法被这个分配利用的资源。这通常是由于分配粒度导致的;如果实际分配的粒度和分配请求的粒度不一致,每次分配的资源数目要向上取整到分配请求的粒度,造成浪费。这些因为取整而额外多出来的内存就是内部内存碎片。如果分配的粒度与请求的粒度是一致的,不存在内部碎片。

改进        单固定块简单,但是内部碎片实在是太多了。较小的内存分配实际上可以用较小的内存块。如果能维持多个不同大小的内存块,就有望改善这个问题。

多固定块法    在单固定块的基础上修改一下,维持多个内存块池。每次动态分配的时候,从最接近的能满足大小的内存池中分配一整块。

例子回顾    重新考虑1MB和100MB分配的例子。假设维持两个内存块池,各包含1MB和100MB的块,且池内所含的内存一样多。这种情况下,

(1)两个内存块池各包含多少内存块?(2)若每次分配都是1MB,完成最大次数的分配后,浪费的资源是多少?

 

 

 不会产生内部碎片,但是外部碎片仍然无法避免。因为分配出去的每一小块一定会利用,但是可能会因为每一小块太小而无法进行分配,所以仍然可能会有外部碎片。

 

 

 

 

1.2程序间的分配

 

二、进程与内存隔离

2.1虚拟地址

回顾 略

2.2进程的描述

 

 

 

 

 

2.3内存隔离机制

 

 

 

 

 

三、内存的活用

3.1请求分页

 

3.2替换算法

 

 

 

 

 

 

 

 

 

3.3内存映射

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
基于hal库的OLED显示屏驱动C语言实现源码.zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip基于hal库的OLED显示屏驱动C语言实现源码.zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值