Linux_进程的相关概念整理

1.进程的概念:简单来说,就是正在执行的程序。从内核的角度看,分配系统资源的实体。

2.PCB

说到进程肯定要提PCB,PCB是一种数据结构(也是C语言中的结构体),负责存储进程信息,每个进程都有自己的PCB,在fork子进程时,子进程在创建自己的PCB时,会从父进程的PCB中继承一部分信息,PCB也是对进程控制的唯一且最有效的方法。

3.PCB中的内容分类

    1)标识符 :描述进程的唯一标识符,用来区别进程。如进程id

 1  #include <stdio.h>
  2  #include <unistd.h>
  3  #include <sys/types.h>
  4 
  5 
  6  int main(){
  7         printf("pid:%d",getpid()); //获取当前进程id
  8         printf("ppid:%d",getpppid()); //获取父进程id
  9         return 0; 
 10 }     

    2)状态:进程状态,退出码...

            进程状态有如下几种:R 就绪/执行;S 挂起;D 深度睡眠;T 暂停;t 跟踪;X 进程退出;Z 僵尸进程


        僵尸进程出现的原因:父进程未读取子进程的退出状态。

 #include <stdio.h> 
 #include <stdlib.h> 
 
 int main(){ 
        pid_t pid=fork(); 
        if(pid>0){ //父进程      
        printf(" This is father%d \n",getpid()); 
        sleep(35); 
        }else{ //子进程 
        printf("This is child %d\n",getpid()); 
        sleep(3); 
        exit(EXIT_SUCCESS); 
        } 
 return 0; 
}  

    3)优先级:进程调度的先后顺序,pri越大,优先级越低

        调整优先级的命令:nice renice 或者top ->r->pid->nice值

    4)程序计数器:程序中即将被执行的下一条指令的地址。

    5)内存指针:程序代码和相关数据的指针...

    6)上下文:CPU各种寄存器在内存中保存的一份副本

    7)记账信息:一个进程在CPU上的执行信息。

    8)文件描述符表

    9)信号相关结构:信号屏蔽字,未决信号集,捕捉信号的函数指针数组..

    10)...


4.环境变量

类似于全局变量

创建环境变量:  export 变量名

查看环境变量:echo $变量名

介绍两个环境变量

    1)_PATH_:值为一组目录,在Shell下输入命令在目录中查找对应的可执行程度

    2)_LD_LIBRARY_PATH:值也是一组目录,当执行可执行环境变量对应的目录中查找动态链接库。

查看所有环境变量 env

通过函数设置环境变量

设置环境变量 putenv(“name=value”) 函数

       取值  getenv(“环境变量名”)


删除环境变量: unset 变量名

5.虚拟地址空间


猜你喜欢

转载自blog.csdn.net/warrior_harlan/article/details/80505280