Linux第三章 进程概念

1. 调研进程的调度算法. 

FCFS(First Come First Serve):根据程序的前后顺序分派CPU资源,要当前进程完成后才可让出CPU进行下一进程处理

有利于长作业和CPU繁忙的作业,不利于短作业和I/O繁忙作业、

轮转法(Round Robin)

将所有需要CPU处理的就绪的进程按照FCFS原则排队。之后CPU会划分时间片,根据时间片来给队列上的程序执行,当时间片结束。当前进程中断,让出CPU让下一进程使用。

高响应比优先调度算法:根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。

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

标识符:与进程相关的唯一标识符,用来区别正在执行的进程和其他进程。
状态:描述进程的状态,因为进程有挂起,阻塞,运行等好几个状态,所以都有个标识符来记录进程的执行状态。
优先级:如果有好几个进程正在执行,就涉及到进程被执行的先后顺序的问题,这和进程优先级这个标识符有关。
程序计数器:程序中即将被执行的下一条指令的地址。
内存指针:程序代码和进程相关数据的指针。
上下文数据:进程执行时处理器的寄存器中的数据。
I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表等。
记账信息:包括处理器的时间总和,记账号等等。

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

#include<stdio.h>  
#include<stdlib.h>  
#include<unistd.h>  
  int main()  
{    
    	pid_t id = fork();  
if(id<0)//子程序 
    {  
        printf("error");  
        exit(1);  
    }
	if(id==0)//子程序 
    {  
         printf("child pid is :%d,father pid is :%d\n",getpid(),getppid());  
         exit(1);  
    }
    	else//父程序
    {  
        while(1)  
        {  
            printf("father pid is :%d\n",getpid());  
            sleep(1);  
        }  
    }  
    return 0;  
}  

此时父进程迟迟不接收子进程的信息,使得子进程进入僵尸状态。

若要产生孤儿进程

#include<stdio.h>  
#include<stdlib.h>  
#include<unistd.h>  
  int main()  
{    
    	pid_t id = fork();  
    
if(id<0)//子程序 
    {  
        printf("error");  
        exit(1);  
    }

	if(id==0)//子程序 
    {  
         printf("child pid is :%d,father pid is :%d\n",getpid(),getppid());  
     	sleep(3);
    }
    	else//父程序
    {  
        while(1)  
        {  
            printf("father pid is :%d\n",getpid());  
            exit(1)
        }  
    }  
    return 0;  
}  
此时父进程先于子进程退出,使得子进程成为孤儿进程,由1号程序领养

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值