时间片

并发编程之线程共享和协作(一)

匿名 (未验证) 提交于 2019-12-03 00:17:01
更多Android架构进阶视频学习请点击: https://space.bilibili.com/474380680 本篇文章将从以下几个内容来阐述线程共享和协作: [基础概念之CPU核心数、线程数,时间片轮转机制解读] [线程之间的共享] [线程间的协作] 一、基础概念 CPU核心数、线程数 两者的关系:cpu的核心数与线程数是1:1的关系,例如一个8核的cpu,支持8个线程同时运行。但在intel引入超线程技术以后,cpu与线程数的关系就变成了1:2。此外在开发过程中并没感觉到线程的限制,那是因为cpu时间片轮转机制(RR调度)的算法的作用。什么是cpu时间片轮转机制看下面1.2. CPU时间片轮转机制 含义就是:cpu给每个进程分配一个“时间段”,这个时间段就叫做这个进程的“时间片”,这个时间片就是这个进程允许运行的时间,如果当这个进程的时间片段结束,操作系统就会把分配给这个进程的cpu剥夺,分配给另外一个进程。如果进程在时间片还没结束的情况下阻塞了,或者说进程跑完了,cpu就会进行切换。cpu在两个进程之间的切换称为“上下文切换”,上下文切换是需要时间的,大约需要花费5000~20000(5毫秒到20毫秒,这个花费的时间是由操作系统决定)个时钟周期,尽管我们平时感觉不到。所以在开发过程中要注意上下文切换(两个进程之间的切换)对我们程序性能的影响。 二、 线程之间的共享

Linux 线程调度

匿名 (未验证) 提交于 2019-12-02 21:59:42
1.线程sleep()后,会让出cpu的时间片,交由其他线程进行抢占cpu。 线程之间正常的切换是依靠时间片的。 当主线程没有结束,且其在所占有的时间片内,并没有结束自己的工作,此时,子线程将会抢占cpu时间片。 参考帖子以及下面的评论:https://blog.csdn.net/harry_lyc/article/details/6055734#reply 原文:https://www.cnblogs.com/xuelisheng/p/9277401.html

Java学习笔记【保持更新】

匿名 (未验证) 提交于 2019-12-02 21:52:03
主要参考资料:https://www.bilibili.com/video/av56034035; https://www.bilibili.com/video/av61604219 本文仅用于学习,如有侵权,请联系我,一定删除 语言特性 由C和C++继承了许多成分,变量声明、操作符、参数传递和控制流程等完全相同。 纯粹的面向对象 舍弃了指针(以引用取代)、运算符重载、多重继承等 增加了垃圾回收、泛型编程、类型安全的枚举、不定长参数和自动装/拆箱 易学 分布式 健壮 :丢弃指针,自动回收(免去了程序员忘记回收的问题) 开源社区成熟 解释型 原生多线程 JAVA技术平台 SE:俗称核心JAVA JAVA学习流程 Java是一个统称 包含javase 与Javaee(还有一个几乎没人用的javame) 是Sun公司,也就是现在的Oracle(把Sun给收购了)公司的一门面向对象的开源语言。 javase 是java的一部分,也是基础的基础,主要是用来做桌面程序的,就像我们平时下载用的那些软件,也就是楼上说的那些客户端程序。但是用Java做软件的话,前途不明朗。 jsp 是一种动态的页面,运行于服务器(tomcat、 jboss等),里面可以嵌套有html 或javase、Javascript的代码。 至于javaweb那就大了,它包含了以上所有的东西,并且还有一些框架(例如

操作系统发展 和 并发

徘徊边缘 提交于 2019-12-01 20:06:52
目录 一、 操作系统发展 1. 手工操作——穿孔卡片 2.批处理——磁带存储 2.1联机批处理系统 2.2 脱机批处理系统 3. 多道程序系统 3.1 多道程序设计技术 3.2 单道的程序运行 3.3 多道的程序运行 3.4 小结: 3.5 多道批处理系统 4. 分时系统 5. 实时系统 6. 通用操作系统 7. 操作系统的进一步发展 7.1 个人计算机操作系统 7.2 网络操作系统 7.3 分布式操作系统 二、进程基础 1. 必备理论基础 2. 什么是进程 3. 进程与程序的区别 三、进程的调度 1.先来先服务调度算法(FCFS) 2.短作业优先调度算法(SJ/PF) 3. 时间片轮转法(RR) 4. 多级反馈队列 四、进程的并发和并行 五、同步异步阻塞非阻塞 1. 状态介绍 2. 同步和异步 2.1 例子 3. 阻塞和非阻塞 3.1 例子 4. 同步异步 和 阻塞非阻塞 4.1 同步阻塞形式 4.2 异步阻塞形式 4.3 同步非阻塞形式 4.4 异步非阻塞形式 五、进程的创建 1. 4种形式创建新的进程: 2. UNIX和Windows创建进程 六、进程的结束 一、 操作系统发展 1. 手工操作——穿孔卡片 处理机与输入输出设备分别直接连接 。因输入、输出效率最低,导致处理机的利用率最低(资源浪费) 2.批处理——磁带存储 2.1联机批处理系统

【TencentOS tiny】深度源码分析(1)——task

