第一次写读书笔记,有什么套路呢?还没来得及去学习。《linux kernel的设计与实现》真的是一本好书,里面的东西解答了很多工作中的疑问。如显示地调用schedule()进行调度,系统调用__syscalln(),一些数据结构函数经常在kernel 协议栈中遇到,中断注册和中断上下文,软中断,tasklet,锁,定时器,内存管理slab...

第15章 进程地址空间

进程只能访问有效内存区域内的内存地址。每个内存区域也具有相关权限如对相关进程有可读、可写、可执行属性。如果一个进程访问了不在有效范围中的内存区域,或以不正确的方式访问来有有效地址,那么内核就会终止该进程,并返回“Segmentation Fault”这个经典的错误。内存区域包含内存对象如:

-可执行文件代码的内存映射,称为代码段(text section);

-可执行文件的已初始化全局变量的内存映射,称为数据段(data section);

-包含未初始化全局变量,也就是bss段的零页(页面中的信息全部为0值,所以可用于映射bss段等目的)的内存映射;(bss段,因为未初始化的变量没有对应的值,所以并不需要存放在可执行对象中,但是C标准强制规定未初始化的全局变量要被赋予特殊的默认值,所以内核要将变量(未被赋值的)从可执行代码载入内存中,然后将零页映射到该片内存上,于是这些未初始化变量就被赋予了0值,这样做避免了在目标文件中显示地进行初始化,减少了空间浪费)。

-用于进程用户空间栈的零页的内存映射;

-每一个诸如C库或动态连接程序等共享库的代码段、数据段和bss段也会被载入进程的地址空间。

内核使用内存描述符结构体表示进程的地址空间,该结构包含了和进程地址空间有关的全部信息。内存描述符由mm_struct结构体表示,定义在文件中,所有的mm_struct结构体通过自身的mmlist域连接中一个双向链表中,该链表的首元素是init_mm内存描述符,代表init进程的地址空间。

内存区域(VMA)由vm_area_struct结构体描述,包含相关的mm_struct结构体域。进程的地址空间通过mmap和mm_rb(红-黑树)描述包含的全部内存区域。

可以使用/proc文件系统和pmap(1)工具查看给定进程的内存空间和其中包含的内存区域。

mmap()和do_mmap()创建进程的地址空间。内核使用do_mmap(),用户空间使用mmap()。

当用程序访问一个虚拟地址时,必须将虚拟地址转化为物理地址,地址的转换通过页表才能完成。Linux中使用三级页表转换地址。

未完待续...

linux内核设计与实现 怎么读,《Linux内核设计与实现》读书笔记(一)相关推荐

  1. 书都不会读,你还想成功—读书笔记

    书都不会读,你还想成功-读书笔记 一.     我要改变人生 1.    要想离开相差无几的竞争环境,仅仅不停歇地奔跑是不够的,还需要付出两倍以上的努力才能够实现. 2.    跑得不够快,就无法前进 ...

  2. 11月3日云栖精选夜读:《maven实战》读书笔记2——maven安装(windows和eclipse插件)...

    前言 由于我的工作中开发环境就是windows,IDE是eclipse,因此安装也只涉及和记录这两部分,在看书和动手的过程也就直接跳过其他部分. 笔记 windows中maven的安装 安装条件 ma ...

  3. 《冷读术》值得一看--读书笔记

    其实严格意义上来说我应该算是看了第二遍了,只不过我第一次看的是txt版的,用我的破E63手机看的.这次用电脑看的pdf版的.还做了读书笔记,不过到后面就放弃了.下面分享一下读书笔记,算是书中精华的摘要 ...

  4. 我在2017年春节期间所读的书及总结的读书笔记

    对于大部分人来说,2017年的春节只有七天假期.但对于我来说,却有将近半个月的时间(具体原因以后再说).在这段时间里,我阅读了好几本书(有几本是之前没有读完的),并总结了几篇读书笔记.在这篇文章中,我 ...

  5. linux让文件所有用户可以读,Linux 下用户(andy)创建的文件可让特定用户(alice)修改...

    添加用户组ateam 在root用户下创建目录 /home/ateam-text 添加andy alice tom 用户 把andy alice用户添加到作为补充组的ateam组 将目录 /home/ ...

  6. mac 挂载linux分区命令,mac os 挂载 读linux 文件系统 xfs ext4

    ext4 安装osxfuse brew cask install osxfuse 报这个错误的原因是xcode-select不在默认的路径 xcode-select: error: tool 'xco ...

  7. 《Linux命令行与Shell脚本编程大全第2版》读书笔记

    公司说不准用云笔记了,吓得我赶紧把笔记贴到博客上先..... 近3年前的了,只有一半的章节,后面的没空记录了.... 第1章 可以cat /proc/meminfo文件来观察Linux系统上虚拟内存的 ...

  8. 读优化阵列信号处理------窄带部分读书笔记

    1. 绪论 2.阵列信号处理数学模型 阵列流形向量(array manifold vector):基阵各方位的方向响应向量的集合. 问题1:互谱矩阵 式2.31,噪声功率怎么来的,与互谱矩阵的关系是什 ...

  9. 《短视频,内容设计+营销推广+流量变现》---向登付出,读书笔记

    文章目录 短视频:内容创业的下一个"风口" 满足移动时代用户碎片化的需求 能够帮助线下场景做推广 短视频的盈利模式 直接变现模式 间接变现模式 特色盈利模式 需求定位:找准发展&q ...

  10. python读记手册_Python魔力手册读书笔记

    CH1处理字符串 输入如下代码1 2 3 4 5 6 7 8 9 10 11 12 13 14phone_number = '1386-666-0006' hiding_number = phone_ ...

最新文章

  1. 同步和串行的区别_[深度思考]·为什么CNN是同步(并行)而RNN是异步(串行)的呢?...
  2. Java实现算法导论中最长公共子序列(LCS)动态规划法
  3. 百分点认知智能实验室:NLP模型开发平台在舆情分析中的设计和实践(下)
  4. ARM指令寻址方式之: 数据处理指令的寻址方式
  5. 飞鸽传书网站最新改版
  6. 啥是佩奇,Python 告诉你!
  7. NHibernate Antlr.Runtime.NoViableAltException报错
  8. python中StringIO和BytesIO
  9. LineBasedFrameDecoder 行解码器,回车换行符解决 TCP 粘包
  10. 征服ASP.NET Ajax典型应用 (试读)
  11. 收银系统 mysql数据库_解决哗啦啦收银系统数据库备份问题
  12. github电脑壁纸_超有用电脑小工具(二)附福利
  13. 阿贝尔分部求和法的应用(二)
  14. gRPC 流式传输极简入门指南
  15. 【软件测试必备技能】Linux
  16. 数字孪生水利工程可视化平台解决方案,孪生数字技术实现项目案例
  17. Java笔试的各种输入总结
  18. 第一章 第一节 可充当主语的词类
  19. 芯片内部长啥样?牛人用1500张照片,一层层放给你看
  20. Xml和Json之间相互转化知多少?

热门文章

  1. Spring aop优雅实现redis分布式锁 aop应用redis分布式锁
  2. 艾创机器人_世界教育机器人大赛 2019赛季世界锦标赛落幕曲靖代表队获多个奖项...
  3. spring mvc 接收页面数据
  4. c#字符串操作自我总结
  5. (JAVA)Math类
  6. 【数据结构与算法-java实现】一 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
  7. PHP内存管理机制与垃圾回收机制
  8. 基于 vue2 导航栏透明渐变
  9. QML官方系列教程——QML Applications
  10. sp_executesql介绍和使用 转