linux下内存管理简介

news/2024/7/20 16:04:48 标签: 内存管理, 操作系统

计算机中的存储器分为:主存和辅存。其中需要指明的是主存是可以被处理器直接访问的,而辅存是不能被处理器直接访问的。主存的容量一般相对于辅存而言是较小的,所以在现代的计算机体系中,通常使用的是耳机存储模式。利用辅存的大容量来提供较大的存储空间,存储准备运行的程序和数据,当需要时,在将其载入主存中。

计算机中的存储管理都是由操作系统来实现的。但是需要说明的是操作系统在实现存储管理时需要硬件的支持。比如说:用户程序使用的都是逻辑地址,而处理器在执行程序时需要使用的是绝对的地址来实现寻址的操作。于是操作系统大众存储管理模块就必须配合计算机中的硬件俩实现将逻辑地址向绝对地址的转换。

1程序的重定位

在多道程序设计中,主存中同时存放了多个用户的作业(可以粗略的认为是进程),操作系统根据内存的的使用情况来决定分配那些内存空间给应用程序。于是用户程序就不能使用绝对地址。为了方便用户每个用户都可以认为自己作业的程序和数据都是存放在一组以“0”地址开始的连续的空间中的。用户程序使用的是逻辑地址,由“逻辑地址”对应的存储空间成为“逻辑地址空间”。

为了保证每个作业的正确执行,必须根据分配给作业的主存储空间对作业中的指令和数据进行重定位,即是把0逻辑地址转换为绝对地址(物理地址)。重定位的方式有两种:静态重定位和动态的重定位。

静态重定位是比较简单,在装入该作业时,吧作业中的指令和数据同时转换为绝对地址,早作业执行的过程中不包含地址的转换。

动态的重定位,在作业执行的过程中,每一条指令都是由硬件的转换机构将指令的逻辑地址转换为绝对地址,它需要硬件的支持,即动态的重定位是计算机的软件和硬件共同执行的结果。在硬件线路上需要一个基址的寄存器和地址转换电路来实现。处理器没执行一条指令都会把指令中的逻辑地址与基址寄存器的值相加得到绝对地址,然后按照绝对地址来方位主存储器。

2页式存储管理和段式存储管理

操作系统之所以使用也是管理主要是为了在计算机上能够运行比计算机物理内存更大的用户程序。在物理上将实际的内存划分为一个个所谓的“块”,因此要求应用程序逻辑地址分页,也得大小和块的大小事相同的。这样就把作业的信息加载到内存中的“一块”上。也是管理程序的重定位是采用的是页表的方式来实现的。

采用页式管理时,提供给用户的逻辑地址都是连续的,用户在编写较大的程序时往往感到很不方便。用户希望他们的程序是由若干的段来组成的,例如:一个应用程序可以由一个主程序,若干个子程序,符号表,栈等若干段组成。每一段有自己的逻辑地址,每一段的逻辑地址都是从“0”开始,段内之间的地址是连续的,段与段之间的地址可以是不连续的,这主要是有操作系统来实现的。同时每一段可以独立的编写。

转载于:https://www.cnblogs.com/xuqiang/archive/2010/01/17/1953786.html


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

相关文章

OpenCV、OpenCL、OpenGL、OpenMP的区别

OpenCV OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个开源发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ru…

Thread 与Runable区别

Runnable是Thread的接口,在大多数情况下“推荐用接口的方式”生成线程,因为接口可以实现多继承,况且Runnable只有一个run方法,很适合继承。 Thread本身就是实现了Runable接口 在使用Thread的时候只需要new一个实例出来&#xff0c…

最好懂的IC芯片制造流程详解,值得收藏!

导读:芯片,又称为集成电路,是计算机等电子设备最重要的功能载体,是中央处理器CPU的“灵魂”!小小的芯片是如何容纳几千万的晶体管?芯片是如何设计和制造的?未来的芯片体积能小到什么程度&#x…

电脑操作技巧

一、巧解任何电脑的开机密码 小小一招巧解任何电脑的开机密码,无需任何工具,无需放电,任何电脑当开机需要密码时,只需将机箱打开,把里面的声卡或其它任何一个零件拔下来,然后通电启动,主板自检…

详谈SSD硬盘接口: SATA、mSATA 、PCIe、M.2和U.2

SSD固态硬盘,彻底打破了温彻斯特结构的机械硬盘多年来在电脑硬件领域的统治。SSD数倍于HDD机械硬盘的传输性能,让普通用户和发烧玩家的体验均成倍提升。 在这场存储革命中,为了实现更快的速度、更多的使用环境、更好的体验,SSD的接…

学习事务

事务和存储过程的联系create procedure SP_TransactionAccountBalance float,AccountName nchar(20)as --声明一个变量用来标记事务,如果更改数据没错就提交事务,否则回滚declare Sign bitselect Sign0 --事务的开始begin transaction --修改 客户ID1 的…

gcc/g++/clang/cl编译器

IDE: 现在的IDE把编译器集成进来了,包括代码编辑器编译器。 GNU:GNUs NOT UNIX,鄙视UNIX不开源) GCC----GNU Compiler Collection 即GUN编译器集合,包括gcc和g编译器,它可以编译C、C、JAV、Fortran、Pascal、Object-C、Ada等语言…

Lamy钢笔和Keny活页本

最早是在某本IT杂志上看到这个钢笔品牌的,该杂志在搞一个Lamy钢笔的团购,从没听说过有这么个品牌,因此就google了一下,原来是德国的一个钢笔品牌,东西都是德国原产,后来找到了ipenbbs,在论坛里中…