谁说胖子不能爱 提交于 2019-12-01 13:43:50
任务的基本概念 从系统的角度看,任务是竞争系统资源的最小运行单元。TencentOS tiny是一个支持多任务的操作系统,任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行,理论上任何数量的任务都可以共享同一个优先级,这样子处于就绪态的多个相同优先级任务将会以时间片切换的方式共享处理器。 不过 要注意 的是:在TencentOS tiny中,不能创建与空闲任务相同优先级的任务 K_TASK_PRIO_IDLE ,相同优先级下的任务需要允许使用时间片调度,打开 TOS_CFG_ROUND_ROBIN_EN 。 简而言之: TencentOS tiny的任务可认为是一系列独立任务的集合。每个任务在自己的环境中运行。在任何时刻,只有一个任务得到运行,由TencentOS tiny调度器决定运行哪个任务。从 宏观 看上去所有的任务都在同时在执行。 TencentOS中的任务是抢占式调度机制,高优先级的任务可打断低优先级任务,低优先级任务必须在高优先级任务阻塞或结束后才能得到调度。同时TencentOS也支持时间片轮转调度方式。 系统默认可以支持10个优先级, 0~TOS_CFG_TASK_PRIO_MAX ,这个宏定义是可以修改的,优先级数值越大的任务优先级越低, (TOS_CFG_TASK_PRIO_MAX - (k_prio_t)1u) 为最低优先级

uC/OS-III 任务详解(四)

放肆的年华 提交于 2019-11-30 19:42:29
uC/OS系统的任务一般都放在最开始介绍,我放在第四章主要是对模糊的概念作清晰的讲解。 从用户的角度来看,uC/OS-III 中的任务可以分为5 种状态,分别是 休眠态、就绪态、运行态、挂起态和中断态 ,如下表所示。 任务状态之间的具体切换情况如下图所示。 也就是说,任务有五个状态,分别是休眠态、就绪态、运行态、等待态、中断服务态。即任务还没使用函数OSTaskCreate()创建时就是属于休眠态,而一但使用函数OSTaskCreate()创建了任务,并且函数OSStart()之前已经被执行的话,那么任务就属于就绪态了。然后系统会根据就绪表里任务的优先级来只执行最高的任务,而这个被执行的任务也从就绪态变为运行态,这个时刻就是这个优先级最高的任务的CPU独享moment(也就是独自拥有CPU的使用权),直到这个任务被被切换成其他状态(使用OSTimeDly()、OSSemPend()等函数 能将运行态的函数变为等待态),那么就绪表里优先级最高的任务就会得到CPU的使用权执行任务,依次循环。 所以我这么分类,如果一个正在执行的任务M(即正在执行优先级最高的任务),它就只有两种情况,A.一直循环执行下去 B.改变自己任务状态。 改变状态也分为 b1.自己任务调用延时类函数或者等待信号值类函数的主动改变; b2.被一个优先级更高的就绪任务H打断的被动改变(也就是只要有优先级更高的就绪任务

python之路——进程

情到浓时终转凉″ 提交于 2019-11-30 07:35:22
python之路——进程 阅读目录 理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 在python程序中的进程操作 multiprocess模块 进程的创建和multiprocess.Process 进程同步控制 —— 锁 进程间通信 —— 队列 进程间的数据共享 —— multiprocess.Manager] 进程池和multiprocess.Pool 理论知识 操作系统背景知识 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统,点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 必备的理论基础: #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核

进程的调度

ぃ、小莉子 提交于 2019-11-30 06:27:25
进程调度 要想多个进程交替运行,操作系统必须对这些进程进行调度,这个调度也不是随即进行的,而是需要遵循一定的法则,由此就有了进程的调度算法。 一、先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可以用于进程调度。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。 二、短作业优先调度算法 短作业(进程)优先调度算法(SJ/PF)是指短作业或短进程优先调度的算法,该算法既可用于作业调度,也可用于进程调度。但其对长作业不利,不能保证紧迫性作业(进程)被及时处理,作业的长短只是被估算出来的。 三、时间片轮转法 时间片轮转(Round Robin,RR)法的基本思路是让每个进程在就绪队列中的等待时间与享受服务的时间成比例。在时间片轮转法中,需要将CPU的处理时间分成固定大小的时间片,例如,几十毫秒至几百毫秒。如果一个进程在被调度选中之后用完了系统规定的时间片,但又未完成要求的任务,则它自行释放自己所占有的CPU而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。 显然,轮转法只能用来调度分配一些可以抢占的资源。这些可以抢占的资源可以随时被剥夺,而且可以将它们再分配给别的进程。CPU是可抢占资源的一种

进程和线程的区别

瘦欲@ 提交于 2019-11-30 03:05:35
原文链接: 进程、线程与处理器的调度 (1)进程的概念(Dijkstra) 进程 是可并发执行的程序在某个数据集合上的一次计算活动,也是操作系统进行资源分配和调度的基本单位。 (2)进程与程序的联系与区别 ① 程序是指令的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。 ② 程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。 注:程序可看作一个菜谱,而进程则是按照菜谱进行烹调的过程。 ③ 进程和程序组成不同:进程是由程序、数据和进程控制块三部分组成的。 ④ 进程与程序的对应关系:通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。 (3)进程的特征 动态性:进程是程序的执行,同时进程有生命周期。 并发性:多个进程可同存于内存中,能在一段时间内同时执行。 独立性:资源分配和调度的基本单位。 制约性:并发进程间存在制约关系,造成程序执行速度不可预测性,必须对进程的并发执行次序、相对执行速度加以协调。 结构特征:进程由程序块 、数据块、进程控制块三部分组成。 进程的三种基本状态: (1)运行态(running) 当进程得到处理机,其执行程序正在处理机上运行时的状态称为运行状态。 在单CPU系统中,任何时刻最多只有一个进程处于运行状态。在多CPU系统中

python之路——进程

流过昼夜 提交于 2019-11-29 21:33:31
阅读目录 理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 在python程序中的进程操作 multiprocess模块 进程的创建和multiprocess.Process 进程同步控制 —— 锁 进程间通信 —— 队列 进程间的数据共享 —— multiprocess.Manager 进程池和multiprocess.Pool 回到顶部 理论知识 操作系统背景知识 回到顶部 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统, 点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 必备的理论基础: #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术