进程状态及优先级

一、进程的各种状态

1、R运行状态(runing):并不意味着进程一定在运行中,它表明进程要么在运行要么在运行队列里

2、S睡眠状态(sleeping):意味着进程在等待着事件完成

3、D磁盘休眠状态(Disk sleep):有时候也叫不可中断睡眠状态,在这个状态的进程通常会等待I/O的结束

4、T停止状态(stopped):可以通过发送SIGSTOP信号给进程来终止(T)进程。这个被暂停的进程可以通过发送SIGCONT信号让进程继续运行

5、X死亡进程(dead):这个状态只是一个返回状态。你不会在任务列表里看到这个状态

6、Z僵尸进程(zomble)

    ·僵尸进程是一个比较特殊的状态。当进程退出并且父进程(使用wait()系统调用)没有读到子进程退出的返回代码是就会产生僵尸进程

    ·僵尸状态会以终止状态保持在进程表中,并且一直在等待进程读取退出状态代码

    ·只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态

  1 #include<stdio.h>
  2 #include<sys/types.h>
  3 #include<unistd.h>
  4 #include<stdlib.h>
  5 
  6 int main()
  7 {
  8     pid_t id = fork();
  9     if(id < 0){
 10         perror("fork");
 11         return 1;
 12     }
 13     else if(id == 0){//child
 14         printf("child[%d] is begin Z ...\n",getpid());
 15         sleep(5);
 16     }
 17     else{//parent
 18         printf("parent[%d] is sleeping ...\n",getpid());
 19         sleep(5);
 20     }
 21     return 0;
 22 }

7、孤儿进程

    ·父进程如果提前退出,那么子进程后退出进入Z状态后该如何处理?

    ·父进程先退出,子进程就被称之为“孤儿进程”。

    ·孤儿进程被1号init进程领养

  1 #include<stdio.h>
  2 #include<sys/types.h>
  3 #include<unistd.h>
  4 #include<stdlib.h>
  5 
  6 int main()
  7 {
  8     pid_t id = fork();
  9     if(id < 0){
 10         perror("fork");
 11         return 1;
 12     }
 13     else if(id == 0){//child
 14         printf("I am child,pid : %d\n",getpid());
 15         sleep(10);
 16     }
 17     else{//parent
 18         printf("I am parent,pid : %d\n",getpid());
 19         sleep(3);
 20     }
 21     return 0;
 22 }

二、进程状态修改

 #include<stdio.h>
  2 
  3 int main()
  4 {
  5     while(1);
  6     return 0;
  7 }

    ·kill -l:查看系统支持的信号列表


    ·kill -SIGSTOP pid

    ·kill -SIGCONT pid:收到信号

三、优先级的基本概念

·CPU资源分配的先后顺序,就是指进程的有限权

·优先权高的进程有优先执行的权利。配置进程优先权对多任务环境的Linux很有用,可以改善系统性能

·可以把进程运行到指定的CPU上,把不重要的进程安排到某个CPU。可以大大改善系统整体性能

四、查看系统进程


·UID:代表执行者的身份

·PID:代表这个进程的代号

·PPID:代表这个进程是由那个进程发展衍生而来的,即父进程的代号

·PRI:代表这个进程可被执行的优先级,其值越小越早被执行

·NI:代表这个进程的nice值(即进程可被执行的优先级的修正数值)

五、修改进程的优先级命令

  #include<stdio.h> 
  int main()
  {
      while(1){
          sleep(1);
      }
      return 0;
  }

1、启动进程前调整:nice

2、调整已经存在的进程的nice值:renice

3、用top命令更改已存在进程的nice :

·top

·进入top后按‘r’->进入PID  ->输入nice值


                                                        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值