优秀排版设计图片,冯耀宗seo视频教程,设计素材网排名,专注高密做网站哪家强程序#xff1a;一组指令的有效集合。它是静态的#xff0c;不具有任何的运行意义。程序最终转换为二进制文件。
进程#xff1a;程序的执行就是进程。可以把它看成独立的程序#xff0c;在内存中有其对应的代码空间和数据空间。一个进程所拥有的数据和代码只属于自己。进…程序一组指令的有效集合。它是静态的不具有任何的运行意义。程序最终转换为二进制文件。
进程程序的执行就是进程。可以把它看成独立的程序在内存中有其对应的代码空间和数据空间。一个进程所拥有的数据和代码只属于自己。进程是资源分配的基本单位也是调度运行的基本单位。
进程和程序并不是一一对应的关系相同的程序运行在不同的数据集上就是不同的进程。
进程还具有并发性和交往性而程序却是封闭的。
这节中有几个重要的问题我举个例子给大家看吧~
第一例 这段代码是说什么的呢显然它输出了函数、初始化的变量未初始化的变量堆区栈区的地址那么这些地址有什么规律呢 可以看的出来它的地址是依次从低地址到高地址。
然而还有一类特殊的函数---主函数它的地址是如何分布的呢 地址为 显然带有命令行参数的主函数的地址比前面比较的栈区的地址还要大。
所以就有了如图的地址空间如果地址空间中的数都是连续的则我们称之为线性地址空间 第二例
父进程和子进程 运行结果为 在这里我们会不会很奇怪一个问题呢这里将if和else里边的内容都执行了。然而在我们经常编写的代码中if和else是不能同时执行的。进程却在这里做到了。
fork()是创建子进程。这里的getpid()是获取到子进程的pidgetppid()是获取到父进程的pid即这里的2677
我们发现父进程和子进程指向的是同一块内存那么我们也应该想到他们的指向也应该是一样的这只是我们的推测哦看个例子我们就知道了。
eg 结果是什么呢 看到那个200和100了吗它们的值竟然不一样。
说明它们并不是同一个指向那么为什么地址一样呢这里就引出了我们的虚拟地址。
虚拟地址空间在一个带有虚拟存储器的系统中cpu从一个有N2的n次方个地址的地址空间中生成虚拟地址。
如图所示 在这里虚拟地址空间通过页表和MMU(存储器管理单元)映射到物理地址中它们的物理地址是不相等的所以最后得到的值也不相等。 今天的内容先说到这里喽。~~~
欢迎来访多多提议哦。