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

网站备案负责人幕布照wordpress用户管理

网站备案负责人幕布照,wordpress用户管理,晋江做任务的网站,wordpress用cdn 作者简介#xff1a;დ旧言~#xff0c;目前大二#xff0c;现在学习Java#xff0c;c#xff0c;c#xff0c;Python等 座右铭#xff1a;松树千年终是朽#xff0c;槿花一日自为荣。 目标#xff1a;熟悉【Linux】进程地址空间 毒鸡汤#xff… 作者简介დ旧言~目前大二现在学习JavaccPython等 座右铭松树千年终是朽槿花一日自为荣。 目标熟悉【Linux】进程地址空间 毒鸡汤也许有一天你发觉日子特别的艰难那可能是这次的收获特别的巨大。 望小伙伴们点赞收藏✨加关注哟  前言 学习每一个语言都跟地址扯不开关系这也是学习每一种语言的必修课学习好地址空间对语言的掌握熟练度就是质的飞越我们学习代码知识只是语言的表面像地址空间就比较深层有点抽象不好理解基于这种情况博主给大家带来【Linux】深挖进程地址空间。 ⭐主体 我们从以下学习【Linux】深挖进程地址空间。 简单来讲就是是什么为什么怎么做。 什么是进程地址空间 再次回顾 C/C 学习地址空间时候 地址空间是什么是内存么我们举个栗子 代码如下 #include stdio.h #include unistd.h #include stdlib.h #include assert.hint g_val 100; int main() {pid_t id fork();assert(id 0);if (id 0) {while (1){printf(我是子进程我的id是%d,我的父进程是%d,g_val:%d,g_val:%p\n, getpid(), getppid(), g_val, g_val);sleep(1);g_val 200;}}else{while (1){printf(我是父进程我的id是%d,我的父进程是%d, g_val: %d, g_val: %p\n, getpid(), getppid(), g_val, g_val);sleep(1);}}return 0; } 运行结果 通过上图可以发现子进程的g_val修改成了200但是父进程的g_val始终未改变的。 我们的fork调用之后创建了一个子进程父子进程的代码和数据共享而进程是具有独立性的所以改变子进程的g_val的值并不会影响父进程的g_val这是得益于fork函数采用了写实拷贝的方法实现的 最大的问题是父子进程的地址相同对应的g_val值竟然不一样同一块空间有两个不同的值 这块空间绝不是物理地址(内存)因为物理地址(内存)对应的内容肯定是唯一的不可能会出现同一个变量的地址读取出两个不同的值。 这里的地址实际上是虚拟地址线性地址Linux也有可能叫做逻辑地址。 虚拟空间所以对于我们而言直接使用虚拟地址操作系统再从虚拟地址到页表加载到内存在通过页表映射找到对应的物理内存。也就是说操作系统自动完成。 采用图解的方式 父进程和子进程都有自己的独立的进程地址空间且都有自己的页表结构。子进程由父进程创建所以子进程的地址空间是从父进程拷贝而来刚开始的g_val经过映射指向同一个物理内存所以刚开始看到的都是100。 后来子进程修改了自己地址空间的g_val的值当操作系统通过页表映射发现g_val的值是共享的但是我们知道进程具有独立性所以操作系统为了保证进程的独立性当子进程或者父进程任何一方尝试对共享数据进行写入那么操作系统会在物理内存上重新开辟一块新的内存空间拷贝数据然后在修改映射关系不再指向老的变量在整个修改的过程中和父子进程的虚拟地址没有任何关系只是底层经过页表映射到不同的区域所以我们看到了地址是一样的但是内容却是不一样的这就是现象的由来 如何理解线性地址 以32位计算机为例我们有32根地址线每根地址线对应的数据只有0 1信号那么32根地址线就有2^32中排列组合就有2^32个地址我们的CPU在运算完某些数据之后会进行寻址找到一段地址空间将其存放在内存中内存地址中最小的单位为字节那么2^32个地址占据2^32个字节空间换算出来总的地址空间大小就是4GB因为我们的地址是按照字节号大小依次递增的所以我们就认为地址空间是一个线性结构。 为什么要虚拟地址空间 进程地址空间保证了数据的安全性。 每个进程都有进程地址空间所有的进程都要通过页表映射到物理内存如果进程直接访问物理内存万一进程越界非法访问、非法读写时页表就可以进行拦截而且直接访问物理内存对于账号信息是非常不安全的所以保证了内存数据的安全性。 地址空间的存在可以更方便的进行进程和进程的数据代码的解耦保证了进程独立性的特征 对于进程而言都有独立的地址空间及页表通过页表映射到不同的物理内存上所以一个进程数据的改变不会影响到另一个进程保证了进程的独立性而对于上面我们所说的父进程和子进程而言子进程的地址空间从父进程拷贝页表都指向同一块物理内存但是即使此时的数据是共享的在修改数据的时候也会发生我们所说的写时拷贝保证了进程的独立性 让进程以统一的视角看待进程对应的代码和数据各个区域方便编译器也以统一的视角来进行编译代码。 可执行程序被编译器编译的时候每个代码和数据在内存中已经有虚拟地址了在磁盘上称为逻辑地址也就是说地址空间对于操作系统和编译器都是遵守的。所以当程序被加载到内存成为进程后每个变量/函数都具备了物理地址。 所以我们现在有两套地址 标识物理内存中代码和数据的地址在程序内部互相跳转的时候的虚拟地址         加载完成之后代码的各个区域的地址已经知道。进程被调度时CPU拿到虚拟地址经过地址空间查页表通过映射进行访问查到物理地址往后执行。也就是CPU通过了虚拟地址——页表映射——物理地址执行。也就是在整个CPU运行过程中,CPU并没有见到物理地址用的都是虚拟地址。 另外对于磁盘内可执行程序编译好这个可执行程序的地址不叫虚拟地址是逻辑地址。但是对于Linux而言虚拟地址、线性地址、逻辑地址都是一样的。 虚拟地址与物理地址如何联系 fork在返回时父子进程都已经创建好了这两个进程是独立的是不是就会return两次返回的本质是不是写入谁先return谁就先进行写实拷贝同一块地址是子进程继承父进程的虚拟地址return返回写入后它们就映射到不同的物理空间上了。 结束语 今天内容就到这里啦时间过得很快大家沉下心来好好学习会有一定的收获的大家多多坚持嘻嘻成功路上注定孤独因为坚持的人不多。那请大家举起自己的小手给博主一键三连有你们的支持是我最大的动力回见。
http://www.pierceye.com/news/214116/

