URN Logo
UNIX Resources » Linux » China Linux Forum » Linux内核技术 » 第18页 » 请教关于内核抢占的问题
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.com
  LinuxForum General Chat
  Linux Advocacy
  LinuxForum Polls
  Introductions
  Linux Kernel Support
  Patch Management
  Development Release
  Linux Programming
  Linux Security
  Linux Software
  Linux Hardware Problems
    Linux Video Problems
    Linux Sound Problems
  Linux Networking Support
  Linux Printing Support
  Linux Human Interface Devices Support
  Linux Data Storage Support
  Linux Applications Support
  Linux Installation Support
  Linux Laptops Support
  Linux Motherboard, Chipsets, CPU, Memory
  Miscellaneous
  Debian Linux Support
  Ubuntu Linux Support
  LiveCD Discussions
  Gentoo Linux Support
  Mandrake Linux Support
  Redhat / Fedora Linux Support
  Slackware Linux Support
  SuSE Linux Support
  CentOS Linux Support
  Linux Web Servers
  Linux DNS Servers
  Linux Database Servers
  Linux Email Servers
  Linux FTP Servers
  Linux Squid Proxy Server
  Linux Samba Help
  Linux cPanel Help
  Linux Ensim Help
  Linux Plesk Help
  Linux Webmin / Usermin Help
  Qmail Toaster Help
  Linux Games
  Windows Game Emulation
  Linux Discussions
  General Linux Discussions
  Red Hat Linux Discussions
  More Red Hat Linux Discussions
  Mandrake Linux Discussions
  Slackware Linux Discussions
  SuSE Linux Discussions
  Debian Discussions
  Samba Help
  Linux Security
  Linux Networking
  Gentoo Help
  Operating System Rant Forum
  Hardware Rants
   
请教关于内核抢占的问题
Author: hangelwen    Posted: 2007-11-15 20:21    Length: 1,032 byte(s)
[Original] [Print] [Top]
在中断(或异常)返回时,如果判断是要返回到系统空间(这时肯定是发生了内核控制路径(KCP)嵌套的),且TIF_NEED_RESCHED置位,并且被打断的KCP在打断时是开中断的,则可以进行抢占。
对于为什么被打断的KCP在打断时必须是开中断的,以及如果是关中断的是什么情形,我的理解如下,不是很清楚理解的对不对,请高人指点:)
1.首先,被打断的KCP一定为与异常相关的KCP,因为代码能执行到这里的话必须preempt_count为0,因此被打断的不可能为中断上下文。

2. 如果被打断的异常相关的KCP为关中断,说明这个KCP可能在临界区中存取与中断处理程序共享的资源,因此如果发生抢占,中断会被打开,因此会造成数据损坏。这就是不能抢占的原因.(?) 在这种情况下,当前正在结束的KCP不可能为中断处理程序(因为中断是关的),那么应该为缺页异常,因为异常中只有这个异常可以发生在内核空间(假设内核无BUG)。但是从缺页异常处理函数代码来看,临界区似乎不应该出现缺页异常(异常处理函数会利用in_atomic做判断)。那么,这种情况(被打断的异常KCP打断是关中断)是怎么出现的呢?
3.如果被打断的KCP打断为开中断,则不在临界区,可以进行抢占。
[Original] [Print] [Top]
« Previous thread
64位的SDK有没有什么办法提高compile速度?
Linux内核技术
18
Next thread »
有没有可能性把一个操作系统做成位置无关的代码?
     

Copyright © 2018 UNIX Resources Network, All Rights Reserved.    About URN | Privacy & Legal | Help | Contact us