mach内核系列(一)

2020-07-21  本文已影响0人  SpringAlways

mach task

概念

mach task是资源、虚拟地址空间、端口名空间的集合。

特点

  1. task依赖线程来执行代码,task本身无法做到这一点。
  2. 从一个task切换到另一个task,会触发上下文的转换,这通常是个昂贵的操作。因为它涉及到硬件的内存布局(虚拟地址空间)等概念。
  3. task区别于unix进程的点在于它们提供更少的功能。进程有信号、进程/组/session ID、文件描述符和其他很多东西,而task被用于资源分配和分享。task是资源容器。

虚拟地址空间

概念

Mach中的虚拟地址空间定义了有效的虚拟地址。所谓有效,是指被task拥有,并且正在执行的线程的地址。

特点

  1. task和虚拟地址空间是一一对应的。我们可以通过task来给虚拟地址空间命名.
  2. 地址空间被分为多个page。每一个page有自己独立的属性,如:读、写、执行(访问属性),是否继承、拷贝、共享(继承属性),以及其他一些系统属性。
  3. 页面操作已经做了优化。这些优化有助于把大块的数据从一个地址空间搬运到另一个地址空间。例如,线程间的数据搬运。(c/s)
  4. 在页面中可以被作为一个整体控制和处理的内存范围被称作内存对象。
  5. 无法被分页的内存页叫做 wired pages. 例如,mach自身就是拥有地址空间、线程、内存页(所有的都是wired page)的task.
  6. 珍贵页。珍贵页是那些当自己是干净的,并且系统需要内存时,也不会被静默丢弃的页面。例如,当一块内存在通过网络共享,如果未经任何操作修改,就被静默丢弃了,那么它是无法被恢复的。当然,如果使用了well-known pager mananger的系统,这块内存的内容可以通过磁盘恢复。不可静默丢弃这一条也就失效了。
上一篇 下一篇

猜你喜欢

热点阅读