网站首页 > 文章精选 正文
上一篇文章讲到了在 Linux系统中,如何通过设置中断来控制进程的运行,这里再来讲一下 Linux下的进程监控机制,主要有两种:
一是内核监控,即通过监控 CPU状态,来判断当前的进程运行情况;
二是线程创建,即通过创建线程来获取 CPU状态。
其实在 Linux下的进程监控机制可以说是和普通操作系统下的进程监控机制没啥区别,唯一不同之处在于内核监控更加准确一些,也就是在内核中可以实时获取 CPU状态。线程创建则是在系统正常运行时,从内核态(内核态->用户态)创建一个或多个线程。这两个过程的区别就在于进程监控更多关注 CPU状态。
一、内核监控进程
上面我们提到了,通过设置中断来控制进程的运行,这种方法是最简单的。而内核监控就不同了,它可以通过获取 CPU状态来判断当前的进程是否正常运行。内核监控进程有两种方式:
1、进程管理器;
2、内核态系统调用。
二、创建线程
创建线程的过程如下:
1.在用户态创建一个进程,并将其启动到用户空间;
2.进程执行完成后,会调用 getchar ()方法获取当前 CPU的状态信息,并将其存储在内核中;
3.当线程创建完成后,会先将内核态的进程挂起,等待其他进程完成后再恢复。
三、线程与进程的关系
进程是在运行时创建的,而线程则是在执行任务时创建的,执行任务时可能会创建多个线程,所以线程和进程之间存在一定的关系。
进程可以看作是操作系统中的一个大型数据结构,每个进程都是一个数据结构,每个进程都有自己的名字、状态、堆栈和线程,所有这些都保存在内核态。
而线程则是操作系统中的一个独立单元,每个线程都是一个独立运行的程序,有自己的生命周期,即当用户进程退出后,线程也就结束了自己的生命周期。
四、总结
由于进程监控机制的存在, Linux系统下的进程在运行时,可以实时获得 CPU的状态,从而及时根据 CPU状态来决定是否执行中断程序。线程创建则是在系统正常运行时,从内核态(用户态->内核态)创建一个或多个线程。由于线程创建的过程不需要中断处理,所以它可以通过多线程来并行处理复杂的业务逻辑,提高系统资源利用率。
当然,在实际应用中,在某些业务场景中可能会存在一些特殊需求,比如使用进程调度器来对不同进程进行调度、使用消息队列来为用户进程提供服务等。这些场景下也可以使用线程创建的方式来实现,但在这里要注意一点的是,线程创建后需要等待一定时间才能进入内核态(用户态->内核态)。
相关资料
在 Linux系统中,有很多相关的资料,比如内核启动过程,进程调度策略,线程调度策略等等,但是由于篇幅原因,这里只介绍内核监控机制与线程创建机制,感兴趣的小伙伴可以自己去查阅相关资料。
猜你喜欢
- 2025-01-02 Socket与TCP协议,利用python打造一个多人聊天室
- 2025-01-02 探讨C语言系统编程中线程的原理以及实现
- 2025-01-02 ffmpeg播放器实现详解 - 创建线程
- 2025-01-02 互联网面试-Java中如何去创建一个线程池?
- 2025-01-02 Python多线程,线程与进程的区别,线程模块及线程的两种创建方式
- 2025-01-02 正确使用线程池的姿势,你在工作中不要只会使用默认的方式创建
- 2025-01-02 Java线程池的正确创建方式
- 2025-01-02 [编程基础] C++多线程入门1-创建线程的三种不同方式
- 2025-01-02 Qt多线程创建
- 2025-01-02 腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)