嵌入式之深入浅出Hello World
文章平均质量分 79
xuqianghit
互联网门外汉
展开
-
深入浅出Hello World 3
这里开始分析hello中的一个寻址过程的实现。当然现在的情景是:(当然可能只是一小部分加载到了内存中,大部分的需要使用缺页异常处理来实现内存分配)。 在sys_exece()函数中,在内存ram中保存了命令行参数,环境参数,但是代码段,数据段,bss段,可执行文件的其他段提供”映射“(映射的具体含义参见"深入理解Hello World 3"),此时文件到虚存的映射仅仅是建立了一种映射关系,原创 2010-03-23 21:31:00 · 1104 阅读 · 0 评论 -
深入浅出Hello World 2
现在的假设是:hello可执行文件已经存在于磁盘上(存储介质上),并且在可执行文件中包含了被执行的text,同时也包含了这些目标代码使用的数据,同时上面的分析可得,在elf中定义的只是虚拟的地址(linux中对于每个process的话,否有4GB的虚拟地址空间,当然这些地址只是virtual的,真正的数据的存储还是在实际的ram中,OS提供虚拟存储空间主要是为了能够在ram容量较小的机器中原创 2010-03-23 18:19:00 · 2810 阅读 · 0 评论 -
深入浅出Hello World 4
开始”映射“之旅,在上面的讲解中经常提及到“”映射“的概念,那到底什么是映射? 一个线性区可以和磁盘上的某个文件关联或者是某个文件的一部分来关联,这也就意味着内核把线性区的访问页内某个字节的访问转换成对于文件的中相应页面的访问,这种技术称之为“内存映射”。 使用strace hello得到:... open("/usr/lib/locale/en_AU.UTF-8/LC原创 2010-03-24 21:09:00 · 917 阅读 · 0 评论 -
深入浅出Hello World 5
<v:roundrect id="_x0000_s1026" style=position:absolute; left:0;text-align:left;margin-left:13.5pt;margin-top:10.5pt;width:71.25pt; height:215.25pt;z-index:251658240 arcsize="10923f">原创 2010-03-24 21:11:00 · 803 阅读 · 0 评论 -
深入浅出Hello World 6
卸载hello程序 现在再来看看我们的Hello World程序:#include int main (){ printf ("hello world/n"); return 0;} 在进程运行结束后,我们会显示的调用exit()或者return退出正在运行的进程,如果调用return的话,编译器会自己加上exit().此时,保存子进程的一部份原创 2010-03-24 21:12:00 · 802 阅读 · 0 评论 -
深入浅出Hello World 1
首先的感谢那些无私奉献的大牛们,深入Hello World下载地址在http://blog.linux.org.tw/~jserv/archives/001844.html。在上面 还有源码的下载地址链接,同时还要感谢那些网上的勤勤恳恳写blog的bloger们。 Hello World是学习程序设计语言的第一个程序浅出 Hello World。我们试图分析自linux上的原创 2010-03-29 19:25:00 · 2124 阅读 · 2 评论