1.10 LINUX 进程相关概念的自我欺骗解释。

程序和进程的区别?
程序是一些指令的集合,为了完成某种任务而提前设定好的指令集。它是静止的实体。
进程首先是运行状态下的程序,是执行程序的一个过程。

并发与并行的区别?
并发是在在一个时间段内有多个程序活动,但是如果切割时间来看,每个时间只有一个程序在活动。如同单片机上小灯以很高频率轮流闪烁,但肉眼看来是所有灯同时在亮。
并行是在每个时间段所有程序都在运行,好比是单片机小灯常亮状态。

为何需要进程这一定义?
把程序比作一个公司,公司只是一个具有法定意义和各种证书的集合。当公司真正运行起来时候,会有各个部门同时协作完成某些任务,这些部门就好比是进程。当一些任务太大的时候,部门之内还要再分各个小组去分别完成不同的任务,这些小组就可以看做是线程。小组要做什么需要向部门申请,也就是说线程需要做什么需要先向进程申请。
部门在公司中具有独立的区域,而小组则在这些各自独立的区域中活动——好比是进程拥有独立的内存,而多个线程是共享这些内存进行运作的。

进程分类?
用户进程和系统进程 交互进程和批处理进程和守护进程

进程的衍生
祖父进程 父进程 子进程
两个系统调用fork()和exec()
Fork():为当前进程创建一个子进程,子进程与父进程的执行代码段、寄存器状态、文件描述等都是一样的,只有PID(进程的身份证号)和父进程的返回值不同。
Exec():切换子进程中的执行程序,也就是替换其从父进程复制过来的代码段和数据段。

僵尸进程是什么?
进程已经运行完毕,但是进程的PCB还停留在内存中。PCB作为进程存在的标志,代表进程还没有消亡。这样的进程称为僵尸进程。

僵尸进程弊端?
系统能产生的PID(PCB中记录有PID等信息)是有限的,如果存在大量的僵尸进程占用大量的PID,可能会导致新进程无法产生。

孤儿进程是什么?
父进程非正常结束但没有正常回收子进程从而导致子进程仍在运行,这样没爹的子进程就叫孤儿进程。在LINUX系统中,孤儿进程会被孤儿所(INIT进程)收留,进而成为INIT进程的子进程。孤儿进程比僵尸进程好点,至少有人管,所以也没啥危害。

进程0是什么?
内核初始化。最后一个动作就是调用Fork()创建一个子进程。

所有进程的爹是谁?
Init

PID和PPID分别是个啥?
PID就是进程的身份证,每人一张不重复。
PPID就是父进程的PID。

进程组
每一个进程都一定是一个唯一进程组的成员,进程组靠PGID(progess group ID)区分,子进程自动分入他爹的那组。
进程组的PGID自动等于该进程组的第一个进程的PID,并且这个进程叫做领导进程。
Getpgrp():用于寻找其所在组的PGID。
领导进程完了,进程组并不会也跟着没,好比领导挂了你还依然活着。只有当这个进程组所有成员全部挂了,这个进程组才算玩完。

Sessions(会话)
一个进程被创建,自动会归入到他爹所在进程组所在的Session中,每一个进程组都会在唯一Session中。
Session主要针对一个TTY建立,Session中的每个进程都称为一个工作(job)。每个会话可以连接一个终端(control terminal)。当控制终端有输入输出的时候,都会传递给该会话的前台进程组。
Session的意义就在于将多个工作囊括到一个终端中,然后取其中一个工作作为前台,其余均为后台,所有的输入输出都由这个前台job来完成。

工作管理
& 命令后台运行
fg %jobnumber 把一个后台工作拿到前台来
Bg %jobnumber 把一个前台工作放到后台去
Ctrl + z 停止当前工作并且扔到后台

Jobs 查看后台命令
在这里插入图片描述
+表示s是最近放到后台的job ,-表示是最近第二个被放到后台的job

Kill -signal %jobnumber 删除或重启一个工作等。
-1 restart
-2 =ctrl + c
-9 强制终止
-15 正常终止

发布了1 篇原创文章 · 获赞 1 · 访问量 84

猜你喜欢

转载自blog.csdn.net/qq_41078790/article/details/103929358