教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

进程管理(电脑进程管理器)

  进程管理(电脑进程管理器)
  linux服务器开发相关视频解析:
  360度无死角讲解进程管理,调度器的5种实现
  linux多线程之epoll原理剖析与reactor原理及应用#include<stdio.h>#include<string.h>#include<stdlib.h>#include<unistd.h>  voidmain(){charstr[6]="hello";  pid_tpid=fork();  if(pid==0)  	{  str[0]='b';printf("子进程中str=%s\n",str);printf("子进程中str指向的首地址:%x\n",(unsignedint)str);  }else  	{  sleep(1);printf("父进程中str=%s\n",str);printf("父进程中str指向的首地址:%x\n",(unsignedint)str);  }  }
  子进程中str=bello
  子进程中str指向的首地址:bfdbfc06
  父进程中str=hello
  父进程中str指向的首地址:bfdbfc061、背景介绍
  这里就涉及到物理地址和逻辑地址(或称虚拟地址)的概念。
  从逻辑地址到物理地址的映射称为地址重定向。分为:
  静态重定向--在程序装入主存时已经完成了逻辑地址到物理地址和变换,在程序执行期间不会再发生改变。
  动态重定向--程序执行期间完成,其实现依赖于硬件地址变换机构,如基址寄存器。
  逻辑地址:CPU所生成的地址。CPU产生的逻辑地址被分为 :p (页号) 它包含每个页在物理内存中的基址,用来作为页表的索引;d (页偏移),同基址相结合,用来确定送入内存设备的物理内存地址。
  物理地址:内存单元所看到的地址。用户程序看不见真正的物理地址。用户只生成逻辑地址,且认为进程的地址空间为0到max。物理地址范围从R+0到R+max,R为基地址,地址映射-将程序地址空间中使用的逻辑地址变换成内存中的物理地址的过程。由内存管理单元(MMU)来完成。
  可执行程序在存储(没有调入内存)时分为代码区,数据区,未初始化数据区三部分。
  (1)代码区存放CPU执行的机器指令。通常代码区是共享的,即其它执行程序可调用它。代码段(code segment/text segment)通常是只读的,有些构架也允许自行修改。
  (2)数据区存放已初始化的全局变量,静态变量(包括全局和局部的),常量。static全局变量和static函数只能在当前文件中被调用。
  (3)未初始化数据区(Block Started by Symbol,BSS)存放全局未初始化的变量。BSS的数据在程序开始执行之前被初始化为0或NULL。
  代码区所在的地址空间最低,往上依次是数据区和BSS区,并且数据区和BSS区在内存中是紧挨着的。
  text段和data段在编译时已分配了空间,而bss段并不占用可执行文件的大小,它是由链接器来获取内存的。
  bss段(未手动初始化的数据)并不给该段的数据分配空间,只是记录数据所需空间的大小。
  data(已手动初始化的数据)段则为数据分配空间,数据保存在目标文件中。
  数据段包含经过初始化的全局变量以及它们的值。BSS段的大小从可执行文件中得到 ,然后链接器得到这个大小的内存块,紧跟在数据段后面。当这个内存区进入程序的地址空间后全部清零。包含数据段和BSS段的整个区段此时通常称为数据区。
  可执行程序在运行时又多出了两个区域:栈区和堆区。
  (4)栈区。由编译器自动释放,存放函数的参数值,局部变量等。每当一个函数被调用时,该函数的返回类型和一些调用的信息被存储到栈中。然后这个被调用的函数再为它的自动变量和临时变量在栈上分配空间。每调用一个函数一个新的栈就会被使用。栈区是从高地址位向低地址位增长的,是一块连续的内在区域,最大容量是由系统预先定义好的,申请的栈空间超过这个界限时会提示溢出,用户能从栈中获取的空间较小。
  (5)堆区。用于动态内存分配,位于BSS和栈中间的地址位。由程序员申请分配(malloc)和释放(free)。堆是从低地址位向高地址位增长,采用链式存储结构。频繁地malloc/free造成内存空间的不连续,产生碎片。当申请堆空间时库函数按照一定的算法搜索可用的足够大的空间。因此堆的效率比栈要低的多。
  【文章福利】需要C/C++ Linux服务器架构师学习资料加群812855908(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等)
  2、fork
  fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了"写时复制"技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都是指向父进程的物理空间,也就是说,两者的虚拟空间不同,但其对应的物理空间是同一个。当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间,如果不是因为exec,内核会给子进程的数据段、堆栈段分配相应的物理空间(至此两者有各自的进程空间,互不影响),而代码段继续共享父进程的物理空间(两者的代码完全相同)。而如果是因为exec,由于两者执行的代码不同,子进程的代码段也会分配单独的物理空间。
  fork时子进程获得父进程数据空间、堆和栈的复制,所以变量的地址(当然是虚拟地址)也是一样的。
  每个进程都有自己的虚拟地址空间,不同进程的相同的虚拟地址显然可以对应不同的物理地址。因此地址相同(虚拟地址)而值不同没什么奇怪。
  具体过程是这样的:
  fork子进程完全复制父进程的栈空间,也复制了页表,但没有复制物理页面,所以这时虚拟地址相同,物理地址也相同,但是会把父子共享的页面标记为"只读"(类似mmap的private的方式),如果父子进程一直对这个页面是同一个页面,知道其中任何一个进程要对共享的页面"写操作",这时内核会复制一个物理页面给这个进程使用,同时修改页表。而把原来的只读页面标记为"可写",留给另外一个进程使用。
  这就是所谓的"写时复制"。正因为fork采用了这种写时复制的机制,所以fork出来子进程之后,父子进程哪个先调度呢?内核一般会先调度子进程,因为很多情况下子进程是要马上执行exec,会清空栈、堆…这些和父进程共享的空间,加载新的代码段…,这就避免了"写时复制"拷贝共享页面的机会。如果父进程先调度很可能写共享页面,会产生"写时复制"的无用功。所以,一般是子进程先调度滴。
  假定父进程malloc的指针指向0x12345678, fork 后,子进程中的指针也是指向0x12345678,但是这两个地址都是虚拟内存地址 (virtual memory),经过内存地址转换后所对应的 物理地址是不一样的。所以两个进城中的这两个地址相互之间没有任何关系。
  (注1:在理解时,你可以认为fork后,这两个相同的虚拟地址指向的是不同的物理地址,这样方便理解父子进程之间的独立性)
  (注2:但实际上,linux为了提高 fork 的效率,采用了 copy-on-write 技术,fork后,这两个虚拟地址实际上指向相同的物理地址(内存页),只有任何一个进程试图修改这个虚拟地址里的内容前,两个虚拟地址才会指向不同的物理地址(新的物理地址的内容从原物理地址中复制得到))3、exec家族
  exec家族一共有六个函数,分别是:<spanstyle="font-family:MicrosoftYaHei;font-size:12px;">  (1)intexecl(constchar*path,constchar*arg,......);  (2)intexecle(constchar*path,constchar*arg,......,char*constenvp[]);  (3)intexecv(constchar*path,char*constargv[]);  (4)intexecve(constchar*filename,char*constargv[],char*constenvp[]);  (5)intexecvp(constchar*file,char*constargv[]);  (6)intexeclp(constchar*file,constchar*arg,......);</span>
  其中只有execve是真正意义上的系统调用,其它都是在此基础上经过包装的库函数。
  exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。这里的可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。
  与一般情况不同,exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程ID等一些表面上的信息仍保持原样,颇有些神似"三十六计"中的"金蝉脱壳"。看上去还是旧的躯壳,却已经注入了新的灵魂。只有调用失败了,它们才会返回一个-1,从原程序的调用点接着往下执行。

