关于Linux进程的一些笔记

linux是一个多用户多任务的操作系统,多用户指的是多个用户可以在同一时间使用同一台计算机系统
,多任务是指linux可以同时执行几个任务。

进程的定义:在自身的虚拟地址空间运行的一个单独的程序。

进程的动态的,程序是静态的。

进程的四个要素:
1、要有一段程序供该进程运行
2、进程专用的系统堆栈空间
3、进程控制块,在linux中的具体实现是task_struct结构
4、有独立的存储空间
当进程缺少四要素中的一个时,称为线程

三种不同类型的进程:
1、交互进程:由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行
2、批处理进程:这种进程和终端没有联系,是一个进程序列
3、监控进程:linux系统启动时启动的进程,并在后台运行

一个正在执行的程序称为一个作业,而作业可以包含一个或多个进程
作业控制指的是控制正在运行的进程的行为

每个进程在创建时都会被分配一个数据结构,称为进程控制块(Process Control Block),简称PCB
PCB是系统为了管理进程设置的一个专门的数据结构,用它来记录进程的外部特征,描述进程的动态变化过程。PCB是系统感知进程存在的唯一标志。

一个或多个进程可以合起来构成一个进程组,一个或多个进程组可以合起来构成一个会话

创建进程函数:
pid_t fork(void)
返回:若成功,副进程中返回子进程ID,子进程中返回0;若出错则返回1.
由fork创建的新进程称为子进程,原来的进程称为父进程。子进程是父进程的一个复制,即子进程从父进程得到了数据段和堆栈段的复制,这些需要分配新的内存。
fork返回后,子进程和父进程都从调用fork函数的下一条语句进行。

pid_t vfork(void)
vfork创建出来的子进程和父进程之间是共享内存区的,在vfork调用中,子进程先运行,父进程挂起,直到子进程调用了exec或exit之后,父进程才开始执行。

main函数:
int main(int argc,char *argv[], char *envp[])
argc:运行程序时命令行参数的个数
argv[]:存放了所有的命令行参数
envp:存放了所有的环境变量

exit和_exit函数
无论在程序的什么位置,只要执行到exit系统调用,进程就会停止剩下的所有操作,清除包括PCB在内的各种数据结构,并终止本进程的运行
区别:_exit立即进入内核,exit则先进行一些处理,然后进入内核。
     头文件不同,exit是由ANSIC说明的,_exit是由POSIX.1说明的
exit函数在调用之前要检查文件的打开情况,把文件缓冲区的内容写回文件;而_exit直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构。

僵尸进程:几乎放弃了所有的内存空间,没有任何可执行代码,也不能被调度,仅仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,除此之外,僵尸进程不再占有任何内存空间。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值