2 进程管理
发表于|更新于|操作系统
|总字数:27|阅读时长:1分钟|浏览量:
进程管理
目录
- 进程的基本概念
- 进程控制
- 进程同步
- 进程通信
- 线程
文章作者: Estom
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Estom的博客!
相关推荐

2021-04-06
附录8 同步异步、阻塞非阻塞
同步异步、阻塞非阻塞、网络编程与并行编程 参考文献 https://www.zhihu.com/question/19732473/answer/14413599 https://www.cnblogs.com/shiysin/articles/10689761.html https://blog.csdn.net/jolin678/article/details/49611587 https://blog.csdn.net/qq_40989769/article/details/110481553 0 问题概述背后的思想 我觉得,同步异步,更像是思想,是一种哲学思想,而不是某种具体的技术或者方案,它在不同的环节,能够表现出不同的形式。 我觉得,在这个问题上,我过度思考了,太想把这两个次应用到不同的领域,因为在不同的领域都见过。通信就是通信,有很多种通信方式和机制。设备IO就是设备IO也有很多不同的实现方案,没有必要非得对应到同步和异步上。像,通信,就那几种机制,直到就行,干嘛非得划分为同步通信或者异步通信? 不应该以同步和异步来划分领域,而应...

2021-04-15
5.3 IO多路复用模型
actorhttps://zhuanlan.zhihu.com/p/372277468 演进过程 如果要让服务器服务多个客户端,那么最直接的方式就是为每一条连接创建线程。 创建一个「线程池」,将连接分配给线程,然后一个线程可以处理多个连接的业务。 这样又引来一个新的问题,单个线程怎样才能高效地处理多个连接的业务?当一个连接对应一个线程时,线程一般采用「read -> 业务处理 -> send」的处理流程,如果当前连接没有数据可读,那么线程会阻塞在 read 操作上( socket 默认情况是阻塞 I/O),不过这种阻塞方式并不影响其他线程。 就是将 socket 改成非阻塞,然后线程不断地轮询调用 read 操作来判断是否有数据,这种方式虽然该能够解决阻塞的问题,但是解决的方式比较粗暴,因为轮询是要消耗 CPU 的,而且随着一个 线程处理的连接越多,轮询的效率就会越低。 I/O 多路复用。I/O 多路复用技术会用一个系统调用函数来监听我们所有关心的连接,也就说可以在一个监控线程里面监控很多的连接。 我们熟悉的 select/po...

2021-04-19
2.6 协程
协程 最大的优势就是协程极高的执行效率。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 第二大优势就是不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。 因为协程是一个线程执行,那怎么利用多核CPU呢?最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。

2024-02-27
32 Arthas问题排查工具
1 简介概述Arthas 是Alibaba开源的Java诊断工具。可实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。 解决的问题1.这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?2.我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?3.遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?4.线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!5.是否有一个全局视角来查看系统的运行状况?6.有什么办法可以监控到JVM的实时运行状态? 参考文档https://blog.csdn.net/ls18802694089/article/details/134678902 https://arthas.gitee.io/doc/quick-start.html 2 使用1.下载启动demo java程序是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出...

2021-03-30
2.5 进程与线程
1 进程与线程进程 进程是资源分配的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 线程 线程是独立调度的基本单位。一个进程中可以有多个线程,它们共享进程资源。 线程栈是在进程的堆中分配栈空间,每个线程拥有独立的栈空间,为了避免线程之间的栈空间踩踏,线程栈之间还会有以小块guardsize用来隔离保护各自的栈空间,一旦另一个线程踏入到这个隔离区,就会引发段错误。 QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 区别 调度。线程是独立调度的基本单位,进程是资源分配的基本单位。在同一进程中,线程的切换不会引起进程切换,从一个进程中的线程切换到另一个进程中的线程时,会引起进程切换。 并发性。线程使得操作系统具有更好的并发性,从...

2021-12-24
pstack
pstack显示每个进程的栈跟踪 补充说明pstack命令 可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行。可以使用 pstack 来确定进程挂起的位置。此命令允许使用的唯一选项是要检查的进程的 PID。 命令软件包下载地址:https://packages.debian.org/sid/pstack 实例pstree以树结构显示进程 1234567pstree -p work | grep adsshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552) |-{ad_preprocess}(4553) |-{ad_preprocess}(4554) ...
公告
欢迎参观Estom的小屋




