Linux请简述进程概念,Linux进程概念

一、进程的调度算法

操作系统的调度分为三种:1,远程调度(创建新进程)

2,中程调度(交换功能的一部分)

3,短程调度(下次执行哪个进程)

当发生下面几种情况的时候会调用短程调度器,然后就看下此次执行哪个进程。

1,时钟中断;2,I/O中断;3,操作系统调用;4,信号

进程的调度算法:1,先来先服务调度算法(FCFS)

2,短作业优先调度算法(SPN)

3,最高响应比优先调度算法

4,轮转调度算法

5,多级反馈队列

二,task_struct结构体, 结构体中的各个字段的含义

转自其他大佬的博客

三、代码模拟实现僵尸进程, 孤儿进程的场景

1.僵尸进程

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

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

8da50396cc12d11299b8959f44acfbf1.png

#include

#include

#include

int main()

{

pid_t id = fork();

if (id < 0)

{

perror("fork");

return 1;

}

else if (id > 0)

{

//father

printf("father [%d] is sleeping...\n", getpid());

sleep(30);

}

else

{

printf("child [%d] is begin Z...\n", getpid());

sleep(5);

exit(EXIT_SUCCESS);

}

return 0;

}

僵尸进程的危害--资源泄露

如何避免;进程等待

处理方式:退出父进程

2,孤儿进程

孤儿进程:父进程先于子进程退出,子进程成为孤儿进程,运行在后台,父进程成为1号进程

#include

#include

#include

int main()

{

pid_t id = fork();

if(id < 0)

{

perror("fork");

return 1;

}

else if(id == 0)

{

//child

printf("I am child,pid : %d\n",getpid());

sleep(10);

}

else

{

//parent

printf("I am parent,pid : %d\n",getpid());

sleep(3);

exit(0);

}

return 0;

}

四、《深入理解计算机系统》

引自

五,《操作系统精髓设计原理》 进程相关

六,setenv, export等环境变量相关的函数和命令.、

setenv

功能说明:设置或显示环境变量

export[-fnp][变量名称]=[变量设置值]

只在本次登录中有效

再增加的路径用:追加

exportPATH=&PATH:/...

说明

在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。

参数

-f 代表[变量名称]中为函数名称。

-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p 列出所有的shell赋予程序的环境变量

export

用于设置或显示环境变量

export [-fnp][变量名称]=[变量设置值]

只在本次登录中有效

说明

在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。

参数

-f  代表[变量名称]中为函数名称。

-n  删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。

-p  列出所有的shell赋予程序的环境变量。

标签:变量,调度,概念,export,Linux,进程,include,环境变量

来源: https://blog.csdn.net/weixin_43749240/article/details/91492505

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值