Linux进程概念—01

Linux进程概念—01

基本概念

进程:就是一个运行起来的程序。

程序:一系列有序的指令集合

描述进程-pcb

操作系统如何实现多个程序的调度运行:将这个运行中的程序描述起来,然后将这些描述组织起来进行管理。通过实现对pcb的调度管理实现对运行中程序的切换调度运行—对于操作系统来说这个描述信息-pcb就是进程

进程就是pcb,是操作系统对一个运行中程序的描述,通过这个描述实现对程序的运行调度。

在Linux中描述进程的结构体叫做struct task_struct{…}。

描述信息:内存指针、程序计数器、上下文数据、进程标示符、进程状态、IO信息、记账信息…

内存指针:用于指向程序指令数据再内存中的位置。

程序计数器:程序中即将被执行的下一条指令的地址。

上下文数据:程序执行时处理器的寄存器中的数据。

进程的创建
ps -ef / ps -aux	//进程的查看
kill / kill -9	//强制杀死进程

进程就是pcb,意味着创建一个进程就是创建一个pcb。

pid_t fork();	//通过复制调用进程(父进程)创建一个新的进程(子进程)

创建了一个新的pcb,然后从父进程pcb中复制了很多数据过来。

复制的信息包括内存指针、程序计数器、上下文数据…

内存指针:子进程与父进程运行的代码其实是一样的,指向同一块物理内存中的数据以及指令。

程序计数器/上下文数据:子进程被创建出来后,运行位置与父进程是完全一样的,下一步即将执行的的指令都是从创建子进程成功之后开始的。

函数的返回值对于父子进程是不一样的,在父进程中返回创建的子进程的pid,在子进程中返回的是0。

通常根据fork的返回值进行代码的分流,让父子进程进入不同的判断执行体完成不同的功能。

父子进程代码共享,数据独有。

#include<stdio.h>
#include<unistd.h>
int main()
{
	printf("---create child process start---%d\n", getpid());
	pid_t pid;
	pid = fork();
	if(pid == 0)
	{
		printf("this is child %d---rpid:%d\n", getpid(), pid);
	}
	else if(pid > 0)
	{
		printf("this is parents %d---rpid:%d\n", getpid(), pid);
	}
	else
	{
		printf("fork error\n");
	}
	printf("---create child process end---%d--%d\n",getpid(), pid);
	return 0;
}
进程状态

windows下进程状态:就绪/运行/阻塞

linux下进程的状态:

运行态R:就绪/运行

可中断休眠态S:当前的阻塞能够被中断唤醒

不可中断休眠态D:当前的阻塞不会被中断唤醒,等待条件满足自己醒来。

停止态T:停止运行,什么都不干

僵死态Z:进程已经退出了但是资源没有完全释放的一种状态

僵尸进程

处于僵死状态的进程,进程已经退出不再运行,但是资源没有完全释放。

僵尸进程的产生:子进程先与父进程退出,但是父进程没有关注子进程的退出状态,因此子进程成为僵尸进程。

资源为什么没有完全释放:因为子进程要保存退出原因。

僵尸进程的危害:资源泄漏。一个用户所能创建的进程数量是有限的,并且资源没有完全回收会占据内存资源。

处理方法:1.进程等待(等待子进程退出)2.退出父进程(父进程退出,子进程保存退出原因就没有意义了,因此也就释放了)

孤儿进程

父进程先于子进程退出,则子进程成为孤儿进程,这个孤儿进程的父进程变成了1号进程,并且这个孤儿进程运行在后台。孤儿进程是不会成为僵尸进程的,因为1号进程随时关注子进程退出。

守护进程:一种特殊的孤儿进程,父进程是1号进程,运行在后台。与终端以及登陆会话脱离关系,不再受影响守护进程通常是一种运行在系统后台的批处理程序。

进程优先级

一个进程对于cpu资源获取的优先权。

优先级的作用:让操作系统运行的更加良好。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值