阻塞计数器,阻塞计算机
大家好,今天小编关注到一个比较有意思的话题,就是关于阻塞计数器的问题,于是小编就整理了2个相关介绍阻塞计数器的解答,让我们一起看看吧。
进程的阻塞和挂起的区别?
进程的阻塞:进程因等待某一件事情(如等待I/O设备)而暂时不能运行的状态,此时即使处理机空闲,进程也无法使用。系统中处于阻塞态(又称封锁态、等待态、睡眠态)的进程也可以有多个。进程的组成 程序: 描述了进程所要完成的功能。是进程存在的物质基础。数据: 是程序加工的对象。进程控制块PCB:用来描述进程的一切静态和动态的特征,操作系统只能通过它来感知和管理进程。每个进程都有且仅有一个进程控制块。进程控制块的内容:PCB的具体内容随不同系统而异,一般包括以下信息: · 进程标识: 唯一地标识进程的名称或代码 · 进程状态: 标识进程是运行态、就绪态或阻塞态 · 进程实体: 指示进程的程序部分和数据部分在存储器中的位置和大小 · 调度信息(优先数): 确定就绪进程转为运行进程的优先级 · ***信息: 描述内存占用、外设占用等信息 · 现场信息: 包括程序计数器、程序状态字、累加器、变址寄存器的当前值 · 进程通信信息:用于进程间的通信操作系统中挂起和阻塞的区别如下:
一:挂起是一种主动行为,因此恢复也应该要主动完成,而阻塞则是一种被动行为,是在等待***或***时任务的表现,你不知道他什么时候被阻塞(pend),也就不能确切 的知道他什么时候恢复阻塞。而且挂起队列在操作系统里可以看成一个,而阻塞队列则是不同的***或***(如信号量)就有自己的队列;
二:阻塞(pend)就是任务释放CPU,其他任务可以运行,一般在等待某种***或信号量的时候出现。挂起(suspend)不释放CPU,如果任务优先级高就永远轮不到其他任务运行,一般挂起用于程序调试中的条件中断,当出现某个条件的情况下挂起,然后进行单步调试;
三:pend是task主动去等一个***,或消息.suspend是直接悬挂task,以后这个task和你没任何关系,任何task间的通信或者同步都和这个suspended task没任何关系了,除非你resume task;
四:任务调度是操作系统来实现的,任务调度时,直接忽略挂起状态的任务,但是会顾及处于pend下的任务,当pend下的任务等待的***就绪后,就可以转为ready了。ready只需要等待CPU时间,当然,任务调度也占用开销,但是不大,可以忽略。可以这样理解,只要是挂起状态,操作系统就不在管理这个任务了;
五:挂起是主动的,一般需要用挂起函数进行操作,若没有resume的动作,则此任务一直不会ready。而阻塞是因为***被其他任务抢占而处于休眠态。两者的表现方式都是从就绪态里“清掉”,即对应标志位清零,只不过实现方式不一样。
rtos线程阻塞是怎么实现的?
rtos线程阻塞通过定义空闲线程栈,控制块,函数以及初始化,进行混合系统调度,使用SysTick_Handler 中断服务函数,rt_interrupt_nest中断计数器,是一个全局变量,用了记录中断嵌套次数。当 BSP 文件的中断服务函数进入时会调用该函数,应用程序不能调用,切记,最后再进行main函数载入。
RTOS 中的延时叫阻塞延时,即线程需要延时的时候,线程会放弃 CPU 的使用权,CPU 可以去干其它的事情,当线程延时时间到,重新获取 CPU 使用权,线程继续运行,这样就充分地利用了 CPU 的***,而不是干等着。如果没有其它线程可以运行,RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程,且空闲线程的优先级最低。
到此,以上就是小编对于阻塞计数器的问题就介绍到这了,希望介绍关于阻塞计数器的2点解答对大家有用。
[免责声明]本文来源于网络,不代表本站立场,如转载内容涉及版权等问题,请联系邮箱:83115484@qq.com,我们会予以删除相关文章,保证您的权利。转载请注明出处:http://www.onosokkii.com/post/75105.html