Low-Level Programming:Kernel

Kernel

什么是内核呢?内核协作着硬件和软件之间的输入和输出。它是操作系统最关键的一部分,正是因为它,程序开发者可以不需要考虑底层硬件设备,自由地编写代码。

Apple 操作系统有很多有趣的故事!

Apple , Next, &Be

乔布斯因为一些原因,离开了Apple公司,并加入一家新的公司-NEXT,这家公司专门生产基于NEXTSTEP操作系统的硬件。

NeXTSTEP是一个面向对象的多任务操作系统,以MachBSD为基础,以Objective-C作为本地语言,具有先进的GUI接口。

后期,苹果公司收购了NEXT公司,以NeXTSTEP为基础,开发出了以Darwin(达尔文)为核心的Mac OS X操作系统。

Darwin

OS X是操作系统的一个集体名称,操作系统有很多组件,Darwin 就是其中一个。

Darwin是操作系统的类UNIX核心,本身由XNU内核、runtime以及I / O设备驱动的框架组成。

XNU 是Darwin的内核,它是“X is not UNIX”的缩写,它是一个混合内核,由Mach微内核和BSD组成。

Mach 内核是轻量级的平台,只能完成操作系统最基本的职责,比如:进程和线程、虚拟内存管理、任务调度、进程通信和消息传递机制。所以其他工作无法完成,任何额外的功能,例如文件操作和设备访问,都由 BSD 层实现。

BSD

BSD 层建立在 Mach 层之上,这一层提供更现代化的 API,具有更高层次的抽象,。其中包括:POSIX线程模型、网络协议栈、文件系统、设备访问等

我们经常谈到的沙盒机制、GCD,就是在BSD基础上实现的。

Mach-O

Mach-O 是Mach object文件格式的缩写,是一种可执行文件、目标代码、共享程序库。iOS 、OS X 、NEXTSTEP 正是使用了这种独有的二进制格式。

Darwin Additions

从内核和操作系统的角度来看,iOS 可以看成 OS X精简之后的版本,但是有一些区别

  • iOS 的架构是基于ARM 而不是Intel x86 或 x86_64。
  • XNU 虽然是开源的,但是iOS 的内核源码保持闭源

Basic Security Module

Darwin 加入了 Sun 公司的BSM(basic security module,一个审计系统,最早源于 Sun Solaris),可以对用户和进程的行为进行追踪,这个系统对OS X的价值最大,而对iOS 这样的移动系统不是很有意义,因此在后者上并没有启用审计。

Mandatory Access Control

强制访问限制(MAC):限制特定进程对具体文件或资源(例如:套接字和 IPC)的访问权限。这个特性最早属于 TrtstedBSD,并在 OS X 10.5的时候被加入到 OS X系统中。

MACOS X沙盒机制和 iOS Entitlements机制(这个阶段可以先看成更严格的沙盒机制)的基础机制

JetSam

OS X 和 iOS 实现了一个低内存情形的处理机制,称为Jetsam,或者称为memorystatus,这个机制类似与linux上的 “out of memory”jetsam会监控内存的使用情况,会杀掉消耗太多内存的进程。

launchd 进程是内核直接启动的第一个用户态进程,它负责管理系统中的其他进程。那么launchd就采用了Jetsam机制。这种机制会维护两个表,一个是快照列表,保存系统中所有进程的状态以及消耗的内存页面数;还有一个是优先级列表,保存要杀掉的备选进程。这种机制在 iOS 中是非常有用的,可以保证在前台和后台没有过度使用内存的进程。

如果一个程序被标记为被杀掉的备选进程,应用程序可以通过以下方法来做一些处理

UIApplicationDelegate - applicationDidReceiveMemoryWarning:  
              
UIViewController -didReceiveMemoryWarning 
      
UIApplicationDidReceiveMemoryWarningNotification

Kernel Address Space Layout Randomization

地址空间布局随机化:进程每一次启动,地址空间都会简单地随机化。

对于大多数应用程序来说,地址空间随机化是一个和他们完全不相关的实现细节,但是对于黑客来说,它具有重大的意义。

如果采用传统的方式,程序的每一次启动的虚拟内存镜像都是一致的,黑客很容易采取重写内存的方式来破解程序。采用ASLR可以有效的避免黑客攻击。

I/O Kit

I/O Kit的源码开源了,你可以在这里下载

I/O Kit既不属于mach也不属于BSD,它是由NEXTSTEPDriverKit改进而来,DriverKitObjective-C编写,但是I/O Kit使用C++。同时I/O Kit是一个自包含的运行时环境,就是说编写的依赖于I/O Kit API的代码,可以不用考虑Mach层和BSD层的存在。

I/O Kit 由很多不同的族(Family)组成,每个族都定义了抽象的类和具体的类

  • ADB(Apple Desktop Bus)
  • AGP(Accelerated graphics port)
  • ATA & ATAPI(ATA packet interface)
  • Audio
  • Fire Wire
  • Graphics
  • HID(Human interface devices)
  • Network
  • PCI
  • SBP
  • SCSI
  • Serical
  • Storage
  • USB(Universal Serial Bus)

这应该是概述,后面有更深入的分析,期待ing!

这是关于 Low-Level Programming 的读书笔记, 如果有理解错误,望留言告知

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容