进程线程的调度阻塞唤醒

简介:

1Cpu线程调度

1一个CPU最多可以运行一个进程或者一个线程,如果是双核的CPU最多可运行 两个进程或两个线程, 操作系统是多任务操作系统,他不止同时运行两个任务,可能有很多个,如word文档,QQ,音乐,浏览器,等都是一个或多个进程或线程, 如果要跑这个多个进程 每个进程都对应一个应用程序,或里面的线程, 如果有N个这样的线程,那么一个2核的CPU 处理这样的线程, 每一次 一个核只能挂一个线程, 这时候就涉及到调度。

2什么是调度怎么调度: OS会给每个进程或线程可调度的单元 一个叫做时间片的东西,根据线程的级别给时间片,每个CPU 执行这个线程时间是根据这个时间片决定的,然后把这个线程挂起,就是暂停,然后这个CPU的核去执行另一个线程 执行完所有线程后,回来又开始执行第一个线程或进程。 每一个线程根据时间片一次进行调度,这样就保证了每个线程都能被执行的到, 人类是感觉不到这个暂停的,因为CPU速度是非常快的,
线程会经常休眠,强制休眠就是 时间片到了,系统给你休眠挂起, 还有就是主动休眠, 例如一个程序窗口
打开后不去动他,他就是休眠状态。

3主动休眠: 比如说 c语言的Read读取文件的函数 调用之后 就会主动休眠,他要等OS 从磁盘里读取文件数据到内存,然后这个线程才会被唤醒,读到文件,满足他继续往下的条件。

4阻塞与唤醒:比如一个网卡,他和OS相连 有很多的SOCKET对象,又有很多的线程,其中的线程就阻塞在这个socket对象上面, 知道OS线程读取到网卡的数据,然后解析到这个socket对象上,这时候就会唤醒这个线程。


 本文转自超级极客51CTO博客,原文链接:http://blog.51cto.com/12158490/2057840,如需转载请自行联系原作者



相关文章
|
12月前
|
Java API 调度
从阻塞到畅通:Java虚拟线程开启并发新纪元
从阻塞到畅通:Java虚拟线程开启并发新纪元
516 83
|
9月前
|
Java 测试技术 API
【JUC】(1)带你重新认识进程与线程!!让你深层次了解线程运行的睡眠与打断!!
JUC是什么?你可以说它就是研究Java方面的并发过程。本篇是JUC专栏的第一章!带你了解并行与并发、线程与程序、线程的启动与休眠、打断和等待!全是干货!快快快!
1204 2
|
9月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
420 1
|
9月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
390 1
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
471 67
|
调度 开发工具 Android开发
【HarmonyOS Next】鸿蒙应用进程和线程详解
进程的定义: 进程是系统进行资源分配的基本单位,是操作系统结构的基础。 在鸿蒙系统中,一个应用下会有三类进程:
449 0
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
373 0
|
SQL 监控 网络协议
YashanDB进程线程体系
YashanDB进程线程体系
|
数据采集 Java 数据处理
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
792 0
|
Linux 数据库 Perl
【YashanDB 知识库】如何避免 yasdb 进程被 Linux OOM Killer 杀掉
本文来自YashanDB官网,探讨Linux系统中OOM Killer对数据库服务器的影响及解决方法。当内存接近耗尽时,OOM Killer会杀死占用最多内存的进程,这可能导致数据库主进程被误杀。为避免此问题,可采取两种方法:一是在OS层面关闭OOM Killer,通过修改`/etc/sysctl.conf`文件并重启生效;二是豁免数据库进程,由数据库实例用户借助`sudo`权限调整`oom_score_adj`值。这些措施有助于保护数据库进程免受系统内存管理机制的影响。