【Linux】进程_4

文章目录

  • 五、进程
    • [4. 进程状态](#4. 进程状态)
    • [5. 进程优先级](#5. 进程优先级)
    • [6. 进程的调度和转换](#6. 进程的调度和转换)
  • 未完待续

五、进程

4. 进程状态

当进程属于挂起状态时,进程的可执行程序代码和数据均会被从内存中换入到磁盘中,此时进程的PCB并没有消失,只要操作系统还需要管理这个进程,进程的PCB就需要存在,所以我们可以知道:进程的创建肯定是先创建内核数据结构,在将可执行程序的代码和数据拷贝到内存当中。

我们了解了进程的 运行,阻塞,挂起 状态,但是真的只有这些状态吗?真正的操作系统的状态比这要多一些。

Linux下的进程状态
R (running) --- 运行状态
S (sleeping) --- 可中断睡眠状态(就是阻塞状态) --- 浅度睡眠
D (disk sleep) --- 不可中断睡眠状态(也是阻塞状态) --- 深度睡眠(不可被操作系统杀掉
T (stopped) --- 暂停状态 (也算阻塞状态)
t (tracing stop) --- 另一种暂停状态 (也算阻塞状态)
X (dead) --- 死亡状态
Z (zombie) --- 僵尸状态(进程已经死亡,但是父进程尚未读取子进程的结果数据,如果父进程不读取结果,那么僵尸进程将一直存在,占据内存)

如果父进程比子进程先挂掉,就无法读取子进程的结果数据,以至于子进程无法被杀掉,永久成为僵尸进程。。。但是真的会这样吗?操作系统当然不会允许这样的情况出现,父进程先挂掉的子进程会变成 孤儿进程 ,父进程会变成 1号进程(操作系统),相当于被操作系统 "领养" 。孤儿进程也可以有子进程

5. 进程优先级

进程要访问某种资源,进程进行通过一定的方式"排队"(本质上就是 资源过少),确认享受资源的先后顺序。

优先级限制的是先后顺序,而权限限制的是能不能。

Linux的默认优先级是 80 。Linux的优先级是可以被修改的,优先级的范围是[60, 99],数字越小,优先级越高。

6. 进程的调度和转换

进程在运行的时候在CPU上,CPU是一定把进程跑完再跑其他进程吗?非也,在当代操作系统,CPU执行进程都是基于时间片进行轮换执行的。

进程的其他概念:

竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。

独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。

并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。

并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。


未完待续

相关推荐
云上艺旅13 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得20514 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
cg501714 小时前
Spring Boot 的配置文件
java·linux·spring boot
暮云星影14 小时前
三、FFmpeg学习笔记
linux·ffmpeg
rainFFrain14 小时前
单例模式与线程安全
linux·运维·服务器·vscode·单例模式
GalaxyPokemon14 小时前
Muduo网络库实现 [九] - EventLoopThread模块
linux·服务器·c++
mingqian_chu15 小时前
ubuntu中使用安卓模拟器
android·linux·ubuntu
A旧城以西15 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ15 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL0007515 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法