
获得徽章 6
- 1 KB 大小的内存能不能运行一个 2 GB 的程序?
先说答案,能。
程序运行时,本应需要一段连续的内存,但是现实中由于内存碎片的存在,往往不能满足这一要求。比如运行一个程序需要 128 M 大的内存,但是内存中只有一块连续的 100 M 的内存和一块连续的 64 M 的内存,这样的话,程序就运行不了了,明明内存中空闲内存大于 128 M,程序却运行不了,很不合理。于是人们想到了内存分页的办法。
内存分页就是说,加载程序时不再是给程序分配一整块连续的内存,而是把程序所需的内存分成一个个固定大小的内存页,按页去加载,内存页之间不必是连续的,只要知道这个程序所需的内存页都分布在哪就行。
内存分页是操作系统实现的,对于程序来说,它可以把自己使用的内存看作是连续的,操作系统会将程序中使用的内存地址映射到物理内存。
内存分页不仅解决了内存碎片的问题,也降低了内存交换的成本,而且加载程序时也不需要一次性把整个程序都加载到内存,操作系统可以根据需要去加载部分内存页,这使得小内存运行大程序成为可能。Linux 默认的一个内存页大小是 4 KB。用下面这个命令可以查看:
getconf PAGE_SIZE
那么回到刚才的问题,如何用 1 KB 的内存去运行 2 GB 的程序?我们可以把内存页大小设置为 1 KB,每次只加载 1 个内存页,需要哪一页,就把哪一页从硬盘上交换到内存里面。不过由于磁盘I/O速度远远小于内存的I/O速度,这样运行程序会很卡顿。展开517 - 昨天发了条早起给媳妇做🍱的沸点,然后评论区就有人在说“舔狗舔狗”啥啥之类的,媳妇在孕期为了能尽量少吃外卖快餐我每天早起给她准备中午吃的🍱,就这也被说成“舔狗”,搞笑,拜托
有些大老爷们收起你们那高傲的大男子主义吧!
你们说我“舔狗”啥的,我也不少块肉,我不但做饭我还做家务打扫卫生,能力所能及的我都干,怎么滴,给你们这群高傲的大男子主义者丢脸了?有些大老爷们总觉得有些事就得女人做,男人做就是丢人,总觉得“我是男人我怎么能伺候女人呢?应该女人伺候我才对,家里我才是老大,都得听我的!”,这是病,得治!
尊重彼此,给彼此自己力所能及的关爱,对别人好也是对自己好,要不等你老了躺病床上了看谁还会不离不弃的守着你。
借某沸友的一句评论“人有生老病死三千疾,唯有傲慢偏见最难医!”
展开4537