01spik3nbjl64012940541.gif
# ~9 h3 L2 f! V8 Q点击上方蓝色字体,关注我们5 q4 A# i/ d/ U# k. d- U$ D
8 m. @- o% I" N, A+ `$ L2 K6 n! Q$ B
任务A和任务B按照等长时间轮流占用处理器,在单处理器上造成多个任务同时运行的假象。
i/ L" Z [7 }% a
: T. n9 c9 P$ a7 g+ @- y这里先聊一聊多任务系统架构的分割时间段。
9 T0 D: F( W* _+ o# r( k ^! K* Y: H. Z: h. U/ r
将处理器运行时间分成小的时间段指明了把处理器时间以多大的频率分割成固定长度的时间片段,也叫做多任务系统架构的时钟节拍。作为多任务系统运行的时间尺度,时钟节拍是通过特定的硬件定时器产生的。硬件定时器会产生周期的中断,在相应的中断处理函数中,内核代码得以运行,从而进行任务调度和定时器时间处理等内核工作。
' |0 f6 J+ ^$ d+ C- W: `- W% U ]$ E
+ p3 b& @" ] V$ ] V2 K
zc4k5c4k1tt64012940641.png
; y5 `# z8 g4 H, ~7 ~& E- N
0 O3 v- d" u" W* _- u( `) ~; }硬件定时器中断的时间间隔取决于不同的内核设计,一般是毫秒级的。时钟节拍越快,内核函数介入系统运行的几率就越大,时钟节拍中断响应次数越多,内核占用的处理器时间越长。相反,如果时钟节拍太慢,则导致任务的切换间隔时间过长,进而影响到系统对事件的响应效果。7 l3 H. {! |, b" N+ P3 Y
7 S6 O! W! T9 K$ c举个例子,如下图所示,硬件定时器按照固定的时间间隔产生中断,然后在时钟节拍中断ISR中(图中以T标记)处理内核的工作。T0~T1这段时间是内核占用的时间(时钟节拍处理程序),T1~T2这段时间是任务占用的时间。而T0~T2则是一次时钟节拍的全部时间,可以看出,任务1的本轮执行占用了3个时钟节拍。
. l) ] k M# O, z( @4 j5 ^ |( D. Z! x K U( d
dthk2igm0we64012940742.png
! |7 o# v R) |: _
* `8 L6 q+ x: q5 g( h3 c
因为不同任务的运行路径不同,在某一时刻有些任务可能需要等待一些资源,这时可以通过某种方案,使当前任务让出处理器,从而避免因为任务等待资源而长期占有处理器而使其他任务无法运行。这样多任务机制可以使处理器的利用率得到提高,并提高了系统的处理能力。
( j# z* E2 s3 e; V
" M+ p: } n3 K! {0 d8 m# T在多任务操作系统内核中必须提供解决并发任务的机制。通用操作系统一般以“进程”、“线程"等为单位来管理用户任务。. B7 n7 w8 l7 ^# {- A0 K
/ b; r9 j7 p7 Z, D但在很多嵌入式操作系统中,并没有区分进程和线程,只是把整个操作系统当作一个大的运行实体,其中运行着很多任务。任务通常作为调度的基本单位。
' J' m5 r5 t! ^# a2 A' J: X& ?6 r9 [: |
0vb0cfmy4ue64012940842.png
2 Z) v* _# P2 q( `% i0 ~/ Z& X
往期推荐汽车软件开发V模型过程中AUTOSAR工具链的应用
8 |$ @" v5 t, T. q一文搞懂UART通信协议
+ R6 `/ q" i* D8 P6 G1 z. uLabVIEW显示控件中内容过长设置自动滚动条 ~5 H' t) O2 w$ t7 Z4 g- ~- L
LabVIEW图像模式匹配(基础篇—11)# j( L" z8 V _* f# h5 e1 J
Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)' R4 T$ A, U& P0 Y$ k: F# ^
万万没想到,低功耗也会烧毁元器件?
! D3 M4 Q/ h3 D/ a+ @OpenCV制作类似“全能扫描王”的简易扫描软件( D, m4 q8 U) p5 t
/ n3 q0 A9 ~' J h, _, |+ t! ^; Q( F# r/ t' b9 R
/ I9 q; B5 {- X/ C6 E
zzlvvm20a1x64012940942.jpg
G# @- M5 W5 k- ^( P
wo0203fsyol64012941042.gif
/ D" p5 U" m5 b) v F( g$ X# X点击阅读原文,更精彩~ |