操作系统的内存分配机制(分层的逐层外包分配模式)

操作系统中有专门负责分配内存的进程,它会为那些在操作系统级别上使用内存的软件系统分配一块内存。

所谓的编译时内存分配(静态内存分配),即是为程序本身能在下一个阶段(运行阶段)的运行而在内存上的程序区分配内存空间,还有程序里的非指针变量(如原子变量、数组、结构体、类等)分配内存空间:stack

例如,oracle软件系统启动的时候,oracle软件系统本身要运转的话自然需要一些内存上的程序区的内存空间用于oracle软件系统本身的运行。

所谓的运行时内存分配(动态内存分配),即是为程序里的指针变量分配内存空间:heap

例如,而oracle软件系统运行时,(oracle软件系统中具体一个进程)要处理的那些数据,oracle软件系统要为存放这些数据向操作系统申请分配一块内存空间(这种内存空间在内存的什么区上,忘了,暂且叫用户可分配的内存区吧,非操作系统的进程都叫用户(?))。然后,通过类似指针变量这样的工具指向这块区域。


再例如,oracle软件系统中的数据库实例启动时,oracle软件系统也会要操作系统分配一块内存空间给oracle软件系统,至于这块内存空间怎么用,操作系统就管不了,这是由oracle软件系统来决定了,即oracle软件系统中也有专门负责分配内存的进程,当oracle软件系统的其他进程要分配内存空间时,就不用找操作系统中有专门负责分配内存的进程,而是找oracle软件系统中专门负责分配内存的进程。

oracle软件系统中的一个服务器进程启动时,oracle软件系统也会要操作系统分配一块内存空间,即PGA给该服务器进程。之后属于服务器进程的会话们(执行SQL语句时)启动时,就oracle软件系统中专门负责分配内存的进程申请分配内存。

又如,



摘自《

[深入解析Oracle.DBA入门进阶与诊断案例].盖国强.扫描版.pdf



由此,看出一个模式,类似于:

一个全国的总代理(操作系统),手上有全国所有货物(整个内存空间)。

全国的总代理(操作系统)向他的下一级的经销商们(即应用程序系统,如oracle软件系统)按照一定规则分配给他们每人不一样多数量的货物(部分内存空间)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值