Linux进程概念

一、进程的调度算法

操作系统的调度分为三种:1,远程调度(创建新进程)
                                           2,中程调度(交换功能的一部分)
                                           3,短程调度(下次执行哪个进程)                                        

                                            

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

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

进程的调度算法:1,先来先服务调度算法(FCFS)
                             2,短作业优先调度算法(SPN)
                             3,最高响应比优先调度算法
                             4,轮转调度算法
                             5,多级反馈队列

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

https://blog.csdn.net/qq_39539470/article/details/79542862

转自其他大佬的博客

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

1.僵尸进程

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

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


#include<stdio.h>

#include<unistd.h>

#include<stdlib.h>

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<stdio.h>

#include<unistd.h>

#include<stdlib.h>

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;

}


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

引自

https://www.jianshu.com/p/e1b82b230917

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


引自
https://blog.csdn.net/just0kk/article/details/53765108

六,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赋予程序的环境变量。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值