有关Linux进程执行顺序的问题

有关Linux进程执行顺序的问题,第1张

if (p1 != 0)

putchar('a')

不会马上输出,会放在缓存中,

因为wait(0)所以缓存中的内容不会flush,只有等到

printf (“\n parent process exit! \n”)

exit(0)

执行完之后才会显示出 a.

c语言中好像有强制 flush()的函数,你可以查一下,那样就可以让a首先输出.

具体的执行过程,其实很简单,你弄明白了fork()函数产生子进程,和返回值,然后考虑到缓存就可以解释.自己可以试着去理解一下.

可以吧,

linux内核的三种调度方法:

1,SCHED_OTHER 分时调度策略,

2,SCHED_FIFO实时调度策略,先到先服务

3,SCHED_RR实时调度策略,时间片轮转

实时进程将得到优先调用,实时进程根据实时优先级决定调度权值,分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。

SHCED_RR和SCHED_FIFO的不同:

当采用SHCED_RR策略的进程的时间片用完,系统将重新分配时间片,并置于就绪队列尾。放在队列尾保证了所有具有相同优先级的RR任务的调度公平。

SCHED_FIFO一旦占用cpu则一直运行。一直运行直到有更高优先级任务到达或自己放弃。

如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FIFO时必须等待该进程主动放弃后才可以运行这个优先级相同的任务。而RR可以让每个任务都执行一段时间。

相同点:

RR和FIFO都只用于实时任务。

创建时优先级大于0(1-99)。

按照可抢占优先级调度算法进行。

就绪态的实时任务立即抢占非实时任务。

请参考


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8433807.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存