<font color=green><i>好奇----关于WINDOWS对用户程序的管理</i></font>(

  • 主题发起人 主题发起人 cat.yy
  • 开始时间 开始时间
C

cat.yy

Unregistered / Unconfirmed
GUEST, unregistred user!
&lt;font color=green&gt;&lt;i&gt;好奇----关于WINDOWS对用户程序的管理&lt;/i&gt;&lt;/font&gt;(25分)<br /> 1。我知道“消息”是WINNDOWS管理用户程序的一个常用方法,那么
还有哪些方法呢
谁可以提供有关WINDOWS操作系统的资料(网站),中英文都行
(最好是中文的)

2。我很奇怪:WINDOWS是怎么发现某个端口被占用的(我用一根线
将COM1 COM2连起来,系统就指示这两个端口已被占用),它怎么知
道的?----检测电压/电流??
 
; 我是一只十分好奇的程序鬼,大家随便说说
不要求准确的答案,我想对问题先有个感性认识
再找书看看。 说得差不多都有分,不够我再给
本人对“分”一向很慷慨的
 
还有就是Windows属于靠调用Procedure库运作的,好多硬件控制,都由一些API和驱动程序库
完成,不像早期的程序所有的工作必须在一个程序中实现
 
; 按下Ctrl+Alt+Del可以看到WINDOWS运行时必须加载的进程
这些进程之间是怎么通讯的(对硬件的控制只是查看寄存器吗)

“消息”是否是一种“封装”的高级说法,其实质就是“内存”
和“指针”,我的意思是 ---》
(1) WINDOWS 启动后是否开辟了一段固定内存区域存放所有的消息服务程序地址
系统靠指针指来的地址去执行相应的程序
(2) 如果是这样内存中应该有一张“消息地址映射表”记载某消息和它对应的
服务程序的地址
 
对硬件的控制我认为是通过硬件中断, 没有中断的就是定时轮讯端口地址的值.
消息当然就是内存啦, 不过是否开辟了一块固定内存区不知道. 我认为没有固定的.
进程内的消息就保存在进程可访问地址内的内存中, 进程间的消息保存在系统内核可
访问地址内的内存中. 不过不大会是固定的, 是动态分配的.
因为是运行在保护模式下的, 所以肯定有张地址映射表喽.(好象这是Intel本身就提供的
功能, 有关操作有相应的cpu指令)
 
恩,是动态

windows应该有一个(也许是多个?)进程活动在内存中专门负责接收消息字符。
如果是这样 消息的最终归宿应是动态分配的相对固定的一个内存区域(可
能是堆栈),那个负责接收消息字符的活动进程从该区域中读取字符 判断
需要调用哪个消息服务子程序

 
hello 过路的朋友 说两句
 
hello 过路的朋友 说两句
 
看看我的推理对不对

&lt;font color=blue&gt;过路的朋友 随便说说吧&lt;/font&gt;

谁再看看第二个小问吧
 
2. 硬件中断.
 
硬件中断服务程序是怎么知道某个端口被占用的?----检测电压/电流??
 
&lt;font size=5&gt;?&lt;/font&gt;
 
Windows中用消息队列来存放消息,每个Windows程序都有一个主消息处理函数WndProc,这个
函数循环地检索消息队列,看看有没有给自己的消息,如果有,则处理,处理过后通知Windows
这个消息已经处理过了,Windows从队列中将这个消息删除.

Windows中还有另外一个队列,用来存放各种程序所创建的窗口及其窗口的属性
当然还有线程
......
 
系统检测com1时,会产生一个握手信号,而Com2会把这个信号当成其他设备握手请求信号
进行回应,Com1就会检测到被占用,详细资料你可以看一下Rs232和485协议。
 
listen&gt;
PNP也是这么会事的
 
感谢“老屯”!!

to babys:
这个“握手信号”是用“电压”做的(具体到对硬件控制)了
谢谢你
 
后退
顶部