Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121103
  • 博文数量: 31
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 361
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-11 15:38
文章分类

全部博文(31)

文章存档

2008年(31)

我的朋友

分类: LINUX

2008-05-01 11:23:36

     今天在看进程调度的时候,里面涉及到了Linux的时钟中断,在这里我就顺便说一下Linux的时钟中断。

     在对8253进行初始化的时候,会让8253每隔10ms发送一个中断,系统就会调用时钟中断处理程序timer_interrupt,这个过程在system_call中定义的。它的工作就是让系统的嘀哒数加1,并调用do_timer()函数,这个函数会根据特权级对当前进程的运行时间做累计,也就说根据当前进程是内核态还是用户态对相应的时间统计加1。然后检查如果当前进程的时间片减1后仍然大于0,则直接返回。否则,就说明当前进程的时间片用完了,检查当前进程是用户进程还是系统,如果是用户进程,则调用schedule()执行进程调度,如果是系统进程,则直接返回,因为系统的运行是不可抢占的。

阅读(877) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~