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

wordpress设置方法网站优化推广平台

wordpress设置方法,网站优化推广平台,seo课堂,利用电脑做网站目录 1. 程序地址空间分布 2. 两个问题 3. 虚拟地址和物理地址 4. 页表 5. 解决问题 6. 为什么要有地址空间 1. 程序地址空间分布 测试一下#xff1a; #includestdio.h #includestdlib.h #includeunistd.h #includesys/types.hint ga…目录 1. 程序地址空间分布 2. 两个问题 3. 虚拟地址和物理地址 4. 页表 5. 解决问题 6. 为什么要有地址空间 1. 程序地址空间分布 测试一下  #includestdio.h #includestdlib.h #includeunistd.h #includesys/types.hint gal_init 1; int gal_uninit;int main(int argc, char* argv[], char* env[]) {printf(code add:%p\n,main);const char* str hello;printf(str add:%p\n,str);printf(init global add:%p\n,gal_init);printf(uninit global add:%p\n,gal_uninit);char* heap1 (char*)malloc(10);char* heap2 (char*)malloc(10);char* heap3 (char*)malloc(10);char* heap4 (char*)malloc(10);printf(heap1 add:%p\n,heap1);printf(heap2 add:%p\n,heap2);printf(heap3 add:%p\n,heap3);printf(heap4 add:%p\n,heap4);printf(stack1 add:%p\n,heap1);printf(stack2 add:%p\n,heap2);printf(stack3 add:%p\n,heap3);printf(stack4 add:%p\n,heap4);int i 0;for(;i argc; i){printf(%s:%p\n,argv[i],argv[i]);}printf(env add:%p\n,env);return 0; } 运行结果 code add0x40057dint a add0x7ffc2b16df7cstatic int b add0x601044str add0x40081dinit global add0x60103cuninit global add0x601048heap1 add0x2301010heap2 add0x2301030heap3 add0x2301050heap4 add0x2301070stack1 add0x7ffc2b16df70stack2 add0x7ffc2b16df68stack3 add0x7ffc2b16df60stack4 add0x7ffc2b16df58./myproc0x7ffc2b16e078env add0x7ffc2b16e088 这些都是之前就了解过的内容今天详细聊聊地址空间 2. 两个问题 1. 安全问题 这些程序都在同一个地址空间中如果发生了越界访问野指针问题这些问题该怎么办 2. 一个特殊现象问题 #includestdio.h #includeunistd.h #includestdlib.hint main() {int num 0;int ret fork();if(ret 0){int i 3;while(i--){printf(I am child,num %d,num %p\n,num,num);sleep(1); }num 1;while(1){printf(I am child,num %d,num %p\n,num,num);sleep(1);}}else{while(1){printf(I am father,num %d,num %p\n,num,num);sleep(1);}}return 0; } 为什么父进程和子进程中的num同一个地址但是却有两个值 3. 虚拟地址和物理地址 在Linux地址下这种地址叫做 虚拟地址 我们在用C/C语言所看到的地址全部都是虚拟地址 物理地址用户一概看不到由OS统一管理 由OS负责将 虚拟地址 转化成 物理地址  上面的地址空间分布就是虚拟地址每个进程被创建就会有对应的虚拟地址表 虚拟地址表在linux下就是由mm_struct结构体来描述的 Linux下的进程管理PCBtask_struct就有一个指针指向mm_struct,程序和虚拟地址空间联系起来了 4. 页表 OS是如何把虚拟地址转换成物理地址的呢 页表 页表是一种key-value的数据结构记录虚拟地址和物理地址一一映射关系 task_struck有一个指针指向页表 页表里的值虚拟地址物理地址是哪里来的呢 代码在被编译器编译后的每一条语句每一个函数都会有对应的地址这个地址是逻辑地址和虚拟地址一样作为页表的虚拟地址。当程序被加载到物理内存中时就会有对应的物理地址然后在对应到页表里面。 程序被执行时使用的地址是虚拟地址需要用页表映射到物理地址  5. 解决问题 到这里我们就可以解决第一个问题每个进程都有一个虚拟地址和页表这些都由OS来维护在页表对应的每一个物理地址后面都有一个像文件访问权限一样的标志如果这个物理地址没有访问权限就会直接报错终止。有效的保护了物理内存。 第二问题的答案就在图中fork函数创建子进程时其实就是拷贝了大部分对应的task_struct,mm_struct和页表因为父子进程之间大部分属性都一样但当需要改变num的值时子进程就在物理空间上重新开了一块空间拷贝父进程OS也会更新对应的页表映射关系。这个叫做写时拷贝。但是虚拟地址还是一样的只是映射关系发生了变化。所以num相同的虚拟地址不同的值。 6. 为什么要有地址空间 安全性有效的保护了物理内存 因为地址空间和页表是OS创建并维护的凡是想用地址空间和页表进行映射都需要在OS的监管下来进行访问。 内存管理模块和进程管理模块完成了解耦 提高内存的利用率 用户申请的物理空间malloc和new其实是在虚拟地址上申请的OS通过延迟分配提高物理内存的利用率 地址空间和页表的存在可以将内存分布有序化按照地址空间分布和进程的独立性不同的进程映射到不同的物理空间每一个进程不知道其他进程的存在 对于程序的分批加载当程序刚刚新建的状态下进程就只创建内核结构程序和数据还没有加载到内存中。 程序的分批换出当进程短时间内不会再被执行了比如阻塞了进程的数据和代码被换出到磁盘中的swap区页表的映射关系也改为磁盘地址。这个过程就叫挂起。 完写的不好的地方多有体谅还在学
http://www.w-s-a.com/news/566915/

相关文章:

  • 水果网站建设方案书wordpress get_the_category
  • 第一ppt网站官网买域名价格
  • 网站 报价单自己做的网站如何上传
  • 天津网站建立辽宁建设工程信息网2017年定额人工费系数
  • 柳州网站优化搜索引擎优化方法案例
  • 什么网站比较少人做响应式网站开发周期
  • 公司网站欢迎语工作期间员工花钱做的网站
  • 新网站该如何做网站优化呢网络营销网站设计
  • 旅游门户网站模板下载做策划网站推广怎么写简历
  • 建设隔离变压器移动网站wordpress动态导航
  • 平潭建设局网站中国免费素材网
  • 虚拟主机可以做视频视频网站吗做爰全过程免费的视频网站有声音
  • 专业做家电经销的网站网络管理系统有哪几部分组成
  • 自学网站编程网站名称需要注册吗
  • 网站后台管理系统怎么添加框安徽省工程建设协会网站
  • 雨花台网站建设wordpress找回
  • 四川哪家网站推广做的好网站开发人才需求
  • 什么网站可以找手工活做一站式服务平台官网
  • 做购物网站的步骤网站核心词如何做
  • 做品牌设计网站公司网站没做301怎么做301
  • 服务流程企业网站wordpress文章的使用
  • 网站开发组合淘宝网站开发选什么类目
  • 广东手机网站建设个人电脑做网站主机
  • 健身俱乐部网站开发文档建一个网站需要什么条件
  • 买的网站模板怎么做建设行政管理部门网站
  • 怎么让百度多收录网站关键词seo深圳
  • 陕西交通建设集团网站体检个人网站设计模板田田田田田田田田
  • ae模板网站推荐安徽建筑信息平台
  • 新网站建设代理商wordpress模板商店
  • 中国十大设计素材网站wordpress发布失败