Hello World 4
来源:互联网 发布:log4j.xml配置显示sql 编辑:程序博客网 时间:2024/06/03 03:35
本文装载自:http://www.cnblogs.com/xuqiang/archive/2010/03/29/1953689.html
开始”映射“之旅,在上面的讲解中经常提及到“”映射“的概念,那到底什么是映射?
一个线性区可以和磁盘上的某个文件关联或者是某个文件的一部分来关联,这也就意味着内核把线性区的访问页内某个字节的访问转换成对于文件的中相应页面的访问,这种技术称之为“内存映射”。
使用strace hello得到:
...
open("/usr/lib/locale/en_AU.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/locale/en_AU.utf8/LC_TIME", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2454, ...}) = 0
mmap2(NULL, 2454, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb80bf000
看linux内核很容易被struct address_space 这个结构迷惑,它是代表某个地址空间吗?实际上不是的,它是用于管理文件(struct inode)映射到内存的页面(struct page)的;与之对应,address_space_operations 就是用来操作该文件映射到内存的页面,比如把内存中的修改写回文件、从文件中读入数据到页面缓冲等。
也就是说address_space结构与文件的对应:一个具体的文件在打开后,内核会在内存中为之建立一个struct inode结构,其中的i_mapping域指向一个address_space结构。这样,一个文件就对应一个address_space结构,一个 address_space与一个偏移量能够确定一个page cache 或swap cache中的一个页面。因此,当要寻址某个数据时,很容易根据给定的文件及数据在文件内的偏移量而找到相应的页面。
- 深入浅出Hello World 4
- Hello World 4
- 2.3.4 "Hello,World!"
- Hello World!【Hello World】
- 4、示例1:Hello World
- Silverlight 4 初试 - Hello World
- cocos2d入门教程4 : Hello World
- 虚幻4蓝图:Hello World
- Hello, world!
- Hello World!
- Hello world!
- Hello World!
- Hello World!
- hello world!
- Hello World !
- Hello,World!
- Hello World!
- Hello world!
- 【jquery】简单的倒计时效果
- 找鞍点
- Hello World 3
- mac与win7时间不同步的解决办法
- 删除清空window7搜索栏历史记录
- Hello World 4
- xx项目代码规范与项目质量
- Hello World 5
- JQ也要面向对象~在JQ中扩展静态方法和实例方法
- Export runnable jar in Eclipse.
- Oracle中的select for update
- 猴子吃桃
- Hello World 6
- C语言二进制文件和文本文件的区别