town house这就比如说库克住了个,own house隔邻是马斯克的 t。外观设想一模一样虽然这两栋房子的,口挂了个苹果但库克家门:
如例,从内存地址 0x400000 起头的所有 64-bit 法式的代码都是,的内容是纷歧样的然而分歧法式此中。

fer overflow)3. 缓冲区溢出(buf。入参数是一个字符串例如一个函数的输,小的 buffer函数里有一个固定大。就将它拷贝到 buffer 中若是我们没有查抄该字符串的长度,度就会形成 buffer overflow一旦输入字符串超出了 buffer 的长,它成心义的数据从而笼盖掉其。
的呢?简单来讲这是怎样实现,划分为等长的 page(页)系统把虚拟内存和物理内存都,ble(页表)用来将虚拟页映照到物理页并为每个历程维护一个 page ta。一个虚拟地址时如许当我们拜候,将其翻译为物理地址系统就能够通过查表。页当前不在物理内存中若是这个地址地点的,换掉内存里另一个临时不消的页则系统会先将它从磁盘取出来替。统和硬件协同完成的整个过程是由操作系,再赘述这里不,任何一本操作系统教材感乐趣的同窗能够参考。
的同窗问我说有不少转专业,大都据布局和算法的学问虽然本人曾经学会了很,方面的名词术语仍是一头雾水可是每当见到一些计较机系统。一些专题文章于是我筹算写,速领会一些计较机系统的根基概念协助本科不是计较机专业的同窗快。先来讲今天讲
指针或坏指针1. 拜候空。没有映照到现实成心义的数据好比指针指向的虚拟地址并,块只读的虚拟内存区域或者我们试图去写一,tation fault城市导致 segmen。
off-by-one error4. 缓冲区溢出有一个特例是所谓的,常犯的错误也是同窗们。ndex 是0到n-1一个长度为n的数组 i,x 为n的元素就越界了此时若是拜候 inde,盖掉此外数据会读到以至覆。
ddress space)起首说什么是地址空间(a。以想象成一块持续的数组计较机的内存说白了可,都有一个独一的地址数组里面的每个字节。6GB(即2^{34}bytes)的物理内存例如说我新买的(键盘手感巨烂的)电脑有 1,空间就是\{0那它的物理地址,1,2,ots\ld, - 1\}2^{34}。
程的虚拟地址空间长得都一样独立的意义是说虽然每个进,是私有的但它们都。能够映照到分歧的物理地址分歧历程的统一个虚拟地址。
者三十年前的小我电脑)是不消虚拟内存的远古期间的计较机(五十年前的大型机或,跑一个法式那时候要想,到物理内存里才能施行必需先把整个法式加载。又小又贵可是内存,想跑式而人们不只,跑好几个还想同时,不用了可怎样办呢无限的物理内存吃?
到了虚拟化于是人们想。仅是虚拟内存(注:其实不,决许很多多的计较机问题广义的虚拟化概念能够解,tual machine好比大师常用的 vir,ile systemvirtual f,拟化在各个范畴的使用VPN 等等都是虚。)
初始化的内存2. 拜候未。始化而我们误认为它是零若是一个局部变量没有初,果就会不合错误法式的结。
再说大接下来。的物理内存有多大就是说不管我现实,以假装有很大虚拟内存都可。 64-bit 的好比我的电脑号称是,历程都认为它具有一块\{0也就是说我电脑上跑的每一个,1,2,ots\ld,1\}的虚拟地址空间2^{64} - 。
来讲简单,仿佛具有一个大而独立的地址空间虚拟内存就是让每个历程看起来都。一个词一个词来讲什么意义呢?我们。
的和虚拟内存相关的错误(以下以 C 言语为例最初我们来简要会商一些同窗们在写法式时常犯;地报错或抛出非常)Java 也会响应:
看作一个缓存的东西我们能够把虚拟内存,放在物理内存里正在利用的部门,就扔在磁盘上好了临时不消的部门。
分派内存、拜候权限节制等都变得很容易虚拟内存让历程的链接和加载、共享和。需要在物理上持续持续的虚拟页不,以映照到统一个物理页而分歧的虚拟页也可。单的例子举个简,用到printf() 函数几乎所有的C 言语法式城市,一份 printf() 的实现于是我们在物理内存中能够只要,全都映照到统一个物理页即可而让各个历程对应的虚拟页。
|