[计算机知识串讲]从下到上看内存+os操作系统的内存简介+java中的内存

课程内容

目录
**

内存条、总线、DMA

**、
内存调用、OS内存管理与分类。

总线在主板上:数据总线、地址总线、i/o总线

CPU与内存条是通过地址总线和数据总线直接相连的

南桥里有一个DMA控制器芯片**(与并发、多线程相关)**
在这里插入图片描述
DMAC 直接内存访问控制器
在这里插入图片描述
当CPU把活交给DMAC时、会顺带把所有总线控制权给DMAC、所以DMAC可以进行数据访问和读写。

PS:DMAC并不是一直掌握总线当控制权,而是切片这种,1ms交换,不然的话读文件的时候鼠标键盘会失灵。同时也正因为如此,访问内存大文件传输玩游戏会卡顿? :(

DMAC和CPU不能同时使用总线;
在DMA方式下,CPU和总线是隔离的

【OS】操作系统的内存管理

为什么要有逻辑地址?
1.程序无法知道可用的物理地址,所以必须作出映射。
操作系统是多进程的,当前进程可能操作的地址在其他进程中正在使用,所以说除非是单进程机器,多进程机器需要有逻辑地址,映射。

逻辑地址与物理地址如何映射?内碎片外碎片是啥?
在这里插入图片描述
这个不太好,1.我们无法知道程序使用的具体内存,如果划分个最大内存会造成实际使用往往没有辣么多,造成***内碎片***。 2.当程序运行完内存会被释放,如下图,新程序进不来,外碎片在这里插入图片描述
为了减少碎片问题,进行分页
在这里插入图片描述
为了区分逻辑内存和物理内存

把逻辑内存分为多个页(page)、物理内存分为多个帧(page frame)

并通过页表联系,如下图
在这里插入图片描述
每个进程映射关系是独立的,所以每个进程都有独立的映射表
在这里插入图片描述
在这里插入图片描述
https://www.bilibili.com/video/BV1u7411z7Sv?from=search&seid=8912249440231407534

这个视频8分处有一道计算物理地址偏移量的题目,待及时解决0.0

很多时候如果我们又打开游戏又放歌又打开另外一个游戏打开很多进程,可能会造成他们使用的内存大于我们计算机的内存条大小总和,这个时候就需要通过分页把不着急的内存放到磁盘里。(分页)
在这里插入图片描述
好的,,讲讲页表访问的优化
在这里插入图片描述
在这里插入图片描述
linux下的内存情况
在这里插入图片描述
在这里插入图片描述

内存相关的系统调用

系统调用是用户态切内核态的方式之一,申请内存就需要使用系统调用。

以c语言 malloc函数为例,malloc函数是c语言申请内存的函数,他其实是sbrk和mmap封装好的函数,内存申请小于128k时调用sbrk。
在这里插入图片描述
可见,sbrk申请内存是连续的。
在这里插入图片描述
brk1 实际上申请了4k内存 4096个字节

java中的内存

https://www.bilibili.com/video/BV1454y1X7rk?p=5
等尚硅谷课学到一定程度在学习吧

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值