甘肃省建设厅注册中心网站首页,手机网站生成app客户端,跨境电商开店大概流程,深圳优秀网页设计Linux系统编程#xff08;一#xff09;一、进程和程序二、内存布局内核空间用户空间三、进程状态四、环境变量五、进程共享一、进程和程序 程序#xff1a;是指编译好的二进制文件#xff0c;存储在磁盘中#xff0c;不占用系统资源。
进程#xff1a;是系统进行资源分…
Linux系统编程一一、进程和程序二、内存布局内核空间用户空间三、进程状态四、环境变量五、进程共享一、进程和程序 程序是指编译好的二进制文件存储在磁盘中不占用系统资源。
进程是系统进行资源分配的基本单位进程是活跃的程序占用系统资源。在内存中执行。
两者关系程序运行的时候会产生进程。
二、内存布局 内存分为两个区域一个是内核空间另一个就是用户空间。
内核空间
进程陷入内核态后才能够访问的空间。内核中有一块PCB进程控制块主要负责维护进程相关的信息。栈内存的申请和释放都由编译器自动完成并且栈容量由系统预先定义的。栈从高地址到低地址增长。
用户空间
栈栈用来存放临时创建的局部变量如函数的参数、内部变量等。每调用一次函数就会将参数压入进程调用栈中调用结束后也会被返回栈中。同时每调用一个函数就会创建一个新的栈所以递归函数的时候会导致栈溢出 文件映射段也叫共享区文件映射段主要包括共享内存、动态链接库等共享资源从低地址向高地址增长。 堆堆用来存放动态分配的内存。堆内存由用户申请分配和释放从低地址向高地址增长。 BSS:BSS段用来存放程序中未初始化的全局变量和静态变量。 数据段:数据段用来存放程序中已初始化全局变量与静态变量。 代码段:代码段用来存放程序执行代码也可能包含一些只读的常量。这块区域的大小在程序运行时就已经确定并且为了防止代码和常量遭到修改代码段被设置为只读。
三、进程状态
进程基本的状态有5种。分别为初始态就绪态运行态挂起态与终止态。其中初始态为进程准备阶段常与就绪态结合来看。
四、环境变量
环境变量是指在操作系统中用来指定操作系统运行环境的一些参数 例如ls实际上也是一个程序但是为什么我们不需要加入完整的路径名/bin/ls呢当我们执行的ls的时候操作系统会现在环境变量中查找ls命令所在的目录/bin,然后执行该目录下的程序。
五、进程共享
fork函数 父子之间的共享遵循读时共享写时复制的原则使用全局变量并不能进行父子进程间的数据共享。全局变量是存在data段的父进程修改全局变量和子进程修改全局变量是在data段的不同内存空间修改的。