进程初了解

一.进程的分类
按照进程的服务对象来分:
用户进程:通过执行用户程序,应用程序或内核之外的系统程序而产生的进程,用户可以控制其运行或者关闭。
系统进程:通过执行系统内核程序而产生的进程,可以执行内存资源分配和进程切换等相对底层的工作。即使是root用户也不能干涉系统进程的运行。

按照进程的服务类型来分:
交互进程:由一个shell终端启动的进程,需要与用户进行交互操作,可以运行于前台,也可以运行于后台。
批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。
守护进程:是一直运行的一种进程,在Linux系统启动时启动,在系统关闭时终止。他们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。


二.各种进程
父进程和子进程 fork() exec()
fork()之后,子进程把父进程的PCB等进程的数据结构信息直接复制过来,只是修改了PID。所以父子进程的内存,寄存器,文件描述等信息都一样。
exec()就是子进程中替换掉从父进程中复制过来的代码段和数据段。

僵尸进程:
子进程比父进程提早执行结束,子进程的PCB仍然驻留在内存中,就代表子进程仍然存在,此时这个子进程叫做僵尸进程。
进程表中保留僵尸进程的退出信息等待父进程回收,如果父进程没有执行wait(&status),该僵尸进程就会一直保留,占用PID,如果系统中的PID被使用完,系统将不能产生新的进程。

孤儿进程:
如果父进程非正常结束,子进程仍在运行,此时这样的子进程叫做孤儿进程。孤会被儿进程init进程收养,成为init进程的子进程。

进程0:
进程0是系统引导时创建的一个特殊进程,也称之为内核初始化,其最后一个动作就是调用fork()创建一个子进程运行/sbin/init可执行文件,而该进程的PID是1。而进程0就转为交换进程/空闲进程。

进程1/init进程
是第一个用户态进程,再又init进程不断的调用fork()来创建系统里的其他进程,所以他是所有进程的父进程或祖宗进程。同时他是一个守护进程,知道计算机关机才停止。

进程组ID:
getpgrp()系统调用来寻找其所在组的PGID。
一般情况下进程的进程组ID是该进程组的第一个进程?为什么要划分进程组?按照什么标准进程划分?
==》用户执行一个程序,该进程产生多个进程,这些进程就形成一个进程组,第一个进程的PID就是该进程组的GPID。

session:
每个进程组会在一个session中,Session主要针对一个tty建立。session中的每一个进程都称为一个工作/job。session的意义是将多个job包含在一个终端中,终端中的输入输出都传递给会话的前台job,其他jobs在后台运行。


查看进程族谱:pstree
查看进程的创建关系:ps -fxo user,pid,ppid,pgid,command 进程属于的用户,进程ID,父进程ID,进程所在组的ID


三.工作管理
bash(Bourne-Again shell)支持工作控制(job control),sh(Bourne shell)不支持。
每个终端/bash只能管理当前终端中的job,不能管理其他终端中的job

command &使命令在后台执行
ctrl+z 使当前的工作/job停止并丢到后台中去    后台挂起
jobs 查看被停止并放置到后台的工作/job
fg %jobnum 将放到后台的工作拿到前台来   前台运行
bg %jobnum 使放到后台运行的工作的suspend状态转变为running状态   后台运行


kill -l查看signal值
-1 重新读取参数运行,类似于restart
-2 =ctrl+c,退出
-9 强制终止该任务
-15 正常的方式终止该任务

kill -signal %jobnum
kill -2 %jobnum 能把工作杀死,同时把进程杀死
kill -2 pid不能杀死进程不能杀死工作
kill -9 %jobnum 效果等同于 kill -9 pid
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值