linux进程概念

linux进程概念

1. 调研进程的调度算法.
2. 调研task_struct结构体, 理解结构体中的各个字段的含义.
3.使用代码模拟实现僵尸进程, 孤儿进程的场景.

1.进程的调度算法

(1)时间片轮转调度算法(RR) : 给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。适用于分时系统。
(2)先来先服务调度算法(FCFS) :根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短作业。
(3)优先级调度算法 (HPF):在进程等待队列中选择优先级最高的来执行。
(4)多级反馈队列调度算法 :将时间片轮转与优先级调度相结合,把进程按优先级分成不同的队列,先按优先级调度,优先级相同的,按时间片轮转。优点是兼顾长短作业,有较好的响应时间,可行性强,适用于各种作业环境。
(5)高响应比优先调度算法 :根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。

  1. 调研task_struct结构体, 理解结构体中的各个字段的含义.

在Linux下描述进程的结构体为task_struct结构体,它是linux内核的一种数据结构,它将会被装载到RAM(内存)里并且包含着进程的信息。
标识符:描述本进程的唯一标识符,用于区别其他进程(PID)。
状态:任务状态,退出代码,退出信号等。
优先级:相对于其他进程的优先级 (CPU资源的优先分配权)。
程序计数器:程序中即将被执行的下一条指令的地址(程序执行到哪儿了)。
内存指针:程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针。
上下文数据:进程执行时处理器的寄存器中的数据。
I/O状态信息:显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息:包括处理器时间总和,使用的时钟数总和,时间限制,记账号。
其他信息

3.使用代码模拟实现僵尸进程, 孤儿进程的场景.

孤儿进程
父进程先退出,子进程后退出。,子进程就变为孤儿进程
孤儿进程被1号init进程领养,父进程变为1号进程。
以d结尾

   #include <stdio.h>
   #include <stdlib.h>
   #include <string.h>
   #include <unistd.h>
   #include<stdio.h>
   int main ()
   {
     ssize_t id=fork();
    if(id<0)
    {
      perror("fork");
      exit(1);
   }
             if(id==0)
    {
      //子进程
      printf("i am child !\n");
      sleep(20);
    }
      if(id>0)
    
    {
      //父进程
      printf("i am father!\n");
      sleep(10);
    }
     
    return 0;
  }   

僵尸进程
子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入僵死状态,变为僵尸进程

 #include<stdio.h>                                                              
 #include<stdlib.h>
   int main ()
   {
      pid_t id =fork();
       if(id<0)
       {
         perror("fork");
       }
      else if(id>0)
     {
        //father
        printf("father[%d] if sleeeping ...\n",getpid());
        sleep(30);
}
     else
      {
        //child
        printf("child [%d] is z...\n",getpid());
        sleep(5);
        exit(EXIT_SUCCESS);
      }
   return 0;
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值