﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-加文-文章分类-OS</title><link>http://www.cppblog.com/MyCBlog/category/18567.html</link><description>希望是美好的……</description><language>zh-cn</language><lastBuildDate>Fri, 27 Apr 2012 02:24:19 GMT</lastBuildDate><pubDate>Fri, 27 Apr 2012 02:24:19 GMT</pubDate><ttl>60</ttl><item><title>多线程编程的函数库支持</title><link>http://www.cppblog.com/MyCBlog/articles/172175.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Fri, 20 Apr 2012 11:40:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/172175.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/172175.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/172175.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/172175.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/172175.html</trackback:ping><description><![CDATA[静态变量的访问需要序列化，因为静态变量时进程范围可见的。<br />无须序列化堆栈变量的访问，因为每个线程都有自己的堆栈。<br />标准的C运行库，只有有限的几个函数是可重入的，为了满足多线程编程的需要，必须提供可重入的函数库。C运行时函数库提供了其多线程版本的库，也就说单线程编程和多线程编程需要不同的函数库支持。<br />解释：<br />printf函数的运行：当一个程序开始执行时，startup代码自动打开三个标准流：标准输入流stdin，标准输出流stdout，标准错误流stderr，都是静态的，用户不能更改其值。stdout默认是输出到屏幕，printf要调用这个stdout变量，当多个线程同时调用printf函数，有可能引起问题。<br />C运行时函数库LIBCMT.LIB是创建多线程程序使用的，因此是可重入的。库MSVCRT.LIB,他调用共享的动态链接库MSVCRT40.DLL中的代码，也是可重入的。当你的引用程序调用这些库中的函数时，因遵循如下规则：1，调用必须使用C（&#8212;&#8212;cdecl）调用方式；笔筒通过值传递或者指针传递为库函数传递参数。<br />关于可重入：代码可被多个线程共享。<br /><img src="http://www.cppblog.com/images/cppblog_com/mycblog/q.jpg" width="1311" height="646" alt="" /><br /><img src="http://www.cppblog.com/images/cppblog_com/mycblog/3.jpg" width="1301" height="263" alt="" /><br /><img src="http://www.cppblog.com/images/cppblog_com/mycblog/5.jpg" width="1300" height="478" alt="" /><br /><br /><br /><img src ="http://www.cppblog.com/MyCBlog/aggbug/172175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-04-20 19:40 <a href="http://www.cppblog.com/MyCBlog/articles/172175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内核对象</title><link>http://www.cppblog.com/MyCBlog/articles/172172.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Fri, 20 Apr 2012 11:14:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/172172.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/172172.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/172172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/172172.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/172172.html</trackback:ping><description><![CDATA[EventObject &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;事件对象<br />File_MappingObject &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;文件映射对象<br />FileObject &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 文件对象<br />MailSlotObjects &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 油槽对象<br />MutexObjects &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 互斥对象<br />PipeObjects &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;管道独享<br />ProcessObjects &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 进程对象<br />SemaphoreObjects &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;信号量对象<br />ThreadObjects &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;线程对象<br /><br /><br /><br />内核对象时系统区的内存块，只能有操作系统创建和维护；用户只能通过win32Api提供的借口使用。<br />当用户调用win32的aPI时，创建和操作这些对象时，函数返回一个该对象的句柄，这个句柄，可以为进程内的所有线程使用。出于对操作系统健壮性考虑，这些句柄值是与进程相关的。<br />通过如下机制，可以共享内核对象：<br />对象句柄继承；进程间存在父子关系，则共享内核对象。<br />使用命名对象。<br />复制对象句柄。<br /><br /><br />内核对象有个安全描述符。用户对象和其他对象是不能指定安全描述符的。<img src ="http://www.cppblog.com/MyCBlog/aggbug/172172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-04-20 19:14 <a href="http://www.cppblog.com/MyCBlog/articles/172172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>存储系统管理</title><link>http://www.cppblog.com/MyCBlog/articles/170599.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Mon, 09 Apr 2012 09:14:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/170599.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/170599.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/170599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/170599.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/170599.html</trackback:ping><description><![CDATA[<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">程序的处理步骤</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">编译</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">链接</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">静态链接</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">动态链接</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">3)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">装入</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">绝对装入方式</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">静态重定位</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9314;　</span><span style="font-family: 宋体; font-size: 10.5pt">动态重定位</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">内存的分配方式：</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">离散分配方式</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">分页管理</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">分段管理</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9314;　</span><span style="font-family: 宋体; font-size: 10.5pt">段页式管理</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">连续分配方式</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">单一连续分配</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">固定分区分配</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9314;　</span><span style="font-family: 宋体; font-size: 10.5pt">可变分区分配，有四种方式：首次适应算法，循环首次适应算法，最佳适应算法，最差适应算法。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">3.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">虚拟存储器：</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">请求分页</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">Opt</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">Lur</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9314;　</span><span style="font-family: 宋体; font-size: 10.5pt">fifo</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">请求分段</span></p><img src ="http://www.cppblog.com/MyCBlog/aggbug/170599.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-04-09 17:14 <a href="http://www.cppblog.com/MyCBlog/articles/170599.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>操作系统概论</title><link>http://www.cppblog.com/MyCBlog/articles/170598.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Mon, 09 Apr 2012 09:13:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/170598.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/170598.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/170598.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/170598.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/170598.html</trackback:ping><description><![CDATA[<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统的概念、特征、功能和提供的服务</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统是计算机系统资源的管理者，为用户提供接口。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统的功能与特征</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统功能模块作为特殊子程序，为用户提供系统调用。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统作为资源的管理者。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9314;　</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统以进程组织形式为用户提供服务。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9315;　</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统作为服务提供者。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统的发展与分类：单道批处理，多道系统，实时系统，分时系统</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">3.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统的运行环境</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统的进程空间：用户程序区，用户数据区，用户栈区；核心栈区，系统程序以及数据区。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">中断也称外中断，主要是指cpu指令以外的事件的发生；异常称为内中断，也叫例外或者陷入，主要来自于cpu指令内部的事件。异常不能被屏蔽，一旦出现，立即处理。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">3)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">中断的分级</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">4)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">中断/异常相关概念</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">断电：CPU刚执行完的那条指令成为断点。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">恢复点：中断时程序计数器所指的地址为恢复点。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9314;　</span><span style="font-family: 宋体; font-size: 10.5pt">管态和目态</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9315;　</span><span style="font-family: 宋体; font-size: 10.5pt">中断向量以及PS和PC</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">5)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">中断异常处理过程：整个中断/异常从发现到处理完毕是由软件和硬件相互配合协调完成的。在中断处理过程中，一般包括保存现场、分析中断/异常原因、进入不同中断/异常的响应处理程序、最后可能重新选择程序运行、恢复现场等过程。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">6)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">系统调用是管态和目态之间的接口。应用程序通过陷入，进入内核态，os内核运行异常处理程序，系统程序根据系统调用的类型号，检索系统调用的散转表中的服务程序地址，到具体的服务程序进行相应的系统调用，结束后，进行进程调度程序，恢复进程现场。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">7)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">用户界面：用户使用命令语言描述要求计算机去做的事情。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9312;　</span><span style="font-family: 宋体; font-size: 10.5pt">命令语言：系统为支持命令语言的解释执行，设置了一个命令解释程序负责解释执行用户当前输入的命令，用户在终端上输入一条命令时，命令解释程序要做的工作如下：判断命令的合法性；识别命令（如果是简单命令，则进行系统调用）；如果是不认识的命令关键字，则在约定的目录下查找与命令挂念子同名的执行文件，创建子进程去执行&#8220;执行文件&#8221;，等待子进程结束后，返回继续读取下一条命令。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 20pt; margin: 0pt 0px 0pt 21pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 宋体; font-size: 10.5pt">&#9313;　</span><span style="font-family: 宋体; font-size: 10.5pt">图形用户界面：windows系统初始化后，为用户生成了一个explore.exe的进程，运行的是具窗口界面的解释程序。</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 21.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">4.&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">操作系统体系结构</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">1)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">大内核</span></p>
<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: -21.25pt; margin: 0pt 0px 0pt 42.25pt; font: 13px Verdana, Geneva, Arial, Helvetica, sans-serif; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><span style="font-family: 'Times New Roman'; font-size: 10.5pt">2)&nbsp;</span><span style="font-family: 宋体; font-size: 10.5pt">微内核</span></p><img src ="http://www.cppblog.com/MyCBlog/aggbug/170598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-04-09 17:13 <a href="http://www.cppblog.com/MyCBlog/articles/170598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>进程和线程</title><link>http://www.cppblog.com/MyCBlog/articles/170597.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Mon, 09 Apr 2012 09:12:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/170597.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/170597.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/170597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/170597.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/170597.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.&nbsp;进程与线程1)&nbsp;进程概念：由程序和代码、进程空间、系统资源、栈区组成，为对进程管理，通过PCB实现。2)&nbsp;进程的状态和转换：创建，就绪，运行，阻塞，结束。&#9312;　由空到创建：第一个进程有系统初始化产生，以后有父进程通过创建进程的系&nbsp;统调用产生。&#9313;　创建到就绪：创建完成后，进入就绪状态。&#9314;　就绪到运行：...&nbsp;&nbsp;<a href='http://www.cppblog.com/MyCBlog/articles/170597.html'>阅读全文</a><img src ="http://www.cppblog.com/MyCBlog/aggbug/170597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-04-09 17:12 <a href="http://www.cppblog.com/MyCBlog/articles/170597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux常用命令与说明</title><link>http://www.cppblog.com/MyCBlog/articles/166150.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Tue, 21 Feb 2012 09:37:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/166150.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/166150.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/166150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/166150.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/166150.html</trackback:ping><description><![CDATA[<span style="font-family: verdana; font-size: 15px; line-height: 17px; ">INUX 是有许许多多的文件组成的，下面我就详细介绍下常用的一些重要目录</span><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/bin：存放着Linux下常用的命令和工具</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/dev：存放这LINUX下所有的设备文件</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/home：用户家目录 每新建一个用户就会在此自动生成一个同名目录，用户可以在此目录中保存自己的文件</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/lost+found：可以在此目录下查找已丢失的文件</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/mnt：挂载目录或称挂载点，通常用cdrom和floppy两个子目录，如果要使用光盘和软盘的时候就可以挂载到此目录。你只需要在插入光盘</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 后运行mount /mnt/cdrom，就可以将光盘上的内容挂载mount到/mnt/cdrom下，现在就可以访问光盘上的内容了，当要离开光盘的</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;时候应该使用umount /mnt/cdrom卸载该目录， 其它类似。</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/proc：这其实是一个虚拟目录，可以通过此目录来访问内存</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/sbin：此目录和/bin目录类似，也存放着系统命令和工具。</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr：通常用来安装各种软件的目录，类似于windows里面的program File目录</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr/x11R6 XWindow目录 图形界面</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr/bin ：一些安装程序后的命令和工具</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr/sbin：与/usr/bin相同</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr/include 、/usr/lib、/usr/share： 这些目录下存放的是一些共享链接库</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr/local：常用来安装新软件</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/usr/src： Linux源程序</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/boot：Linux就是从这里开始启动的</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/etc：存放着LINUX下大量的配置文件</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/lib：静态链接</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/root：root用户的主目录</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/var：通常用来存放这一些变化中的东西</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/var/log：存放这系统日志</p><p style="font-family: verdana; font-size: 15px; line-height: 17px; ">/var/spool：存放一些邮件、新闻、打印队列等等</p><img src ="http://www.cppblog.com/MyCBlog/aggbug/166150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-02-21 17:37 <a href="http://www.cppblog.com/MyCBlog/articles/166150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>windows应用程序</title><link>http://www.cppblog.com/MyCBlog/articles/165864.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Fri, 17 Feb 2012 15:20:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/165864.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/165864.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/165864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/165864.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/165864.html</trackback:ping><description><![CDATA[windows支持两种应用程序，具体的入口函数如下：<br /><img src="http://www.cppblog.com/images/cppblog_com/mycblog/QQ截图20120217231846.jpg" border="0" alt="" width="571" height="97" /><br /><table style="border-collapse:collapse; padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ; "><tbody><tr><td width="189" valign="top" style="width:142.0500pt; padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ; border-left:0.5000pt solid #000000; border-right:0.5000pt solid #000000; border-top:0.5000pt solid #000000; border-bottom:0.5000pt solid #000000; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">WinMainCRTStarup</span></p></td></tr><tr><td width="189" valign="top" style="width:142.0500pt; padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ; border-left:0.5000pt solid #000000; border-right:0.5000pt solid #000000; border-top:none; ; border-bottom:0.5000pt solid #000000; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">wWinMainCRTStarup</span></p></td></tr><tr><td width="189" valign="top" style="width:142.0500pt; padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ; border-left:0.5000pt solid #000000; border-right:0.5000pt solid #000000; border-top:none; ; border-bottom:0.5000pt solid #000000; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">MainCRTStarup</span></p></td></tr><tr><td width="189" valign="top" style="width:142.0500pt; padding:0.0000pt 5.4000pt 0.0000pt 5.4000pt ; border-left:0.5000pt solid #000000; border-right:0.5000pt solid #000000; border-top:none; ; border-bottom:0.5000pt solid #000000; "><p style="margin-bottom:0pt; margin-top:0pt; "><span style="mso-spacerun:'yes'; font-size:10.5000pt; font-family:'宋体'; ">wMainCRTStarup</span></p></td></tr></tbody></table><br />这些函数为编译器提供的C的运行时函数。<img src ="http://www.cppblog.com/MyCBlog/aggbug/165864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-02-17 23:20 <a href="http://www.cppblog.com/MyCBlog/articles/165864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>显式的加载和卸载DLL</title><link>http://www.cppblog.com/MyCBlog/articles/165788.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Thu, 16 Feb 2012 15:33:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/165788.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/165788.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/165788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/165788.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/165788.html</trackback:ping><description><![CDATA[<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'宋体'; ">在任何时候，进程中的一个线程可以调用下面两个函数来将一个DLL映射到进程的地址空间中：</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">HINSTANCE&nbsp;LoadLibrary(&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">&nbsp;&nbsp;LPCTSTR&nbsp;lpLibFileName</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">);</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">HMODULE&nbsp;LoadLibraryEx(</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">&nbsp;&nbsp;LPCTSTR&nbsp;lpLibFileName,&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">&nbsp;&nbsp;HANDLE&nbsp;hFile,&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">&nbsp;&nbsp;DWORD&nbsp;dwFlags&nbsp;</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: Consolas; ">);</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'宋体'; ">当进程不需要DLL中的符号时，我们应该调用下面的函数来显示地将DLL从进程的地址空间中卸载：</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: 宋体; ">Bool&nbsp;FreeLibrary(</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: 宋体; ">HMODULE&nbsp;hInstDLL</span></p><p style="margin-bottom:0pt; margin-top:0pt; text-autospace:ideograph-other; word-break:break-all; text-align:left; "><span style="font-size: 9.5pt; font-family: 宋体; ">);</span></p><img src ="http://www.cppblog.com/MyCBlog/aggbug/165788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-02-16 23:33 <a href="http://www.cppblog.com/MyCBlog/articles/165788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dll模块的显示载入和符号链接</title><link>http://www.cppblog.com/MyCBlog/articles/165786.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Thu, 16 Feb 2012 15:22:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/165786.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/165786.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/165786.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/165786.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/165786.html</trackback:ping><description><![CDATA[<p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'宋体'; ">为了让线程调用DLL模块中的函数，我们必须将dll的文件映像到调用进程的地址空间之中。有两种方式，可以达到这种目的，一种是直接让应用程序的源代码引用DLL中包含的符号，这会使得加载程序会在应用程序的时候隐式地载入所需的DLL</span></p><p style="text-indent:21.0000pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'宋体'; ">第二种方式是让应用程序在运行的过程中，显示地载入所需的DLL并显示地与想要的输出符号进行链接。换句话说，当应用程序在运行的时候，其中一个线程能够决定它想要调用一个DLL中的一个函数。该线程可以显示地将该dll载入到进程的地址空间中，得到DLL所包含的一个函数的虚拟内存地址，然后用该内存地址来调用这个函数。</span></p><img src ="http://www.cppblog.com/MyCBlog/aggbug/165786.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-02-16 23:22 <a href="http://www.cppblog.com/MyCBlog/articles/165786.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>运行可执行模块</title><link>http://www.cppblog.com/MyCBlog/articles/165784.html</link><dc:creator>加文</dc:creator><author>加文</author><pubDate>Thu, 16 Feb 2012 15:13:00 GMT</pubDate><guid>http://www.cppblog.com/MyCBlog/articles/165784.html</guid><wfw:comment>http://www.cppblog.com/MyCBlog/comments/165784.html</wfw:comment><comments>http://www.cppblog.com/MyCBlog/articles/165784.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MyCBlog/comments/commentRss/165784.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MyCBlog/services/trackbacks/165784.html</trackback:ping><description><![CDATA[<p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'宋体'; ">启动一个可执行模块的时候，操作系统的加载程序会先为进程创建虚拟地址空间，接着把可执行模块映射到进程的地址空间之中。之后加载程序会检查可执行模块导入段，试图将所需的</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">dll进行定位并将他们映射到进程的地址空间中。</span></p><p style="margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'宋体'; ">由于导入段只包含dll的名称，不含dll&nbsp;的路径，因此加载程序必须在用户的磁盘上搜索dll，加载程序的搜索路径为：</span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'Times New Roman'; ">1.&nbsp;</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">包含可执行文件的目录</span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'Times New Roman'; ">2.&nbsp;</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">Windows的系统目录</span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'Times New Roman'; ">3.&nbsp;</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">该目录可以通过GetSystemDirectory得到</span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'Times New Roman'; ">4.&nbsp;</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">Windows目录，该目录可以通过System子目录</span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'Times New Roman'; ">5.&nbsp;</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">进程的当前目录u，</span></p><p style="margin-left:21.2500pt; text-indent:-21.2500pt; margin-bottom:0pt; margin-top:0pt; "><span style=" font-size:10.5000pt; font-family:'Times New Roman'; ">6.&nbsp;</span><span style=" font-size:10.5000pt; font-family:'宋体'; ">PATH环境变量中所列出的目录</span></p><img src ="http://www.cppblog.com/MyCBlog/aggbug/165784.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MyCBlog/" target="_blank">加文</a> 2012-02-16 23:13 <a href="http://www.cppblog.com/MyCBlog/articles/165784.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>