.理解进程和线程

1.1 什么是进程

1. 进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。

2. 它包含了程序执行所需的各种资源,如内存空间、文件描述符等

3. 每个进程都有自己独立的内存空间和系统资源,不同进程之间相互隔离

4. 程序是静态的代码文件

5. 进程是程序运行时的形态

6. 进程是程序的一个副本

7. 进程是有生命周期的(准备期,运行期,终止期)

举几个生活化例子可以更好理解: 
1. 你手机点开微信,微信这个运行状态,就是一个进程;关掉微信,这个进程就消失了。

2. 同时开微信,B站,鸣潮就是同时跑了好几个进程。

简而言之,进程=正在运行的程序

- 程序:躺在文件夹里、没点开的文件(静态,不会干活)

- 进程:把程序打开、CPU开始干活(动态,占用手机/电脑资源)
 
一句话总结:程序是“文件”,进程是“跑起来的文件”

1.2 什么是线程

1. 线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。

2. 一个进程可以包含多个线程,这些线程共享进程的内存空间和系统资源

3. 每个线程有自己独立的栈空间和程序计数器、

4. 线程之间可以并发执行,提高程序的执行效率

5. 当进程是多任务,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程

简单来讲,线程 = 进程里同时干活的小分工/小流水线 
继续用微信的例子:
微信(一个进程)打开后,一边收消息、一边刷朋友圈、一边播放语音,这些同时在做的不同事,就是一个个线程。

二.进程状态

进程状态说明:
R(TASK_RUNNING):可执行态(running / ready)
S(TASK_INTERRUPTIBLE):可唤醒休眠
D(TASK_UNINTERRUPTIBLE):不可唤醒休眠
T(TASK_STOP):暂停状态
Z(TASK_ZOMBIE):僵死态

三.进程查看的方法

3.1在图形中查看进程

# gnome-system-monitor #打开图形中的进程管理工具

3.2常用进程查看命令的使用

3.2.1 ps

#默认执行

#默认显示的内容只有当前终端中运行放到进程

#BSD风格参数
# x 表示显示系统中所有无字符设备使用进程

# a 表示显示系统中所有有字符设备使用的进程

#ax查看系统中所有进程

# u 用户信息归类的查看方式

#f 显示进程层级关系

#o 显示指定系数

#unix

#-e 显示所有进程

#-f 显示信息的完整格式

#-H 显示进程的层级结构

#-o 显示指定参数

#--sort=

3.2.2 pgrep

#-u uid 显示指定用户进程

#-l 显示进程名称

#-U user 显示指定用户进程

#-t tty 显示指定终端进程

3.2.3 pidof

##查看vim的pid

3.2.4 top

         #top内部指令:
                    #P cpu排序
                    #M 内存排序
                    #T 累计占用cpu时间排序
                    #l 关闭/开启uptime信息
                    #t 关闭/开启cpu&tasks
                    #s 指定刷新频率
                    #k 操作进程,按完k键后输入指定进程的id然后在输入9即可关闭进程
                    #u 查看指定用户进程 按u然后输入用户名字回车即可

四.进程的前后台调用

<ctrl>+<z>         ##把占用shell的进程打入后台挂起
bg                 ##把后台挂起的进程运行起来
fg                 ##把后台进程调回前台
命令&            ##运行进程在后台
jobs             ##查看当前shell中在后台的所有工作

五.进程优先级

5.1 调整已经开启的进程优先级

5.2 当开启进程时任何指定优先级

六.进程信号控制

6.1 kill pid

6.2 killall 进程名字

6.3 pkill 进程条件

七.系统守护进程

7.1 用sshd来理解守护进程

#开启2个虚拟机并查看两个虚拟机的IP

#登录远程主机

7.2 服务控制命令

list-units ##查看系统所有服务当前状态

list-unit-files ##查看服务开机状态

list-dependencies ##列出服务依赖性

mask ##冻结服务

unmask ##解锁

##系统运行模式

#0-6

#0 关机

#1 单用户模式

#2 无图形网络模式

#3 无图形网络模式

#4 无图形网络模式

#5 图形网络模式

#6 重启

小结

如果说Linux系统是一座城市,那进程就是街上来来往往的车辆,怎么样做好一名合格的城市交通管理员是一门学问,管理好系统里的“进程车”,城市才能顺畅运行,虽然我还是只是一名实习交警嘻嘻,但我还在继续努力!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