博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程 线程 协程
阅读量:6549 次
发布时间:2019-06-24

本文共 727 字,大约阅读时间需要 2 分钟。

 

黑书 计算机操作系统中说了很多。

首先,在一个cpu的情况下,进程是一个程序运行时的总和,一个时刻肯定只有一个进程在执行,只是cpu会使用进程调度算法来回切换进程而已,就绪,运行,阻塞 三个状态,一般交互式操作系统采用优先级 ,时间轮转,多级反馈队列调度算法等调度算法。

每个进程有一个执行线程,也可以createThread 生成多线程,事实上一个时刻也只能有一个线程在cpu上运行,也是用过调度算法来进行,也是有 就绪,运行,阻塞 三个状态,一般也是时间片轮转算法,优先级算法

 

进程可靠(因为是独立的地址空间,fork生成新的进程),切换开销大(进程表信息多)

线程共享内存,开销小,多个线程是在一个进程之中的

协程开销更小, python和go都有

 

apache是多进程,prework模式是一个进程处理一个请求

 

nginx也是多进程模式,一个master,多个woker,但是加入了异步非阻塞模式

 

mysql采用多线程,但是你ps看到的会有多个进程,是因为MySQL一直都是单进程、多线程的工作模式。只是,LinuxThreads并不是真正的线程,因此,这些进程其实还是采用系统调用 clone() 来共享同样的地址空间的。尽管采用 ps 查看的结果看起来是多进程,其实mysqld真正的工作方式还是多线程。

 

 

http://blog.csdn.net/davissuperman/article/details/40738507

 

http://www.cnblogs.com/lianzhilei/p/6029100.html

 

http://blog.csdn.net/lishenglong666/article/details/8557215

你可能感兴趣的文章
全半角
查看>>
【ZJOI2012】灾难
查看>>
Java EE (5) -- Java EE 6 JavaServer Faces Developer Certified Expert(1z0-896)
查看>>
关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
查看>>
html简历
查看>>
iOS9 系统分享调用(UIActivityViewController)
查看>>
Linux常用网络工具:hping高级主机扫描
查看>>
Rsync+sersync实现实时同步
查看>>
python核心编程第二版(第三章作业)
查看>>
秋季学习总结
查看>>
Alpha 冲刺 (1/10)
查看>>
ostack
查看>>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
查看>>
dedecms
查看>>
阿里云ubuntu服务器安装使用mysql并配置远程连接记录
查看>>
js 变量作用域 与 this
查看>>
arrow function
查看>>
AOP的XML实现方式
查看>>
linux普通用户获取管理员权限
查看>>
PHP是干什么用?
查看>>