相关文章:

  • 建设个商城网站需要多少钱网上商城系统平台官网
  • 软件开发与网站开发的区别最新源码
  • 电子商务网站建设策划中国网站建设公司排行
  • 网站的推广方式组合经验丰富的网站制作公司
  • 北京企业网站建设php制作公司网站首页
  • 保险网站建设网站 为何要 备案
  • 南宁网站设计可以找我wordpress 主题
  • 池州家居网站建设怎么样h5链接是什么意思
  • 网站添加站长统计代码凡科建站登录入口官方正版
  • 淮北做网站的公司有哪些手机网站设计只选亿企邦
  • 网站服务器打不开爱站工具网
  • php网站接口开发wordpress添加作者
  • 网站建设漂亮的模板创新网站建设工作
  • 国内做服装的网站有哪些方面wordpress邮件订阅
  • 建立个人网站主题安徽省建设厅网站打不开
  • 做互联网小程序 和网站有没有前景广州网站制作教程
  • 新网网站内部优化wordpress菜单图标
  • 深圳市龙华区住房和建设局网站网站开发连接数据库
  • 做张家界旅游网站多少钱做网站的步骤 优帮云
  • 怎么建立一个好公司网站网站模版参考
  • 成都大型网站设计公司怎么快速建设小型外贸网站
  • 建设工程规范在哪个网站发布河南网络推广培训
  • 深圳宝安上市公司网站建设报价石家庄教育学会网站建设
  • 上海 专业网站建设网络推广公司收费标准
  • 网站建设维护的知识wordpress调用多张产品图片
  • 网站的静态资源服务器怎么做上海加盟网站建设
  • 网站数据库如何做小游戏网页版入口
  • 做php网站教程视频国产长尾关键词拘挖掘
  • 网站首页置顶是怎么做网站运营专员做什么
  • 福建嘉瑞建设工程有限公司网站wordpress密码字典