好烦啊,写了好久的文章,按了 ctrl + shift + H 莫名其妙的页面就关闭了

0 索引

  1. 进程与进程组
  2. 各种不同的进程
  3. 一个进程的演变

1. 进程

关于进程的结构和性质,就不做过多介绍,具体的可以参考下之前的几篇文章。

通常而言,我们打开的一个软件(QQ和微信),执行的一个脚本(hello.c、hello.php/hello.java :可以当做运行的一个程序)
都是通过进程的形式。

下图:查看的是所有运行中的进程

clipboard.png

所以无论打开图形界面一个软件,或者终端运行 ,都是包装成一个进程的形式运行

进程的退出 : 是通过信号 退出的

2. 子进程

以nginx 和 php-fpm 为例,他们都是通过父进程,fork 多个子进程。来执行并发请求。
子进程共享父进程的资源和堆栈信息,父进程便于管理子进程。
相当于同时打开多个QQ页面,每一个窗口页面和一个好友聊天,接受和发送当前好友的消息。

clipboard.png

需要注意的是:fork 子进程,会返回二个值。 分别是当前父进程和新生成的子进程。
可以分别对他们得逻辑分别处理。

clipboard.png

先运行父进程逻辑,再运行子进程逻辑。(当前可以通过vfork等暂停父进程的继续流程)

clipboard.png

3. 进程的状态

3.1 进程状态

进程的系统状态有一下几种

clipboard.png

各个状态的调用和切换如下图

clipboard.png

IPC 进程通信,也会影响状态

3.2 查看进程的状态

PS : process status 是一个管理进程状态的内核命令

和系统状态值对应,有以下集中状态值:

clipboard.png

最常用的,我们运行的状态值

  • R : 可运行
  • l : 表示进程是多线程的

PS的参数信息

clipboard.png

-a 是所有的终端
-A: 包括内核的
-r : running 包括正在运行的
-o : 分类输出

3.3 proc

proc 里面包含什么信息

clipboard.png

clipboard.png

3.4.1 查看程序的执行文件

clipboard.png

3.4.2 查看cmd

clipboard.png

3.4.3 查看进程打开的文件

clipboard.png

参考nginx 打开的文件

clipboard.png

4. 简单介绍终端

在介绍终端之前,先简单的介绍下控制台。
如下图所述,控制台一般在服务器独享,客户端连接的地方是终端,可以有多个。

4.1 控制台:

clipboard.png

clipboard.png

4.2 终端在内核中的分类:

clipboard.png

二者之间的关系:

clipboard.png

4.3 不同的终端

  1. 虚拟终端: tty1-tty6 可以通过快捷键切换
  2. 伪终端 PTY SSH 的界面都是伪终端

clipboard.png

伪终端的架构

clipboard.png

// 查看当前终端名
tty

5. 进程组

clipboard.png

6. 会话

clipboard.png

默认打开一个 bash 和一个虚拟终端 /dev/tty1

clipboard.png

构成了一个回话。(用户登录)

clipboard.png

bash : 就是一个shell 进程

然后敲命令:就是重新开启新的进程组

7. 进程的切换

使用伪终端

clipboard.png

ctrl + c 终止后

clipboard.png

s + 代表 又返回了前台进程组了

ctrl + c : 发给了前台进程组了
然后通过shell 切换到了新的前台控制组

clipboard.png

没有登录的终端,没有bash

8. shell

clipboard.png

clipboard.png

clipboard.png

不断的循环这个过程


天真真不知路漫漫
70 声望6 粉丝

1