免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4135 | 回复: 10
打印 上一主题 下一主题

问个小问题:操作系统中的时间片划分是通过什么机制实现的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-23 17:48 |只看该作者 |倒序浏览
各位搞内核的大虾:
我们在学习的时候,总是时间片、时间片的讲,此时,时间片已经被划分好了。
我想知道的是,时间片是通过什么样的硬件机制实现的???

就象原来在dos下搞一个后台发声程序一样,现在的CPU是什么机制,也是定时的时钟中断吗。那么是哪个中断呢?时间间隔是多少?

论坛徽章:
0
2 [报告]
发表于 2006-01-24 08:58 |只看该作者
时间片根据进程的静态优先级和动态优先级分配:task_struct->static_prio,task_struct->prio
timer interrupt handler中递减时间片值。kernel 2.6时钟中断间隔是1ms。

应该是这样吧,呵呵~

论坛徽章:
0
3 [报告]
发表于 2006-01-24 11:31 |只看该作者
2.6.13开始, 默认HZ=250 系统心博 = 1/HZ
时间片只对normal和RR 任务有意义. 对FIFO任务没意义

任务时间片只和static priority 有关,
根据nice>0 和 nice <=0, 计算任务片的公式不同.
计算公式: time_slice = max [ x*(140 - 任务static priority)/20, HZ*0.005]

如果任务是RR 任务: x = HZ*0.1*4
如果任务是normal 任务,且 nice <0 ,即 static prority < 120, x = HZ*0.1*4
如果任务是normal 任务,且 nice >=0, 即 static prority >= 120, x = HZ*0.1


而且, 在2.6内核中,任务的时间片不能保证任务能持续消耗完所有的时间片,任务的执行时间被裁减成很小的时间片.

论坛徽章:
0
4 [报告]
发表于 2006-01-24 22:14 |只看该作者
根据时钟中断时间的,CPU一般都有几个Timer寄存器!

论坛徽章:
0
5 [报告]
发表于 2006-01-25 01:51 |只看该作者
原帖由 xiaozhaoz 于 2006-1-24 11:31 发表
2.6.13开始, 默认HZ=250 系统心博 = 1/HZ
时间片只对normal和RR 任务有意义. 对FIFO任务没意义

任务时间片只和static priority 有关,
根据nice>0 和 nice <=0, 计算任务片的公式不同.
计算公式: tim ...

真是利害,呜呜....RH442上学过的,又还给老师了.

论坛徽章:
0
6 [报告]
发表于 2006-01-25 15:46 |只看该作者
原帖由 月吻长河 于 2006-1-24 22:14 发表
根据时钟中断时间的,CPU一般都有几个Timer寄存器!

那么应该是这个意思:
   CPU的硬件机制将定时产生时钟中断,例如在dos下是 int 28 每秒钟产生18.2次中断调用.内核通过截获该中断,进入内核的处理模块中,这样内核就能周期性地取得对系统的硬件和软件的绝对控制权而为所欲为了.我当时很迷惑的是:这样的话一个时间片的最小粒度是1/18.2秒.时间太长了吧?!
    后来有位前辈回答,硬件的时钟中断频率是可以改的.通过指令来改就行了.但是一直都没有确切地知道是哪个中断,是那个硬件在使中断的周期性发生.我想不可能是CPU自己,应该是一个外围的芯片,定时触发CPU的一个引脚,引发该中断的.
    一直不知道是哪个外围芯片,是哪个中断.
    不亦悲乎?

论坛徽章:
0
7 [报告]
发表于 2006-01-25 17:26 |只看该作者
8254芯片
IRQ0

论坛徽章:
84
每日论坛发贴之星
日期:2015-12-29 06:20:00每日论坛发贴之星
日期:2016-01-16 06:20:00每周论坛发贴之星
日期:2016-01-17 22:22:00程序设计版块每日发帖之星
日期:2016-01-20 06:20:00每日论坛发贴之星
日期:2016-01-20 06:20:00程序设计版块每日发帖之星
日期:2016-01-21 06:20:00每日论坛发贴之星
日期:2016-01-21 06:20:00程序设计版块每日发帖之星
日期:2016-01-23 06:20:00程序设计版块每日发帖之星
日期:2016-01-31 06:20:00数据库技术版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-16 06:20:00程序设计版块每日发帖之星
日期:2016-01-14 06:20:00
8 [报告]
发表于 2006-01-26 17:38 |只看该作者
看看 ULK 的<<定时测量>> 章的硬时钟一节,

论坛徽章:
0
9 [报告]
发表于 2006-02-05 11:23 |只看该作者
原帖由 芝麻开门 于 2006-1-25 15:46 发表
后来有位前辈回答,硬件的时钟中断频率是可以改的.通过指令来改就行了.但是一直都没有确切地知道是哪个中断,是那个硬件在使中断的周期性发生.我想不可能是CPU自己,应该是一个外围的芯片,定时触发CPU的一个引脚,引发该中断的.
    一直不知道是哪个外围芯片,是哪个中断.
    不亦悲乎?


這個問題我也迷惑過, 後來看ULK2明白了。 PC一般有4個計時資源:1, PIT, 在主板上的, 我們平時說的時鐘中斷一般指它; 2, Pentium有個local APIC Timer, CPU內部的; 3, TSC,CPU內部的,精度與主頻一樣; 4, RTC, 主板上的, 靠主板電池供電, 系統關閉時不受影響。

可能有錯誤, FIXME

论坛徽章:
0
10 [报告]
发表于 2006-03-07 17:32 |只看该作者
赵炯的 linux代码完全解释中写到
#### int32 -- (int 0x20) 时钟中断处理程序。中断频率被设置为100Hz(include/linux/sched.h,5),
# 定时芯片8253/8254 是在(kernel/sched.c,406)处初始化的。因此这里jiffies 每10 毫秒加1。
# 这段代码将jiffies 增1,发送结束中断指令给8259 控制器,然后用当前特权级作为参数调用
# C 函数do_timer(long CPL)。当调用返回时转去检测并处理信号。

还有,每个时钟中断服务会处理什么东西。有一本薄书写的很好,老外写的,国人翻译的,书名忘了,该书的大部分内容是写中断服务处理的具体事情。机在时钟中断这个发动机中,操作系统每次夺取机器的控制权后所例行的公事都有哪些。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP