📄 05.htm
字号:
Linux重点行业应用市场份额统计</A> <SPAN
class=content01>(2002.12.23)</SPAN></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- 包含相关文章结束--><BR><!-- 包含信息化大赛开始 --><!-- 包含信息化大赛结束 -->
<TABLE cellSpacing=0 cellPadding=0 width=580 align=center border=0>
<TBODY>
<TR>
<TD> </TD></TR></TBODY></TABLE><!-- 包含相关评论开始-->
<TABLE
style="BORDER-RIGHT: #e2e3e4 1px solid; BORDER-TOP: #e2e3e4 1px solid; BORDER-LEFT: #e2e3e4 1px solid; BORDER-BOTTOM: #e2e3e4 1px solid"
cellSpacing=0 cellPadding=0 width=580 align=center border=0>
<TBODY>
<TR>
<TD class=content bgColor=#e2e3e4 height=21><IMG height=5 src=""
width=10><IMG height=13 src="05.files/icon_1.gif" width=14
align=absMiddle> 相关评论</TD></TR>
<TR>
<TD vAlign=top bgColor=#ffffff>
<TABLE class=Name02 cellSpacing=1 cellPadding=1 width="100%"
bgColor=#e1e1e1 border=0>
<TBODY>
<TR>
<TD bgColor=#ffffff height=23>1.小柯分析得正确!
看代码。实际上kernel的核心部分即为调度程序scheduler,它在系统的时钟中断驱动下运行,
即每一次时钟中断它都会运行一次。进入kernel后它首先将kernel的堆栈设定在内存的高端区
而后就进行进程的初始构造工作,就是创造进程,使进程只是具备了运行的条件,进程要真正能
运行须得到scheduler的调度才行。此时整个系统的堆栈空间均在kernel的堆栈中。如小柯所
说“此时中断到来时将会把Kernel的现场信息压入Kernel的堆栈。” 而后的 cli
关了中断,cpu不会执行此时发生的中断程序,困为它要修改中断向量表,所以必须 关中断.中断向量表修改完成后, sti
开中断,允许中断进入。这时如果有中断到来调度程序 scheduler就开始工作了。sti后,内核用 jmp $
来等待中断的到来,它是一个死循环,一旦时钟中断的到来,它就从死循环中跳出来,(它也不会
返回了)。此时系统就由scheduler来将3个进程分时调度运行了。 不知对否,请高手来讨论切磋。。<SPAN
class=content01> (<A
href="mailto:jockeyson@hotmail.com">osfan</A> Mar 13,
2003 1:34:11 PM)</SPAN></TD></TR>
<TR>
<TD bgColor=#ffffff height=23>2.看代码。 ....mov ax, task3 ;
进程3入口地址 call taskinit ; 初始化进程3; 重新设置系统定时器的中断向量cli
;关中断,以免在设置中断向量发生意外 mov ax, KERNELSEG push ds ;保存ds值 mov bx,0
mov ds,bx ;ds=0mov word [ds:0x08*4], scheduler ;
定时器中断向量偏移送到0:20~0:21mov word [ds:0x08*4 2], ax ;
定时器中断向量段地址送到0:22~0:23 ; 重新设置键盘的中断向量 mov word [ds:0x09*4],
keybd ; 键盘的中断向量偏移送到0:24~0:25mov word [ds:0x09*4 2], ax ;
键盘的中断向量段地址 0:26~0:27pop ds ; 恢复ds值sti ; 开中断,允许中断进入jmp $ ;
kernel在此等待时钟中断的到来 ....<SPAN class=content01> (<A
href="mailto:jockeyson@hotmail.com">osfan</A> Mar 13,
2003 1:33:20 PM)</SPAN></TD></TR>
<TR>
<TD bgColor=#ffffff height=23>3.test<SPAN class=content01> (<A
href="mailto:test">test</A> Mar 13, 2003 1:32:11
PM)</SPAN></TD></TR>
<TR>
<TD bgColor=#ffffff
height=23>4.进一步讨论:内核初始化完毕后,并未启动其它任一个进程,那么此时中断到来时将会把Kernel的现场信息压入Kernel的堆栈,而不是其他进程的栈空间,此后,才如文章中所述的那样在三个进程间切换,而Kernel则再也没有机会运行了。(不知分析是否正确)<SPAN
class=content01> (<A
href="mailto:gemigao@sohu.com">小柯</A> Mar 13, 2003
11:30:46 AM)</SPAN></TD></TR>
<TR>
<TD bgColor=#ffffff height=23>5.在WIN98下怎么调?<SPAN
class=content01> (<A
href="mailto:tulips@mail.china.com">蒋海明</A> Mar 5, 2003
8:14:12 PM)</SPAN></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><!-- 包含相关评论结束 -->
<TABLE cellSpacing=0 cellPadding=0 width=580 align=center border=0>
<TBODY>
<TR>
<TD> </TD></TR></TBODY></TABLE><!-- 包含评论表开始-->
<TABLE
style="BORDER-RIGHT: #e2e3e4 1px solid; BORDER-TOP: #e2e3e4 1px solid; BORDER-LEFT: #e2e3e4 1px solid; BORDER-BOTTOM: #e2e3e4 1px solid"
cellSpacing=0 cellPadding=0 width=580 align=center border=0>
<TBODY>
<TR>
<TD class=content01 width=489 bgColor=#e2e3e4 height=23><IMG
height=5 src="" width=20>发表评论:</TD>
<TD class=content01 width=103 bgColor=#e2e3e4><A
href="http://developer.ccidnet.com/pub/disp/ListComment?articleID=35453&articleURL=/pub/disp/Article?columnID=303$articleID=35453$pageNO=2&articleTitle=编写实模式多任务操作系统模型之二&channelid=287"
target=_blank>查看更多评论</A></TD></TR>
<TR>
<TD class=content align=middle colSpan=2>
<TABLE class=content cellSpacing=5 cellPadding=0 width=580
align=center border=0>
<FORM name=form2 action="" method=post><INPUT type=hidden
value=/pub/disp/Article?columnID=303$articleID=35453$pageNO=2
name=articleURL> <INPUT type=hidden value=编写实模式多任务操作系统模型之二
name=articleTitle> <INPUT type=hidden value=35453 name=articleID>
<TBODY>
<TR>
<TD noWrap width=90 height=18><FONT
color=#990000>*</FONT>姓 名:</TD>
<TD width=200 height=18><INPUT name=username></TD>
<TD noWrap width=90 height=18><FONT
color=#990000>*</FONT>电子邮件:</TD>
<TD width=200 height=18><INPUT name=email></TD></TR>
<TR>
<TD width=400 colSpan=4><TEXTAREA name=content rows=4 cols=73>请在此填写您的评论</TEXTAREA>
</TD></TR>
<TR>
<TD width=90> </TD>
<TD width=200> </TD>
<TD width=90> </TD>
<TD width=200> <INPUT onclick=javascript:submitForm() type=button value=提交 name=Submit>
<INPUT type=reset value=重填 name=Submit2>
</TD></TR></FORM></TBODY></TABLE></TD></TR></TBODY></TABLE>
<SCRIPT language=JavaScript><!-- function IsEmail(str) { var nLen; var nCnt1, nCnt2; nCnt1=0; nCnt2=0; nLen = str.length; for(var i=0; i<nLen; i++) { if(str.charAt(i)==' ') { return false; } if(str.charAt(i)=='\'' || str.charAt(i)=='\"') { return false; } if(str.charAt(i)=='<' || str.charAt(i)=='>' ) { return false; } if(str.charAt(i)=='@') { nCnt1++; } if(str.charAt(i)=='.') { nCnt2++; } } if( nCnt1!=1 || nCnt2<1) { return false; } else return true; } function ValidateInput(){ if(document.form2.username.value == '') { alert("请填写姓名"); document.form2.username.focus(); return false; } if (IsEmail(document.form2.email.value)==false) { alert("请正确输入您的邮箱地址!"); document.form2.email.focus(); return (false); } return true; }//--></SCRIPT>
<SCRIPT language=JavaScript><!--function submitForm(){ if (ValidateInput()) { url = "Comment?username=" + document.form2.username.value + "&email=" + document.form2.email.value; url = url + "&articletitle=" + document.form2.articleTitle.value; url = url + "&content=" + document.form2.content.value; url = url + "&articleURL=" + document.form2.articleURL.value; url = url + "&channelid=287"; window.open(url,'用户点评提交成功','width=400,height=300') }}//--></SCRIPT>
<!-- 包含评论表结束-->
<TABLE cellSpacing=0 cellPadding=0 width=580 align=center border=0>
<TBODY>
<TR>
<TD> </TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE>
<TABLE height=16 cellSpacing=0 cellPadding=0 width=760 align=center border=0>
<TBODY>
<TR>
<TD width=760 bgColor=#cccc98 height=8></TD></TR>
<TR>
<TD width=760 bgColor=#ffffff height=8></TD></TR></TBODY></TABLE><!-- 模版文件头 -->
<DIV align=center>
<TABLE height=80 cellSpacing=0 cellPadding=0 width=760 align=center border=0>
<CENTER>
<TBODY>
<TR>
<TD class=content01 align=middle height=15>
<P align=center><A class=content01 style="TEXT-DECORATION: none"
href="http://developer.ccidnet.com/">返回主页</A> <A class=content01
style="TEXT-DECORATION: none"
href="http://developer.ccidnet.com/help/webmap.html">网站地图</A> <A
class=content01 style="TEXT-DECORATION: none"
href="http://developer.ccidnet.com/help/aboutus.html">关于我们</A> <A
class=content01 style="TEXT-DECORATION: none"
href="http://developer.ccidnet.com/help/readme.html">使用说明</A> <A
class=content01 style="TEXT-DECORATION: none"
href="http://search.ccidnet.com/">网站检索</A> <A class=content01
style="TEXT-DECORATION: none"
href="mailto:ad@staff.ccidnet.com">联系广告</A> <A class=content01
style="TEXT-DECORATION: none"
href="http://developer.ccidnet.com/pub/disp/Article?columnID=303&articleID=35453&pageNO=2#">页面上端</A></P></TD></TR>
<TR>
<TD align=middle height=5>
<DIV align=center>
<P align=center><IMG height=2 src="05.files/green_dot.gif" width=444><IMG
height=1 src="05.files/green_dot.gif" width=1></P></DIV></TD></TR></CENTER>
<TR>
<TD class=content01 vAlign=top align=middle height=53>
<P align=center>与我们联系:<A class=content01
href="mailto:webmaster@staff.ccidnet.com">webmaster@staff.ccidnet.com</A>
Tel:8610-88558908<BR>发布广告:<A class=content01
href="mailto:ad@staff.ccidnet.com">ad@staff.ccidnet.com</A>
Tel:8610-88558952<BR><A class=content01
href="http://developer.ccidnet.com/help/copyright.htm">Copyright © 2001
CCIDnet.All rights
reserved.</A></P></TD></TR></TBODY></TABLE></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -