LCD显示深究day01 mmap知识补充

<div class="container clearfix">
  <main>
    <article>
        <h1 class="csdn_top">Linux中的mmap的使用</h1>
        <div class="article_bar clearfix">
            <div class="artical_tag">
                <span class="original">
                原创                </span>
                <span class="time">2016年03月26日 16:36:57</span>
            </div>

            <ul class="article_tags clearfix csdn-tracking-statistics tracking-click" data-mod="popu_377" style="display: none;">
                <li class="tit">标签:</li>

<!--          [startarticletags]-->
                <!--          [endarticletags]-->
            </ul>
            <ul class="right_bar">
                <li><button class="btn-noborder"><i class="icon iconfont icon-read"></i><span class="txt">976</span></button></li>
                <li class="edit" style="display: none;">
                    <a class="btn-noborder" href="http://write.blog.csdn.net/postedit/50987550">
                        <i class="icon iconfont icon-bianji"></i><span class="txt">编辑</span>
                    </a>
                </li>
                <li class="del" style="display: none;">
                    <a class="btn-noborder" onclick="javascript:deleteArticle(fileName);return false;">
                        <i class="icon iconfont icon-shanchu"></i><span class="txt">删除</span>
                    </a>
                </li>
            </ul>
        </div>
        <div id="article_content" class="article_content csdn-tracking-statistics tracking-click" data-mod="popu_519" data-dsm="post" style="height: 843px; overflow: hidden;">
                        
<p>利用ioremap访问硬件,需要经过两次拷贝</p>
<p>1.明确:不管是在用户空间还是在内核空间,软件一律不能去直接访问设备的物理地址;</p>
<p><br></p>
<p>2.在内核驱动中如果要访问设备的物理地址,需要利用ioremap将设备的物理地址映射到内核虚拟地址上(动态内存映射区),以后驱动程序访问这个内核虚拟地址就是在间</p>
接得访问设备的物理地址(MMU,TLB,TTW)<br><p><br></p>
<p>3.如果用户要访问硬件设备,不能直接访问,也不能在用户空间访问,只能通过系统调用(open,close,read,write,ioctl)来访问映射好的内核虚拟</p>
<p>地址,通过这种间接的访问来访问硬件设备,但是如果设计到数据的拷贝,还需要借助4个内存拷贝函数!</p>
<p><br></p>
<p><br></p>
<p>1.通过以上的分析,发现应用程序通过read,write,ioctl来访问硬件设备,它们都要经过两次的数据拷贝,一次是用户空间和内核空间的数据拷贝,另外一次是内核空间和硬件之<br>
间的数据拷贝,如果设备拷贝的数据量比较小,那么read,write,ioctl的两次数据拷贝的过程对系统的影响几乎可以忽略不计,如果设备的数据量非常大,例如显卡(独立),<br>
LCD屏幕(显存共享主存),摄像头,声卡这类设备涉及的数据量比较庞大,如果还是用read,write,ioctl进行访问设备数据,无形对系统的性能影响非常大。<br><br></p>
<p>2.用户访问设备,最终其实涉及的用户和硬件,而read,write,ioctl本身会牵扯到内核,所以这些函数涉及2次的数据拷贝,用户要直接去访问硬件设备,只需要将硬件<br>
设备的物理地址信息映射到用户的虚拟地址空间即可,一旦完毕,不会在牵扯到内核空间,以后用户直接访问用户的虚拟地址就是在访问设备硬件,由2次的数据拷贝的</p>
<p>转换为一次的数据拷贝。</p>
<p><br></p>
<p>目的:将硬件物理地址映射到用户虚拟地址空间,由2次数据拷贝变成1次数据拷贝!<br></p>
<p><br></p>
<p><img src="https://img-blog.csdn.net/20160326164508627?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt=""><br></p>
<p>用户空间3G虚拟内存区域的划分:<br>
高地址开始:<br>
栈区         <span style="white-space:pre;"></span> ↓<br>
MMAP内存映射区(相当于内核中的动态内存映射区)   ↓<br><br><br>
堆区<span style="white-space:pre;"> </span>     ↑<br>
BSS段区<br>
DATA段区<br>
TEXT段区 <br></p>
<p><br></p>
<p><br></p>
<p>在内核中如何描述一个进程:<br><span style="white-space:pre;"></span>内核中,无论描述进程还是线程都用task_struct  描述。在Linux系统里面,是没有线程这个概念的,    Linux的线程是模仿windows的,windows的进程和线程    <br>
有本质上的区别,Linux下没有区别,仅限的区别在于访问的地址空间不一样。mm_struct描述每个进程的3G用户空间<br></p>
<p><br></p>
<p><br></p>
<p>MMAP内存映射区作用:<br>
让用户程序直接访问设备内存,在要求高性能的应用当中比较常用。应用程序使用的动态库映射到这个区域;<br>
应用程序调用mmap,将设备物理地址和这个区域的虚拟内存进行映射;<br>
mmap映射内存必须是页面大小的整数倍(也就是字节/4K)<br><br>
结论:linux系统通过mmap来实现将物理地址映射到用户3G的MMAP内存映射区上的虚拟内存上!<br><br><br>
mmap系统调用的过程:<br>
void *addr;<br>
addr = mmap(0,0x1000, PROT_READ|PROT_WRITE,<br><span style="white-space:pre;"></span>MAP_SHARED, fd, 0);<br>
参数1:如果是0,内核帮找一块内存区域,起始地址是返回值addr<br>
参数2:虚拟内存的大小,0x1000一页(如果申请的内存空间没有对齐,内核会帮我们对齐,会经过一次if/else判断,浪费开销)<br>
参数3:权限<br>
参数4:权限<br>
参数5:fd,将该文件映射到该区域<br>
参数6:映射的偏移量<br><br><br>
1.应用程序调用mmap首先调用C库的mmap<br>
2.C库的mmap保存mmap的系统调用号到R7中,然后调用svc触发软中断异常(陷入内核空间)<br>
3.内核启动时,已经初始化好了异常向量表,触发软中断,跳转到软中断的异常向量表的入口地址vector_swi.<br>
4.根据R7保存的系统调用号,以它索引,在内核的系统调用表找到对应的函数sys_mmap,然后调用内核实现的sys_mmap<br>
5.sys_mmap内核会做两件事:<br>
   1.首先在当前进程的MMAP内存映射区中找一块空闲的虚拟内存区域;<br>
   2.一旦找到以后,利用struct   vm_area_strcut结构创建一个对象来描述这块空闲的虚拟内存区域;<br>
6.sys_mmap最终调用底层驱动的mmap,然后将描述空闲虚拟内存区域的对象指针传递给底层驱动的mmap函数使用;<br>
7.底层驱动的mmap根据传递过来的虚拟内存区域的信息获取用户要映射的虚拟地址,再根据某些函数建立用户虚拟地址和物理地址的映射关系<br>
8.一旦建立映射,mmap函数返回,返回值保存着这块空闲内存区域的起始地址,以后用户在用户空间就可以为所欲为了!<br><br>
内核利用struct vm_area_strcut描述找的虚拟内存区域<br>
struct vm_area_struct {<br><span style="white-space:pre;"></span>struct mm_struct *vm_mm ;<br><span style="white-space:pre;"></span>unsigned long vm_start;//空闲虚拟内存的起始地址<br><span style="white-space:pre;"></span>unsigned long vm_end;//结束地址<br><span style="white-space:pre;"></span>pgprot_t vm_page_prot; //访问权限<br><span style="white-space:pre;"></span>unsigned long vm_flags; //虚拟内存区域标志<br><span style="white-space:pre;"></span>unsigned long vm_pgoff;//偏移量<br>
};<br><br>
struct file_operations :<br>
int (*mmap)(struct file *filp,<br><span style="white-space:pre;"></span>struct vm_area_struct *vma) ;<br><br><br>
vma:内核帮忙找的空闲的内存区域,描述内存区域的信息<br><br><br>
9.驱动mmap利用一下函数建立映射(用户虚拟地址和物理地<br><br><br>
址)<br>
int remap_pfn_range(struct vm_area_struct*vma,<br><span style="white-space:pre;"></span>unsigned long addr,<br>
 <span style="white-space:pre;"> </span>unsigned long pfn, <span style="white-space:pre;">
</span><br><br><br>
unsigned size,pgprot_t prot);<br>
vma: 用户虚拟内存区域指针 <br>
addr: 用户虚拟内存起始地址->vma->vm_start<br>
pfn: 要映射的物理地址所在页帧号,可以通过物理地址>>12得到<br>
size: 待映射的内存区域的大小<br>
prot: vma的保护属性vma->vm_page_prot<br>
功能:建立已知的用户虚拟内存和已知的物理地址之间的映射关系;<br>
注意:利用这个函数进行地址映射的时候,不管是物理地址还是用户虚拟地址都要求是页的整数倍!<br>
1页=4K=0x1000<br>
0xe0200080这个GPIO寄存器地址不是页的整数倍!<br>
通过芯片手册可知GPIO使用的地址空间范围:<br>
0xE0200000 ~ 0xE02FFFFF<br>
映射时指定的物理地址应该是:0xE0200000(页的整数倍)<br>
访问0xe0200080:用户虚拟地址 + 0x80<br>
访问0xe0200084:用户虚拟地址+ 0x84<br><br><br>
注意:一个物理地址同时可以映射到内核的虚拟地址上,还可以映射到用户的虚拟地址上!<br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><br></p>
<p><span style="color:#ff0000;">mmap自己理解:首先在用户空间通过mmap将物理内存地址映射到用户虚拟地址addr,addr是一个返回的虚拟地址,可以通过这个虚拟地址去控制硬件。在底层驱动方面,需要配置mmap参数,运用remap_pfn_renge函数将设备的物理内存与mmap的虚拟内存相连接,至此就可以在用户空间控制硬件。在映射地址时,物理地址应该是:0xE0200000(页的整数倍)<br>
访问0xe0200080:用户虚拟地址 + 0x80<br>
访问0xe0200084:用户虚拟地址+ 0x84<br>
    一个物理地址同时可以映射到内核的虚拟地址上,还可以映射到用户的虚拟地址上!<br><br><br>
当访问的文件比较小时,可以用read、write,<br>
        文件比较大时,用mmap</span><br></p>
                    </div>
    </article>
      <div class="readall_box csdn-tracking-statistics tracking-click" data-mod="popu_376">
          <div class="read_more_mask"></div>
          <a class="btn btn-large btn-gray-fred read_more_btn" target="_self">阅读全文</a>
      </div>
      <div class="article_copyright">
        版权声明:本文为博主原创文章,未经博主允许不得转载。      </div>
      <ul class="article_collect clearfix csdn-tracking-statistics tracking-click" data-mod="popu_378" style="display: none;">
          <li class="tit">本文已收录于以下专栏:</li>
<!--          [startarticlecolumns]-->
                                <!--          [endarticlecolumns]-->
      </ul>
      <div class="comment_box clearfix">
          <div id="comment_form">
              <div id="commentsbmitarear">
                                  <div class="comment_area clearfix" style="height: 60px;">
                      <div class="userimg">
                        <a href="http://my.csdn.net/qq_21435127">
                          <img src="https://avatar.csdn.net/3/4/5/3_qq_21435127.jpg">
                        </a>
                      </div>
                  
                      <form action="http://blog.csdn.net/qq_28090573/phoenix/comment/submit?id=50987550" method="post" onsubmit="return subform(this);" id="commentform">
                          <textarea class="comment_content" name="comment_content" id="comment_content" placeholder="发表你的评论" style="height: 40px;"></textarea>
                          <div class="bot_bar clearfix" style="opacity: 0;">
                              <div id="ubbtools" class="add_code">
                                  <a href="#insertcode" code="code" target="_self"><i class="icon iconfont icon-daima"></i></a>
                              </div>

                              <input type="hidden" id="comment_replyId" name="comment_replyId">
                              <input type="hidden" id="comment_userId" name="comment_userId" value="">
                              <input type="hidden" id="commentId" name="commentId" value="">
                              <input type="submit" class="btn btn-redborder" value="发表评论">
                              <span id="tip_comment" class="tip">
                              <div style="display: none;" class="csdn-tracking-statistics tracking-click" data-mod="popu_384"><a href="#" target="_blank" class="comment_area_btn">发表评论</a></div>

                              <div id="lang_list" code="code">
                                  <a href="#html" style="width:95px;" class="long_name" target="_self">HTML/XML</a>
                                  <a href="#objc" style="width:95px;" class="long_name" target="_self">objective-c</a>
                                  <a href="#delphi" style="width:58px;" class="zhong_name" target="_self">Delphi</a>
                                  <a href="#ruby" class="zhong_name" target="_self">Ruby</a>
                                  <a href="#php" target="_self">PHP</a>
                                  <a href="#csharp" class="duan_name" target="_self">C#</a>
                                  <a style=" border-right: none;" href="#cpp" class="duan_name" target="_self">C++</a>
                                  <a style=" border-bottom:none;width:95px;" href="#javascript" class="long_name" target="_self">JavaScript</a>
                                  <a style=" border-bottom:none;width:95px;" href="#vb" class="long_name" target="_self">Visual Basic</a>
                                  <a style=" border-bottom:none;" href="#python" class="zhong_name" target="_self">Python</a>
                                  <a style=" border-bottom:none;" href="#java" class="zhong_name" target="_self">Java</a>
                                  <a style="border-bottom:none;" href="#css" class="duan_name" target="_self">CSS</a>
                                  <a style="border-bottom:none;" href="#sql" class="duan_name" target="_self">SQL</a>
                                  <a style="border:none; " href="#plain" class="duan_name" target="_self">其它</a>
                                  <span class="arrb"></span>
                              </div>
                          </span></div>
                      </form>
                  </div>
                              </div>
          </div>
      </div>
      <div class="comment_li_outbox"></div>

      <div class="more_comment" style="display: none;">
          <div id="comment_bar" class="trackgin-ad" data-mod="popu_385"></div>
      </div>

      <!-- <h3 class="recommend_tit" id="related">相关文章推荐</h3> -->
      <div class="recommend_list clearfix" id="rasss">
                                                                                      <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/DLUTBruceZhang/article/details/9080173" target="_blank" strategy="BlogCommendFromBaidu_0">Linux 内存映射函数 mmap()函数详解</a></h2>
                          <div class="summary">
                              一、概述          内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/DLUTBruceZhang" target="_blank" strategy="BlogCommendFromBaidu_0"><img src="https://avatar.csdn.net/4/9/E/3_dlutbrucezhang.jpg" alt="DLUTBruceZhang" title="DLUTBruceZhang"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/DLUTBruceZhang" target="_blank">DLUTBruceZhang</a></li>
                              <li class="time">2013年06月12日 19:02</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>25937</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/angelbosj/article/details/8272887" target="_blank" strategy="BlogCommendFromBaidu_1">linux 中mmap的用法</a></h2>
                          <div class="summary">
                              函数:void
 *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 

参数start:指向欲映...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/angelbosj" target="_blank" strategy="BlogCommendFromBaidu_1"><img src="https://avatar.csdn.net/9/2/7/3_angelbosj.jpg" alt="angelbosj" title="angelbosj"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/angelbosj" target="_blank">angelbosj</a></li>
                              <li class="time">2012年12月08日 16:27</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>21385</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                      <script>
                      (function() {
                          var s = "_" + Math.random().toString(36).slice(2);
                          document.write('<div id="' + s + '"></div>');
                          (window.slotbydup=window.slotbydup || []).push({
                              id: '4765209',
                              container: s,
                              size: '808,120',
                              display: 'inlay-fix'
                          });
                      })();
                  </script><div id="_9jkxm20e77b7k2ckeihnqm2t9"></div><script charset="utf-8" src="http://pos.baidu.com/ecjm?di=4765209&dri=0&dis=0&dai=0&ps=4632x48&enu=encoding&dcb=___adblockplus&dtm=SSP_JSONP&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1514509288424&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=1&pcs=1226x554&pss=1226x4655&cfv=0&cpl=27&chi=1&cce=true&cec=UTF-8&tlm=1514509288&rw=554&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&lcr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&ecd=1&uc=1366x728&pis=-1x-1&sr=1366x768&tcn=1514509288"></script><a href="http://www.baidu.com/cb.php?c=IgF_pyfqnHmknj64rH60IZ0qnfK9ujYzP1f4PjDs0Aw-5Hc3rHnYnHb0TAq15HfLPWRznjb0T1Y1ryf4nW7-mWnvPh7WPvcv0AwY5HDdnHfdnjbzrjm0IgF_5y9YIZ0lQzq-uZR8mLPbUB48ugfEIAqspynEmybknH0OIgwVgLPEIgFWuHdBUAqMnH00ThfqnWT0mhYqn0KsTWYs0ZNGujYkPHTYn1mk0AqGujYknWb3rjDY0APGujYLnWm4n1c0ULI85H00TZbqnW0v0APzm1YYnjbvP0" target="_blank">
	<dl class="clearfix csdn-tracking-statistics" data-mod="popu_393">
		<dt style="position: relative;"><img class="maxwidth" src="http://ubmcmm.baidustatic.com/media/v1/0f0007ZRku1Wt0jlqBwka6.jpg" alt="" title=""><img class="append_mark_img" style="display:block;position:absolute;left:0;bottom:0;width:30px;height:16px" src="https://img-blog.csdnimg.cn/2022010613002446196.png"></dt>
		<dd>
			<div class="summary">
				<h2>太任性!学AI的应届学弟怒拒20K Offer,他想要多少钱?</h2>  <div class="summary">AI改变命运呀!!前段时间在我司联合举办的校招聘会上,一名刚刚毕业的学弟陆续拒绝2份Offer,企业给出18K、23K高薪,学弟拒绝后直接来了一句...</div> 
			</div>
		</dd>
	</dl>
</a>
                                                                <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/zhangchiytu/article/details/7539101" target="_blank" strategy="BlogCommendFromBaidu_2">linux mmap 内存映射</a></h2>
                          <div class="summary">
                              Gralloc HAL的gralloc.cpp使用了mmap,如下:
static int init_pmem_area_locked(private_module_t* m)
1)打开PMEM,...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/zhangchiytu" target="_blank" strategy="BlogCommendFromBaidu_2"><img src="https://avatar.csdn.net/B/D/8/3_zhangchiytu.jpg" alt="zhangchiytu" title="zhangchiytu"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/zhangchiytu" target="_blank">zhangchiytu</a></li>
                              <li class="time">2012年05月06日 11:47</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>2180</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/zqixiao_09/article/details/51088478" target="_blank" strategy="BlogCommendFromBaidu_3">Linux的mmap内存映射机制解析</a></h2>
                          <div class="summary">
                              在讲述文件映射的概念时,
不可避免的要牵涉到虚存(SVR 4的VM).
实际上, 
文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施,
好似用户将文件映射到自己地址空间的某个部分,
使用...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/zqixiao_09" target="_blank" strategy="BlogCommendFromBaidu_3"><img src="https://avatar.csdn.net/D/F/D/3_zqixiao_09.jpg" alt="zqixiao_09" title="zqixiao_09"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/zqixiao_09" target="_blank">zqixiao_09</a></li>
                              <li class="time">2016年04月07日 19:48</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>7606</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/MJ813/article/details/52082499" target="_blank" strategy="BlogCommendFromBaidu_4">Linux共享内存(mmap详解)</a></h2>
                          <div class="summary">
                              mmap()系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以向访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/MJ813" target="_blank" strategy="BlogCommendFromBaidu_4"><img src="https://avatar.csdn.net/2/3/9/3_mj813.jpg" alt="MJ813" title="MJ813"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/MJ813" target="_blank">MJ813</a></li>
                              <li class="time">2016年08月01日 06:47</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>2508</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                        <!-- 广告位:PC端-博客详情通栏7(feed流)-808*120 -->
                  <script>
                      (function() {
                          var s = "_" + Math.random().toString(36).slice(2);
                          document.write('<div id="' + s + '"></div>');
                          (window.slotbydup=window.slotbydup || []).push({
                              id: '4983339',
                              container: s,
                              size: '808,120',
                              display: 'inlay-fix'
                          });
                      })();
                  </script><div id="_0rgsahgnttp81n4i2gst027qfr"></div><script charset="utf-8" src="http://pos.baidu.com/ecjm?di=4983339&dri=0&dis=0&dai=0&ps=5263x48&enu=encoding&dcb=___adblockplus&dtm=SSP_JSONP&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1514509288424&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=1&pcs=1226x554&pss=1226x5286&cfv=0&cpl=27&chi=1&cce=true&cec=UTF-8&tlm=1514509288&rw=554&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&lcr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&ecd=1&uc=1366x728&pis=-1x-1&sr=1366x768&tcn=1514509289"></script><div id="_s51u2im2yae6u6mz9q1l9pb9" style="width: 100%;"><iframe width="760" frameborder="0" height="90" scrolling="no" src="http://pos.baidu.com/s?hei=90&wid=760&di=u3163359&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&exps=111000&dtm=HTML_POST&dri=0&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&dis=0&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&dai=1&tcn=1514509289&ant=0&cfv=0&ps=5263x48&ccd=24&pis=-1x-1&dc=2&psr=1366x768&col=zh-CN&drs=1&tlm=1514509288&cja=false&tpr=1514509288633&ari=2&par=1366x728&chi=1&cdo=-1&cce=true&cmi=45&pcs=1226x554&cpl=27&pss=1226x6049&cec=UTF-8"></iframe></div><script type="text/javascript" src="//mpb1.iteye.com/idvmcvvalgkcef.js"></script>
                                                                              <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/ryder001/article/details/7966144" target="_blank" strategy="BlogCommendFromBaidu_5">mmap。</a></h2>
                          <div class="summary">
                              linux mmap 内存映射
mmap() vs read()/write()/lseek()
通过strace统计系统调用的时候,经常可以看到mmap()与mmap2()。系统调用mmap()...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/ryder001" target="_blank" strategy="BlogCommendFromBaidu_5"><img src="https://avatar.csdn.net/A/1/A/3_ryder001.jpg" alt="ryder001" title="ryder001"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/ryder001" target="_blank">ryder001</a></li>
                              <li class="time">2012年09月11日 10:40</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>17013</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/xxgxgx/article/details/50699289" target="_blank" strategy="BlogCommendFromBaidu_6">linux 中mmap的用法</a></h2>
                          <div class="summary">
                              linux 中mmap的用法 
函数:void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);  
...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/xxgxgx" target="_blank" strategy="BlogCommendFromBaidu_6"><img src="https://avatar.csdn.net/F/3/A/3_xxgxgx.jpg" alt="xxgxgx" title="xxgxgx"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/xxgxgx" target="_blank">xxgxgx</a></li>
                              <li class="time">2016年02月19日 17:09</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>595</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/u014089131/article/details/54409900" target="_blank" strategy="BlogCommendFromBaidu_7">linux mmap用法:</a></h2>
                          <div class="summary">
                              mmap定义如下:


#include 


void *mmap(void *addr, size_t length, int prot, int flags,
 int fd, o...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/u014089131" target="_blank" strategy="BlogCommendFromBaidu_7"><img src="https://avatar.csdn.net/6/F/8/3_u014089131.jpg" alt="u014089131" title="u014089131"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/u014089131" target="_blank">u014089131</a></li>
                              <li class="time">2017年01月13日 16:31</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>283</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/earbao/article/details/13758741" target="_blank" strategy="BlogCommendFromBaidu_8">linux c之mmap使用</a></h2>
                          <div class="summary">
                              /* 
 * File:   main.c
 * Author: root
 *
 * Created on 2013年10月30日, 下午10:24
 */

#include 
#include ...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/earbao" target="_blank" strategy="BlogCommendFromBaidu_8"><img src="https://avatar.csdn.net/4/9/F/3_earbao.jpg" alt="earbao" title="earbao"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/earbao" target="_blank">earbao</a></li>
                              <li class="time">2013年10月30日 22:55</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>4113</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                                    <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                      <dd>
                          <h2><a href="http://blog.csdn.net/lhf_tiger/article/details/9953275" target="_blank" strategy="BlogCommendFromBaidu_9">linux下mmap的使用</a></h2>
                          <div class="summary">
                              共 享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空 间。进程A可以即时看到进程B对共享内存中数据的更新...                          </div>
                          <ul>
                              <li class="avatar_img"><a href="http://blog.csdn.net/lhf_tiger" target="_blank" strategy="BlogCommendFromBaidu_9"><img src="https://avatar.csdn.net/7/F/C/3_lhf_tiger.jpg" alt="lhf_tiger" title="lhf_tiger"></a></li>
                              <li class="user_name"><a href="http://blog.csdn.net/lhf_tiger" target="_blank">lhf_tiger</a></li>
                              <li class="time">2013年08月13日 19:30</li>
                              <li class="visited_num"><i class="icon iconfont icon-read"></i><span>835</span></li>
                          </ul>
                      </dd>
                  </dl>
                                                                                <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/yinjiabin/article/details/7575653" target="_blank" strategy="BlogCommendFromBaidu_10">linux中mmap系统调用原理分析与实现</a></h2>
                    <div class="summary">
                        1、mmap系统调用(功能)
      void* mmap ( void * addr , size_t len , int prot , int flags ,int fd , off_t o...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/yinjiabin" target="_blank" strategy="BlogCommendFromBaidu_10"><img src="https://avatar.csdn.net/9/5/7/3_yinjiabin.jpg" alt="yinjiabin" title="yinjiabin"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/yinjiabin">yinjiabin</a></li>
                        <li class="time">2012年05月17日 11:48</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>14286</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/duanbeibei/article/details/1707911" target="_blank" strategy="BlogCommendFromBaidu_11">mmap()</a></h2>
                    <div class="summary">
                        事例代码:
//------------------------------------------------mmap.c-------------------------------------...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/duanbeibei" target="_blank" strategy="BlogCommendFromBaidu_11"><img src="https://avatar.csdn.net/C/5/8/3_duanbeibei.jpg" alt="duanbeibei" title="duanbeibei"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/duanbeibei">duanbeibei</a></li>
                        <li class="time">2007年07月25日 21:25</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>4645</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/xiaohuima_dong/article/details/44657871" target="_blank" strategy="BlogCommendFromBaidu_12">mmap函数用法及示例程序</a></h2>
                    <div class="summary">
                        UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:
1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/xiaohuima_dong" target="_blank" strategy="BlogCommendFromBaidu_12"><img src="https://avatar.csdn.net/E/E/A/3_xiaohuima_dong.jpg" alt="xiaohuima_dong" title="xiaohuima_dong"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/xiaohuima_dong">xiaohuima_dong</a></li>
                        <li class="time">2015年03月26日 22:38</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>2047</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/prike/article/details/73691183" target="_blank" strategy="BlogCommendFromBaidu_13">mmap 详解</a></h2>
                    <div class="summary">
                        谨以此文纪念过往的岁月

一.前言
mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。

...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/prike" target="_blank" strategy="BlogCommendFromBaidu_13"><img src="https://avatar.csdn.net/C/F/5/3_prike.jpg" alt="prike" title="prike"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/prike">prike</a></li>
                        <li class="time">2017年06月24日 13:50</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>289</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/ebw123/article/details/50390342" target="_blank" strategy="BlogCommendFromBaidu_14">mmap:是什么 为什么 怎么用</a></h2>
                    <div class="summary">
                        mmap基础概念

mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/ebw123" target="_blank" strategy="BlogCommendFromBaidu_14"><img src="https://avatar.csdn.net/6/F/1/3_ebw123.jpg" alt="ebw123" title="ebw123"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/ebw123">ebw123</a></li>
                        <li class="time">2015年12月23日 23:06</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>772</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/FreeeLinux/article/details/58318656" target="_blank" strategy="BlogCommendFromBaidu_15">mmap内核源码分析</a></h2>
                    <div class="summary">
                        对于mmap函数,我之前的理解太单一了。这几天好好复习了一下以前学过的知识,重新对该函数有了新的认识。之前我的认识是,mmap是用来映射内存的,它映射的内存来自磁盘上文件。所以我以为malloc函数底...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/FreeeLinux" target="_blank" strategy="BlogCommendFromBaidu_15"><img src="https://avatar.csdn.net/5/5/5/3_freeelinux.jpg" alt="FreeeLinux" title="FreeeLinux"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/FreeeLinux">FreeeLinux</a></li>
                        <li class="time">2017年02月27日 22:47</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>561</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/supenman_mwg/article/details/12143775" target="_blank" strategy="BlogCommendFromBaidu_16">mmap的真正作用</a></h2>
                    <div class="summary">
                        最近看了一些关于linux内核源代码解析的说,发现从内部机制对原来了解的一些linux内核的函数有了一些新的认识;
如 mmap.
函数定义及被包含的头文件如下:
#include 
void...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/supenman_mwg" target="_blank" strategy="BlogCommendFromBaidu_16"><img src="https://avatar.csdn.net/9/8/7/3_supenman_mwg.jpg" alt="supenman_mwg" title="supenman_mwg"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/supenman_mwg">supenman_mwg</a></li>
                        <li class="time">2013年09月28日 21:15</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>2195</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/yangle4695/article/details/52139585" target="_blank" strategy="BlogCommendFromBaidu_17">Linux 内存映射函数 mmap()函数详解</a></h2>
                    <div class="summary">
                        mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。
头文件 
函数原型...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/yangle4695" target="_blank" strategy="BlogCommendFromBaidu_17"><img src="https://avatar.csdn.net/4/1/F/3_yangle4695.jpg" alt="yangle4695" title="yangle4695"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/yangle4695">yangle4695</a></li>
                        <li class="time">2016年08月07日 00:01</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>9154</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/Destina/article/details/6275082" target="_blank" strategy="BlogCommendFromBaidu_18">mmap</a></h2>
                    <div class="summary">
                        mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数。#include 

 void *mmap(...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/Destina" target="_blank" strategy="BlogCommendFromBaidu_18"><img src="https://avatar.csdn.net/1/B/1/3_destina.jpg" alt="Destina" title="Destina"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/Destina">Destina</a></li>
                        <li class="time">2011年03月24日 20:06</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>2891</span></li>
                    </ul>
                </dd>
            </dl>
                                          <dl class="clearfix csdn-tracking-statistics" data-mod="popu_387" data-poputype="feed" data-feed-show="false" data-dsm="post">
                <dd>
                    <h2><a href="http://blog.csdn.net/dai_peixian/article/details/53671391" target="_blank" strategy="BlogCommendFromBaidu_19">linux下使用mmap映射的内存几时被释放的问题</a></h2>
                    <div class="summary">
                        mmap()是一个非常重要的系统调用,这仅从mmap本身的功能描述上是看不出来的。从字面上看,mmap就是将一个文件映射进进程的虚拟内存地址,之后就可以通过操作内存的方式对文件的内容进行操作,上代码:...                    </div>
                    <ul>
                        <li class="avatar_img"><a href="http://blog.csdn.net/dai_peixian" target="_blank" strategy="BlogCommendFromBaidu_19"><img src="https://avatar.csdn.net/9/4/C/3_dai_peixian.jpg" alt="dai_peixian" title="dai_peixian"></a></li>
                        <li class="user_name"><a href="http://blog.csdn.net/dai_peixian">dai_peixian</a></li>
                        <li class="time">2016年12月15日 15:49</li>
                        <li class="visited_num"><i class="icon iconfont icon-read"></i><span>1332</span></li>
                    </ul>
                </dd>
            </dl>
                      </div>
  </main>
<aside>
  <div class="right_box user_info">
      <dl class="inf_bar clearfix">
          <dt class="csdn-tracking-statistics tracking-click" data-mod="popu_381">
              <a href="http://blog.csdn.net/qq_28090573" target="_blank">
                  <img src="https://avatar.csdn.net/3/4/4/3_qq_28090573.jpg" class="avatar_pic">
              </a>
              <span class="medals" title="">
                  </span>
          </dt>
          <dd>
              <h3 class="csdn-tracking-statistics tracking-click" data-mod="popu_380"><a href="http://blog.csdn.net/qq_28090573" target="_blank" id="uid">Paul_0920</a></h3>
              <span class="csdn-tracking-statistics tracking-click" data-mod="popu_379"><a class="btn btn-redborder-small " id="span_add_follow" target="_self">+关注</a></span>
          </dd>
      </dl>
      <div class="inf_number_box clearfix">
          <dl>
              <dt>原创</dt>
              <dd>40</dd>
          </dl>
          <dl>
              <dt>粉丝</dt>
              <dd id="fan">0</dd>
          </dl>
          <dl>
              <dt>喜欢</dt>
              <dd>13</dd>
          </dl>
          <dl>
        <dt>码云</dt>
        <dd><a class="thinFont" href="https://gitee.com?utm_source=csdn_blog" target="_blank">未开通</a></dd>
      </dl>

      </div>
  <div class="writings">
        <div class="public_signal clearfix">
          <h3>他的最新文章</h3>
          <a href="http://blog.csdn.net/qq_28090573" target="_blank" class="more"><span>更多文章</span></a>
        </div>
          <ul class="inf_list clearfix csdn-tracking-statistics tracking-click" data-mod="popu_382">
                            <li class="clearfix">
                  <a href="http://blog.csdn.net/qq_28090573/article/details/78733105" target="_blank">linux-i386(ubuntu)下编译安装gsoap_2.8.17过程记录</a>
              </li>
                            <li class="clearfix">
                  <a href="http://blog.csdn.net/qq_28090573/article/details/78730552" target="_blank">VMware虚拟机三种联网方式(图文详细解说)</a>
              </li>
                            <li class="clearfix">
                  <a href="http://blog.csdn.net/qq_28090573/article/details/78720922" target="_blank">IP组播技术介绍及实现例子</a>
              </li>
                            <li class="clearfix">
                  <a href="http://blog.csdn.net/qq_28090573/article/details/78717129" target="_blank">pthread_cleanup_push与pthread_cleanup_pop的目的 作用</a>
              </li>
                            <li class="clearfix">
                  <a href="http://blog.csdn.net/qq_28090573/article/details/78614666" target="_blank">嵌入式 Linux线程锁详解pthread_mutexattr_t【转】</a>
              </li>
                        </ul>
      </div>
  </div>
  <div class="extension_other csdn-tracking-statistics tracking-click" data-mod="popu_389" style="position: relative;">
     <!--u3032528-->
    <div class="flashrecommend">
        <div id="_z9uq93bhla3mwpzo3p0c0udi" style=""><iframe width="300" frameborder="0" height="250" scrolling="no" src="http://pos.baidu.com/s?hei=250&wid=300&di=u3032528&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&ps=571x880&par=1366x728&dtm=HTML_POST&dis=0&exps=111000&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&tcn=1514509289&cec=UTF-8&ant=0&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&drs=1&cja=false&dri=0&pcs=1226x554&pis=-1x-1&cmi=45&pss=1226x6145&tpr=1514509288633&col=zh-CN&cpl=27&dai=2&tlm=1514509288&cce=true&psr=1366x768&cfv=0&ari=2&chi=1&ccd=24&dc=2&cdo=-1"></iframe></div><script type="text/javascript" src="http://mpb1.iteye.com/bwocoltlyzdec.js"></script>
    </div>
  <img class="append_mark_img" style="display:block;position:absolute;left:0;bottom:0;width:30px;height:16px" src="https://img-blog.csdnimg.cn/2022010613002446196.png"></div>

<!--    [StartShowSelfColumn]-->
    <!--    [EndShowSelfColumn]-->
    <div class="fixRight">
        <!-- 广告位:PC端-博客详情右侧视窗2(feed流)-300*300 -->
        <script>
            (function() {
                var s = "_" + Math.random().toString(36).slice(2);
                document.write('<div id="' + s + '"></div>');
                (window.slotbydup=window.slotbydup || []).push({
                    id: '5384130',
                    container: s,
                    size: '300,300',
                    display: 'inlay-fix'
                });
            })();
        </script><div id="_nhvm532wbjxbqmvo732384cxr"></div><script charset="utf-8" src="http://pos.baidu.com/ecjm?di=5384130&dri=0&dis=0&dai=0&ps=571x880&enu=encoding&dcb=___adblockplus&dtm=SSP_JSONP&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1514509288424&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=1&pcs=1226x554&pss=1226x6049&cfv=0&cpl=27&chi=1&cce=true&cec=UTF-8&tlm=1514509288&rw=554&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&lcr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&ecd=1&uc=1366x728&pis=-1x-1&sr=1366x768&tcn=1514509289"></script><div id="_sd1l8kv3ap1i2ulc9glanhfr" style=""><iframe width="300" frameborder="0" height="250" scrolling="no" src="http://pos.baidu.com/s?hei=250&wid=300&di=u3163270&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&tpr=1514509288633&dis=0&dc=2&cdo=-1&drs=1&cce=true&ari=2&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&ps=841x880&par=1366x728&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&ant=0&tcn=1514509289&cpl=27&cja=false&dtm=HTML_POST&cfv=0&chi=1&col=zh-CN&dai=3&pss=1226x6145&psr=1366x768&dri=0&cmi=45&pcs=1226x554&tlm=1514509288&exps=111000&cec=UTF-8&pis=-1x-1&ccd=24"></iframe></div><script type="text/javascript" src="//mpb1.iteye.com/avneunkwbycx.js"></script>
        <div class="extension_other csdn-tracking-statistics tracking-click bottomRcom" data-mod="popu_389" style="position: absolute; z-index: -5; opacity: 0; pointer-events: none; left: 878.182px;">
            <!--u3032528-->
            <div class="flashrecommend">
                <!-- 请置于所有广告位代码之前 -->
                <script src="http://dup.baidustatic.com/js/dm.js"></script>

                <!-- 广告位:PC端-博客详情页右侧视窗1(feed流)-300*250 -->
                <script>
                    (function() {
                        var s = "_" + Math.random().toString(36).slice(2);
                        document.write('<div id="' + s + '"></div>');
                        (window.slotbydup=window.slotbydup || []).push({
                            id: '4770930',
                            container: s,
                            size: '300,250',
                            display: 'inlay-fix'
                        });
                    })();
                </script><div id="_xcswythxc15orrb245xqd7vi"></div><script charset="utf-8" src="http://pos.baidu.com/ecjm?di=4770930&dri=0&dis=0&dai=0&ps=841x880&enu=encoding&dcb=___adblockplus&dtm=SSP_JSONP&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1514509288424&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&ari=2&dbv=2&drs=1&pcs=1226x554&pss=1226x6145&cfv=0&cpl=27&chi=1&cce=true&cec=UTF-8&tlm=1514509288&rw=554&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&lcr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e&ecd=1&uc=1366x728&pis=-1x-1&sr=1366x768&tcn=1514509289"></script><div id="_sc6g53bh2f99rphv49nxez5mi" style=""><iframe width="300" frameborder="0" height="250" scrolling="no" src="//pos.baidu.com/s?hei=250&wid=300&di=u3032528&ltu=http%3A%2F%2Fblog.csdn.net%2Fqq_28090573%2Farticle%2Fdetails%2F50987550&psr=1366x768&dis=0&pss=1226x3096&tcn=1514509289&pis=-1x-1&ti=Linux%E4%B8%AD%E7%9A%84mmap%E7%9A%84%E4%BD%BF%E7%94%A8%20-%20CSDN%E5%8D%9A%E5%AE%A2&ant=0&par=1366x728&drs=3&col=zh-CN&tlm=1514509288&dri=1&ccd=24&ari=2&dc=2&cmi=45&cdo=-1&chi=1&ps=1096x880&dtm=HTML_POST&cfv=0&exps=111000&cec=UTF-8&pcs=1226x554&cpl=27&cja=false&tpr=1514509288633&dai=4&cce=true&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3D9uWpF9GFLYJJqByDUvd5apeqcFsCaz-F8Sa_wFkBFHQJJhKV_qKn4gYmp2KnDrpEP4L-9tk98HxFX0LszsHaakFLVcaNS_7mVmNp9aSFLiK%26wd%3D%26eqid%3D85ab310c000361ad000000025a45936e"></iframe></div><script type="text/javascript" src="http://mpb1.iteye.com/bwocoltlyzdec.js"></script>
            </div>
        <img class="append_mark_img" style="display:block;position:absolute;left:0;bottom:0;width:30px;height:16px" src="https://img-blog.csdnimg.cn/2022010613002446196.png"></div>

    </div>
    <div class="user-hotArticle">
        <h3>他的热门文章</h3>
        <ul class="hotArticle-list csdn-tracking-statistics tracking-click" data-mod="popu_521">
<!--            [StartHotArticles]-->
                                                <li>
                        <a href="http://blog.csdn.net/qq_28090573/article/details/51094321" target="_blank">利用select/poll监听多个设备详解</a>
                        <div class="read list-left"><i class="icon iconfont icon-read"></i><span>1416</span></div>
                    </li>
                                    <li>
                        <a href="http://blog.csdn.net/qq_28090573/article/details/50987550" target="_blank">Linux中的mmap的使用</a>
                        <div class="read list-left"><i class="icon iconfont icon-read"></i><span>950</span></div>
                    </li>
                                    <li>
                        <a href="http://blog.csdn.net/qq_28090573/article/details/50867811" target="_blank">单片机和ARM的区别</a>
                        <div class="read list-left"><i class="icon iconfont icon-read"></i><span>863</span></div>
                    </li>
                                    <li>
                        <a href="http://blog.csdn.net/qq_28090573/article/details/51249929" target="_blank">链表和二叉树</a>
                        <div class="read list-left"><i class="icon iconfont icon-read"></i><span>662</span></div>
                    </li>
                                    <li>
                        <a href="http://blog.csdn.net/qq_28090573/article/details/50955304" target="_blank">Linux解决长时间占用CPU资源的方法(底半部)</a>
                        <div class="read list-left"><i class="icon iconfont icon-read"></i><span>611</span></div>
                    </li>
                            <!--            [EndHotArticles]-->
        </ul>
    </div>
<!--    [startcustom]-->
    <!--    [endcustom]-->
</aside></div>

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值