linux系统硬件定时器中断,问一个关于操作系统的弱智问题

单处理器上运行多个进程,不是很明白。虽然说各进程有自己的时间片。但是在操作系统下有一个调度进程负责进程间切换等工作,如此说来该调度进程是不是一直执行的?如果一直执行,其他进程就没有执行时间了。但是它又可以对各个进程进行调度。

单CPU上一个时刻只运行一条指令,该指令明显只能属于一个活动进程。

那到底是怎么做到的 呢?

|

谁跟你说有调度进程的?进程的调度都是通过定时器实现的,没有专门一个进程负责调度

比如10ms为一个时间片,那么到了10毫秒就会有个时钟中断,保存原来进程的上下文,切换到将要运行的进程上下文

|

LZ:

你说的对,中断不会无缘无故产生,在程序的执行过程中,只有非法指令或软件的中断陷入指令才会进入中断(异常)。

你也知道,还有一种情况就是“CPU中断引脚电平变化导致”。在CPU外围,会有定时器(或者叫计数器)这个硬件,当操作系统在初始化的时候对其设定好之后,就会定时产生中断电平信号了。这些电信号通过中断控制器来传输给你所说的“CPU中断引脚”,中断控制器还起着告诉CPU是哪个中断号的作用,以区别是哪个外围产生的中断。

|

结合楼上各位说法,加上我之前的回复,我综合性地补充几点:

1. 楼上各位都说了,这个调度是由定时器中断来触发的,所以它的调度周期有保证。

2. 至于定时器中断是什么中断,显然是硬件中断,也就是说有个专门的硬件部件来实现这个定时的功能,并在超时那一刻向CPU请求中断,它不受程序影响。

3. 定时器是CPU外围硬件还是CPU内部硬件?虽然楼上有几位说是CPU内部定时器,但是很不幸,真实答案是: 定时器是CPU的外围。

说定时器在CPU内部的兄弟,无疑是从单片机上得到这个信息的。这里我们要搞清楚一个概念:CPU是什么,单片机是CPU不?不,单片机不是CPU,其专业术语叫微控制器(MCU)。它将CPU和一些常用的外围接口例如定时器,串行接口等等集成到一块芯片上,是为MCU。从MCU的角度讲,定时器是内部的。而至于Intel的80x86芯片,则是没有内部定时器的,它也没有任何内部存储,它是“纯正”的CPU,通常采用8253可编程定时器和8259中断控制器来与80x86芯片相配合,以产生所需的定时中断信号。

4. 硬件定时器可以设定定时值吗?答案是当然可以。如果是单片机,其定时器操作就跟普通寄存器操作一样,有专门的一组寄存器来设定定时器。而如果是芯片外部定时器如8253,也是可编程芯片,可以通过CPU的IO口发送信号来与它通讯,进行设定。

如果楼主还是不甚明白,可以参考《微机原理》课程。你这种思考习惯还是很好的。

|

一直执行是没错

不过有一个系统时钟中断,linux pc上是1s 1000次

在这个中断的处理函数里,内核获得cpu控制权,当前进程时间片-1

然后选择合适的进程把cpu使用权交给它

|

有一个硬件可编程定时器定时发中断啊,必须的

|

单处理器上运行多个进程,不是很明白。虽然说各进程有自己的时间片。但是在操作系统下有一个调度进程(是调度内核线程)负责进程间切换等工作,如此说来该调度进程是不是一直执行的(在宏观上是一直执行,一微观上,一个CPU只能跑一个线程)?如果一直执行,其他进程就没有执行时间了。但是它又可以对各个进程进行调度。

单CPU上一个时刻只运行一条指令,该指令明显只能属于一个活动进程。

那到底是怎么做到的 呢(linux是典型的分时多任务OS)?

建议看看源码  ./init/main.c里的asmlinkage void __init start_kernel(void)函数,这里描述了kernel主要启运过程。

|

补充一下,你这个说的是中断陷阱,跟硬件中断没太多关系的,定时器是硬件中断

|

进程的调度 通过定时器实现

|

上面各位说的不错的,是有那么一个中断服务不停的出来调度时间片的。

如果你的中断时间设计比较短,

那么大多时间cpu都在执行你的调度程序了,可以想象一下把中断的时间设计的和你完成调度工作所需要的时间一样多,那就是系统之运行的你这个东西了,cpu全部被占用了。

所以一般来所系统时间片是不会设的很小的

|

中断啊,中断,lz的硬件知识缺乏

|

“定时器”中断,顾名思义阿

|

OS靠定时和中断驱动,其实定时说白了也是中断,明白么?

|

定时器中断

|

LS有几位对硬件不太了解,不只是电平变化会导致中断(那是外部中断),时钟是内部中断的一种,还有很多中断,各位可以去看一下LINUX内核的源码IRQ部分,都是汇编写的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值