操作系统的可重入性

上一篇 / 下一篇  2007-10-15 23:27:15 / 个人分类:windows操作系统学习

想找操作系统可重入性的相关资料。结果没有找到。看了一下发现可重入性应该是指函数的可重入性。
在cdsn上看到相关解释。摘抄下来做参考。不知道windows是怎样实现这个可重入性的。^_^有待进一步研究。
---------------
要编写可重如函数,光靠控制变量的使用是不够的。还要控制系统资源的使用(例如文件句柄、Socket句柄等等)。  
Dm;k kW#S5UL7a0   51Testing软件测试网 g$m/f] l/m:YB(x\Ha'r
  因此,可重入函数的编写是颇为复杂的。不过,最简单的就是设置临界区保护关键代码。当初,“DOS内核不可重入”是编写TSR(DOS内存驻留程序)的一大难题。后来,微软设置了一个DOS临界区,才使问题基本得以解决。  51Testing软件测试网Q @i*Y#kCKrV
   51Testing软件测试网 u x!RU;R%pC O
  另一方法是上下文切换。将所有关键数据结构封装起来,并定义其复制操作。当需要重入时,复制一份关键数据结构,然后在其上操作。在回写的时候,这种方法依然需要临界区保护。但可以大大减少锁定的时间,避免死锁的发生。  
$xe%tbk,X9{0   51Testing软件测试网W*HQLh qj7["@,[ y6UG
  系统在运行状态下,内存数据区可分为:全局静态区、堆和栈。全局静态区和堆由所有线程共享,栈则局部于线程。全局静态区包括所有全局变量和字符串等数据。堆包括动态分配的内存。局部变量、函数调用参数和返回值、返回地址等等都在栈中分配,函数返回后自然释放。   
3aRP^~5`l,xY_0  ------------
楼上的全面  
X1muf[WI'i p0  不过,一切全局/公用资源,都可以概括为“全局变量”,或者更时髦点,叫“全局对象”,例如屏幕(其实是显示缓冲区)、设备等。对变量的理解不必那么狭义。并非只有内存单元才是变量。  
%M5kQ4fR;F5fz3`N0   
I9?N gn'E._h0  解决“全局变量”问题的办法有两个:  
\7a+Y#ueI"nyK^0   51Testing软件测试网 f-C*w!Cu"?A9L H
  1.   “消极”的,即不去访问任何全局变量,只要做到这点就肯定是可重入的了(虽然可能完成不了什么有意义的功能)。  
t fC G] w0   
@x`*nTV"O4K(N&g T3UG0  2.   有时为了完成必要的功能,必须访问全局变量(主要是公用的系统资源,例如文件、端口等)。这时就必须用楼上的办法。  

TAG: windows操作系统 可重入性 windows操作系统学习

 

评分:0

我来说两句

日历

« 2024-04-22  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 3566
  • 日志数: 6
  • 建立时间: 2006-12-15
  • 更新时间: 2008-08-27

RSS订阅

Open Toolbar