欢迎光临散文网 会员登陆 & 注册

内存分页原理幼儿园版

2020-05-25 19:26 作者:程安絮  | 我要投稿

  你是个打工仔,职位是内存管理员,工作是每天帮职位叫程序的家伙分配网格,存数据到网格,或从网格取数据。每个网格可以存1byte数据,我们简称为b。这里有十亿个b,按顺序从0到九亿九千九百九十九万九千九百九十九编好了号。

  为了零活分配又避免浪费(内存碎片)把这些b100个一组分开,每一组称为一页。原来的编号分成了页编号和偏移编号,比如584b变成了5页84b。

  刚说着来了一个名字叫快播的程序要申请一百万零一b的网格,你马上开始给它分配网格,因为网格是按页分配,首先要记算需要多少页。一百万零一b除以100等于一万页余一b,因为网格按页分配,就算只余一b也要多分配一页,所以是一万零一页。

  先从0页开始找,9到157页空着,于是你在地址映射表上记上:0对9、1对10……148对157。第二段空页是685到1085,你记下149对685、150对686……549对1085。这时,名字叫360的程序下班了,他占用的网格空了出来。其中有一段在1085页前面:153到392页空了出来,你马上把它们利用了起来。记下550对153、551对154……788对392。然后接着找空页……

  终于分配好了,你把记好的地址映射表打上快播的标签然后放好。这时一个叫qq的程序要把9b到571b的数据取出来。首先你把他给你的地址转化为页地址加偏移地址的形式:0页9b到99b,1页全部,2页全部,3页全部,4页全部,5页0b到71b。

  你拿来带着qq标签的地址映射表查了起来。0对173,于是你把173页9b到99b的数据取了出来。1对174,于是你把174页全部数据取了出来。2对378,于是你把378页全部数据取了出来。3对415,于是你把415页全部数据取了出来。4对523,于是你把523页全部数据取了出来。5对1207,于是你把1207页0b到71b的数据取了出来。


内存分页原理幼儿园版的评论 (共 条)

分享到微博请遵守国家法律