linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》
1.直接使用物理地址
(1)安全风险:
用户有可能在程序中操作不当,直接操作了某个未知的物理地址,导致数据被改写。有可能导致那部分内存的程序或者设备损坏。
使用虚拟地址的话,会有相对应的保护机制。
(2)地址不确定
众所周知,编译完成后的程序是存放在硬盘上的,当运行的时候,需要将程序搬到内存当中去运行,如果直接使用物理地址的话,我们无法确定内存现在使用到哪里了,也就是说拷贝的实际内存地址每一次运行都是不确定的,比如:第一次执行a.out时候,内存当中一个进程都没有运行,所以搬移到内存地址是0x00000000,但是第二次的时候,内存已经有10个进程在运行了,那执行a.out的时候,内存地址就不一定了。
(3)效率低下
用的时候,我们一般的办法是将不常用的进程拷贝到磁盘的交换分区中,好腾出内存,但是如果是物理地址的话,就需要将整个进程一起拷走,这样,在内存和磁盘之间拷贝时间太长,效率较低。
2.虚拟地址的实现
虚拟地址实际上就相当于在物理地址和进程间引入一个第三者,一般实现方法有两种:分段映射和分页映射。
分段映射能够解决安全隐患、地址不确定问题,但是对于效率问题仍然没有很好的解决。因此引出了新的方法:分页方式。分页的方式实际上就是讲内存以4KB为单位分页(一页4KB),然后在Linux内核中提供页项目表、页表,一个大小占多个页的进程,在运行的时候,并不是所有的也都在运行,这时候将运行的页拷贝到内存,这样就缓解了效率的问题。
原文:https://www.cnblogs.com/zhuangquan/p/12157266.html
linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》相关推荐
- linux系统查看串口占用,Linux 系统串口信息查看
先确认系统启动的时候串口的信息. ECM_5412@chenfl:~$ dmesg | grep tty [ 0.000000] console [tty0] enabled [ 2.511678] ...
- linux php进程端口占用,linux如何查看端口占用情况
在linux中可以使用lsof和netstat命令来查看端口占用情况,其中lsof语法为"lsof -i:端口号",netstat语法为"netstat -tunlp | ...
- linux 物理内存不知道怎么占用,Linux系统下如何查看物理内存占用率
Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如: Mem: 4086496k total, 4034428k used, 5 ...
- linux查看server端口占用,Linux查看端口占用的命令
Linux查看端口占用的命令 apt-get install lsof lsof -i:端口号 lsof常用命令 lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件 ...
- linux system查看内存占用,Linux查看系统内存占用
1.查看内存情况 free -h 解释下基本概念 Mem 内存的使用信息 Swap 交换空间的使用信息 total 系统总的可用物理内存大小 used 已被使用的物理内存大小 free 还有多少物理内 ...
- Linux查看进程是否占用,Linux 下查看哪个进程占用swap空间
#!/bin/bash echo -e "PID\t\tSwap\t\tProc_Name" # 拿出/proc目录下所有以数字为名的目录(进程名是数字才是进程,其他如sys,ne ...
- Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)
线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...
- linux 程序占内存,linux概念之程序占用内存
1.在linux下,查看一个运行中的程序,占用了多少内存,一般的命令有 (1). ps aux: 其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存 ...
- linux查看内存cpu占用
linux查看内存cpu占用 top 命令 按q退出 可以添加额外选项选择按进程或按用户查看 如: top -u gitu PID:进程id PR:进程的优先级别,越小越优先被执行 NInice:值 ...
- (DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device【转】
转自:https://blog.csdn.net/lichengtongxiazai/article/details/38942033 Linux kernel 是怎么将 devicetree中的内容 ...
最新文章
- 2014年十大战略性技术趋势
- jQuery中get()和eq()的区别
- 信息系统项目管理师历年论文题目
- /usr/bin/ld: cannot find -l*** 这里***可以指lapack等
- Java知识系统回顾整理01基础03变量03字面值
- CoordinatorLayout 使用综述系列(二)与AppBarLayout结合上下联动效果
- 环形链表得golang实现
- 阿里云申请免费ssl证书并配置nginx
- CCOMBOX下拉弹出框,因属性对话框自动隐藏而弹出框没有隐藏问题
- 高中计算机会考教案,高中信息技术会考模拟试题讲课教案.pdf
- (01)f103,4pin四脚的 oled(01)
- IGBT工作原理,解析IGBT工作原理及作用
- codesmith mysql 模板_CodeSmith代码自动生成器 JAVA模版的制作---CodeSmith+MySQL+MyEclipse 10...
- python自动化webdriver_轻松自动化---selenium-webdriver(python) (六)
- AI新贵「蓦然认知」首秀,这个和百度有点关系的公司要让机器认知世界
- 服务器e5系列和e5v4系列,至强E5-2600v4系列CPU一览表
- 用docker跑机器学习环境
- C++对于文件的操作(4)——更改文件指定位置的数据(在新旧数据长度不一致的情况下)
- 错误笔记:JavaWeb:请求的资源[/$%7BpageContext.request.contextPath%7D/login]不可用
- maven工程私服仓库配置(阿里云仓库)