纪梵希粉底液怎么样(纪梵希持久粉底液怎么样)前几天周也冷脸美女登上热搜榜,真的是冷面时的清冷校花,但是看过山河令的阿湘都知道,周也笑起来可是又甜美又单纯的甜妹。无论是周也饰演过的北大校花,还是山河令里灵气十足的顾湘,这些形象购物软件哪个好(买软件去哪个平台)1月26日,第三方数据咨询机构QuestMobile公布2020中国移动互联网年度大报告,凭借对下沉需求的充分挖掘和深度耕耘,淘宝特价版在2020年用户规模同比增长550,成为年度小神吹官网,太赫兹小神吹多少钱,靠谱吗太赫兹波rdquo生命之光ldquo不治病,却祛除了百病产生的根源,免疫力增强了,达到百疾可以不治自愈国之源太赫兹小神吹,简称是小神吹,一款太赫兹细胞理疗仪产品。所谓太赫兹是波动频国之源太赫兹小神吹现在加入晚不晚,优势有哪些,到底怎么样火爆空前,我们欢迎你!对于现代人来说,健康才是头等大事。生活节奏快压力大,再加上环境污染饮食不规律等因素则很容易让人们的身体亮起红灯,也是因此现代人非常重视健康,这也意味着与健康相国之源小神吹能长期做吗,多少钱一个,效果如何小神吹以高端科为基础,全新采用了外波段光热科技,能够在不皮肤接触情况下,以红外波段波为介体,将热传导人体内部,实现ldquo打通人体内循rdquo的目的!温和渗透,不涂抹任何产品,国之源太赫兹小神吹有什么效果,有没有副作用,好不好做小神吹高逼格科技,助人幸福!据刘盛纲院士等科学家研究表明对人体没有危害(适应人群几个月大的宝宝可以用,八九十岁的老人也能用太赫兹光波,具有强大的活性与穿透性。它能与人体内细胞产生共曲奇怎么做(曲奇可以用白砂糖做吗)气温升高,又到了一年中最适合做烘焙的季节啦!温暖的气温,孩子生长发育快速,再加上运动量增加,总是动不动就喊肚子饿!每次路过甜品店都要买点饼干面包之类,然后回来又会抱怨蛋糕店的奶油太如何做保险(新人如何做保险)保险业面临着巨大的挑战,往往这一挑战是针对一部分人的,为什么说得那么绝对呢?由于测试一个保险销售人员的素质,最重要的一环就是保险销售人员应该具备一种很好的与人交谈的能力。或许你肯定推广哪个好(如何推广好)隨著内容爲王的普遍傳播與認可,自媒體渠道越來越多,最早的公眾號微博QQ空間,到如今简直一切新聞客戶端都在推出自媒體版塊,如頭條號企鵝號一點號網易號大魚號百家號等。常用的有哪些呢?0湿疹怎么治好得快(湿疹的克星有四种)湿疹人人皆知,非常常见,不分季节,夏季发病率高一些,发病症状无性别年龄区分。中医把湿疹称之为湿疮,皮疹呈多种形态,发无定处,易于湿烂流津的异痒性渗出性皮肤病。中医对于不同症状表现的新生儿为什么长湿疹(新生儿月子湿疹怎么好得快)婴儿湿疹常伴剧烈瘙痒,所以婴儿常常会哭闹不安,不仅夜惊夜啼,白天也睡不稳,防治婴儿湿疹应从病因着手,那么婴儿湿疹的诱因有哪些?婴儿湿疹的诱因有哪些1遗传过敏小儿湿疹与遗传有很大的关
微信七夕青蛙怎么点近日微信七夕青蛙怎么点登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下微信七夕青蛙怎孤寡孤寡(女生说孤寡孤寡是什么意思)孤寡孤寡(女生说孤寡孤寡是什么意思)白羊座忙着做数学题勤劳的白羊座哪里管得着什么情人节,孤寡的日子里,他们只想要提升自己,让自己的优秀让更多人看到。金牛座忙着搞钱金牛座只想拥有更多刀妹皮肤哪个好(lol刀妹漂亮吗)大家好,我是逸飞。本期把主题改一下,不局限于老皮肤,而且把一位英雄的所有的皮肤横向对比,选出二到三款推荐的皮肤。至于你是选择半价或者全价入手,还是等更低的折扣或者是皮肤碎片白嫖全凭鲁班姓不姓鲁?(鲁班居然不姓鲁?)鲁班姓不姓鲁?(鲁班居然不姓鲁?)在漫漫的历史长河中,总有一些人的姓名被烙印在人们心中。但是,我们所熟知的这些名字可能并不是他们真正的姓名,我们经常搞错了古人的姓氏。那么,这些人都鲁班装饰怎么样(沈阳鲁班装饰大厦)现代轻奢风格,设计简洁大方,时尚,前卫,优雅,给人温暖舒适的感觉。与每个人都熟悉的现代风格相比,它具有更多的品质和设计感它揭示了生活的纯洁,它融合了奢华与内涵的气质。一般来说,选择韩信怎么玩(韩信玩多少场才算入门)在王者荣耀中,韩信是一个人气非常高的英雄,虽然说当前版本他并不在T1级,但依旧有很高的出场率。不少主播的绝活就是韩信,KS主播韩小鑫就是其中的佼佼者。他曾一个人霸占了韩信五个国服称牛魔怎么玩(国服第一牛魔辅助出装)S22赛季已经进行2个星期了,由于当前赛季的改动有点多,玩家们各自的点也不尽相同。对于我来讲,一直都在某个辅助英雄的表现,没错,他就是牛魔。不得不说,2个星期之前的牛魔加强还是很给小鸡宝宝考考你牛郎织女鹊桥相如果真有鹊桥大约要多少只喜鹊才能搭成近日小鸡宝宝考考你登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接下来就分享给大家来了解下小鸡宝宝考考你具体牛郎织女鹊桥相会大约要34万只还是34亿亿只喜鹊才能搭成近日牛郎织女鹊桥相会大约要34万只还是34亿亿只喜鹊才能搭成登录了热搜,也是在网上引起了网友们的关注,那么很多小伙伴可能还不清楚具体的情况如何,小编也是在网上查阅了一些信息,那么接夏天菜谱(适合夏季吃的菜谱大全)夏天菜谱(适合夏季吃的菜谱大全)夏天没胃口?外卖翻来翻去也不知道吃什么?今天就为大家分享10道既简单快手又下饭解馋的家常菜,有了这个菜谱,再也不用为下班吃什么发愁了!01。肉质鲜嫩昆虫记法布尔(法布尔和他的昆虫记)昆虫记法布尔(法布尔和他的昆虫记)昆虫记终于读得疲累。法布尔被世人尊为昆虫界的荷马,昆虫界的维吉儿,昆虫记被誉为昆虫的史诗,鲁迅先生也把它奉为讲昆虫的楷模。说他以人性关照虫性也好,