当前位置: 首页 > news >正文

网站开发的经费预算seo网页优化公司

网站开发的经费预算,,seo网页优化公司,电脑培训班在哪里报名,华夏名网网站建设教程目录 引入问题 测试代码 引入地址空间 故事1: 故事二: 解决问题 为什么有虚拟地址空间 扩展 扩展1(没有地址空间,OS如何工作) 扩展2 (代码只读深入了解) 扩展3(malloc本质…

目录

引入问题

测试代码

引入地址空间

故事1:

 故事二:

解决问题

为什么有虚拟地址空间

扩展

扩展1(没有地址空间,OS如何工作)

 扩展2 (代码只读深入了解)   

 扩展3(malloc本质)

 扩展4 重新理解地址空间


引入问题

 

我们引入一个问题,这种模型如果不是内存,那应该是什么?

 

测试代码


#include <stdio.h>
#include <assert.h>
#include <unistd.h>int g_value =100;//全局变量int main()
{pid_t id =fork(); assert(id>=0);if(id==0){//childwhile(1){printf("我是子进程,我的id是:%d,我的父进程是:%d,g_value:%d, &g_value: %p\n",\getpid(),getppid(),g_value,&g_value);sleep(1);g_value++;//只有子进程会进行修改}}else {//fatherwhile(1){printf("我是父进程,我的id是:%d,我的父进程是:%d,g_value:%d, &g_value: %p\n",\getpid(),getppid(),g_value,&g_value);sleep(2);}return 0;}
}

引入地址空间

故事1:

假设有一个有10亿美金的大富翁,其有四个私生子,且彼此不知道彼此不存在人,四个都以为自己是唯一继承人,富翁跟A说:“好好努力做生意,以后我的家产都是你的”;富翁跟B说:“好好努力,以后我的家产都是你的”;富翁跟C说:“好好努力,以后我的家产都是你的”;富翁跟D说:“好好努力,以后我的家产都是你的”,跟ABCD画大饼,画的饼也要管理起来,先描述,再组织,饼->进程地址空间,本质就是一个内核数据结构,struct mm_struct{}

 

 故事二:

小花VS小胖,两个小学生,闹了矛盾,最后在桌子上化了个线,画线的本质:区域划分!

区域划分:对线性区域进行1指定的start和end即可完成区域划分

 

        两人相安无事了一阵子,过了一段时间,双方中的一方通过暴力扩张,已经占有整个桌面的70%甚至80%,该种行为我们称为扩大区域 ,修改start\end值即可。

解决问题

        我们知道数据和代码真正只能在内存中!

 

        fork在返回的时候,父子都有了,return两次,id是不是pid_t类型定义的变量呢?返回的本质就是写入、谁先返回,谁就让OS发生写实拷贝  

        同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不同的物理地址

 

 

为什么有虚拟地址空间

1 防止地址随意访问,保护物理内存与其他进程

2 将进程管理和内存管理进行解耦合

3 可以让进程以统一的视角,看待自己的代码和数据

扩展

扩展1(没有地址空间,OS如何工作)

        如果没有虚拟地址空间,OS如何工作??

        这种没有虚拟地址空间的,会依靠代码存储在物理空间的具体位置来进行工作。

        进程管理与内存管理耦合

如果有虚拟地址空间,进程工作并不关心其存储在物理内存中的具体位置,解耦合

 扩展2 (代码只读深入了解)   

          代码是只读的(深入了解)——代码所限定的区域是正文代码,虚拟地址空间经过页表映射,其权限位写的都是r,对应的只能读取

 扩展3(malloc本质)

         申请空间成功但是暂时不用,闲置状态,也会造成浪费

malloc先申请一个空间,假设我们在堆区上申请一个空间,即将堆区扩大,往上申请,然后将虚拟地址填入页表,但是物理地址暂时不填,同时也不在物理地址中申请空间,调用malloc就直接返回。采用缺页中断的方式

 

 扩展4 重新理解地址空间

        我们的程序在被编译的时候,没有被加载到内存,但是我们的程序内部也有地址

       

         虚拟地址这样的策略不止会影响OS,我们的编译器也遵守这样的规则!

在Linux中可编译程序ELF格式,源代码被编译的时候,就是按照虚拟地址空间的方式对代码和数据早早地编好了对应的编制

        操作系统在执行main函数之前,还有一定的函数,例如startup函数,所以起点在用户角度看来像是main函数,但是实际不是

 

 进程的代码和数据必须一直在内存中吗?(X)

http://www.yayakq.cn/news/852395/

相关文章:

  • 阿里服务器怎么做网站服务器吗潍坊制作网站软件
  • 网站制作费用申请网站怎么做短信接口
  • 找公司建网站报价企业网站建设过程
  • 福建有没有网站做鞋子一件代发可以自己制作广告的软件
  • 襄阳php网站开发手机营销软件
  • 软件网站开发团队名称做网站需要哪些步骤
  • 西安哪家公司网站做的好企业信用信息查询公示系统全国
  • 网站开发的成本wordpress 商业授权
  • 园区网互联及网站建设项目科技经济导刊官网
  • 做网站需要准备资料做特卖的网站怎么赚钱
  • 联通公司网站谁做的做租人网站犯法吗
  • 做网站 设备软件开发项目报价模板
  • c 网站开发教程 购物网站大连建设网水电费查询网址
  • 海安建设银行网站wordpress导入
  • 网站域名在哪里申请宁波seo网络推广外包报价
  • 深圳网站定制开发3d视频制作公司
  • 重庆营销型网站建设上海做网站哪家公司好
  • 免费做毕业视频的网站网站建设采用thinkphp框架的优势
  • h5制作网站 有哪些怎么在wordpress免费注册博客网站
  • 花生壳网站建设企业所得税优惠政策2021年最新
  • app应用下载网站源码网络营销的目标
  • 海口网站建设策划方案网站举报后还是没封掉
  • 网站登录和权限怎么做免费企业网站建设
  • 哪个网站可以做装修效果图上海网络推广服务公司
  • 青岛做网站推广公司哪家好品牌vi形象设计公司
  • 企业网站要怎么建设集安网站制作
  • 电商网站模板素材做网络推广
  • 有什么兼职做设计的网站好黑马程序员学费多少钱
  • 关键词挖掘站网百度生成手机网站
  • 网站的导航栏怎么做seo排名教程技术