Linux Kernel学习002——简介(二)

操作系统和内核简介

操作系统的精确定义没有一个统一的标准。一般而言,操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分。这些部分应该包括内核、设备驱动程序、启动引导程序、命令行SHell或者其他种类的用户界面、基本的文件管理工具和系统工具。系统这个词其实包含了操作系统和所有运行在它之上的应用程序。

用户界面是操作系统的外在表象,内核才是操作系统的内在核心。系统的其他部分必须依靠内核提供的服务,像管理硬件设备、分配系统资源等。通常内核由负责响应中断的中断服务程序,负责管理多个进程共享处理器的调度程序,负责管理进程地址空间的内存管理程序和网络、进程间通信等系统服务程序共同组成。对于提供保护机制的现代处理器来说,通常处理器至少应提供两种不同的执行模式——用户模式和系统(内核、特权)模式。操作系统和用户程序分别运行在系统模式和用户模式下,彼此独立。操作系统内核拥有收到保护的内存空间和访问硬件设备的所有权限,而用户程序只能在用户模式执行,只能使用部分系统功能。当系统内核运行时,系统以内核模式进入内核空间执行。而一个普通的用户程序执行时,系统将以用户模式进入用户空间执行。

在系统中运行的应用程序通过系统调用(system call)来与内核通信。但是应用程序一般不直接使用系统调用,而是通过库函数(比如glibc)再由库函数通过系统调用完成各种不同的任务。

如下所示:

系统调用

当一个应用程序执行一条系统调用时,我们说内核正在代其执行。这时,应用程序被称为通过系统调用在内核空间执行,而内核被称为运行于进程上下文中。

内核还要管理系统的硬件设备。现代的处理器体系结构几乎都提供了中断机制。当硬件设备需要与系统通信时,它首先发出一个异步的中断信号去打断处理器的执行,进而打断内核的执行。每一个中断通常都对应着一个终端号,内核可以通过这个中断号查找相应的中断服务程序,进而使用该程序响应和处理中断。为了保证中断服务程序能够在第一时间响应和处理中断请求,然后快速地退出,中断服务程序在一个与所有进程无关的、专门的中断上下文中运行。

处理器在任何指定的时间点上的活动必然为以下三者之一:

关系
  • 运行于用户空间,执行用户进程
  • 运行于内核空间,处于进程上下文,代表某个特定的进程执行
  • 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断

Linux内核和传统Unix内核的比较

Unix内核同宗同源,并且提供相同的API,现代的Unix内核在许多设计上都很相似。Unix内核几乎都是一个不可分割的静态可执行库(叫做宏内核或者单内核,monolithic kernel)。也即,它们必须以巨大、单独的可执行块的形式在一个单独的地址空间执行。Unix内核通常需要硬件系统提供的内存管理单元(MMU)以管理内存。这种机制可以加强对内存空间的保护,并保证每个进程都可以运行于不同的虚地址空间上。早期的Linux系统也需要MMU支持,后来的一些特殊版本不依赖与此,这使得它可以运行在一些没有MMU的小型嵌入式系统中(不过目前基本简单的嵌入式系统都具备MMU了)。我们重点关注的是支持MMU的Linux内核。

宏内核(或者叫单内核, monolithic kernel)和微内核(micro kernel)

操作系统内核可以分为两大类:宏内核和微内核(或者还可以再加上混合内核)

宏内核是一种较为简单的设计,所谓宏内核就是将它从整体上作为一个单独的进程来实现,同时也运行在一个单独的地址空间上。因此,宏内核通常以单个二进制文件的形式存放于磁盘中。此时内核间通信的代价是微不足道的,因为处于同一地址空间,可以直接通过调用函数交互。这种模式具有简单和性能高的特点。缺点是内核尺寸较大,崩溃的风险提高,不易于移植。

微内核不是作为一个单独的大进程来实现的,而是被划分为多个独立的进程(被称作服务器)。一些服务器运行在内核空间,大部分运行在用户空间。所有的服务器都保持分离,并且运行在不同的地址空间。服务器通过IPC(进程间通信)发送消息的方式彼此调用服务。微内核的分割模式避免了部分服务器的失效祸及整个内核。但是,IPC机制的开销大于函数条用,而且涉及内核空间与用户空间的上下文切换,因此导致消息传递需要一定的周期。因而微内核的性能不如宏内核。

内核

宏内核和微内核的比较

  1. 从理论上来看,微内核的思想更好些,微内核把系统分为各个小的功能块,降低了设计难度,系统的维护与修改也容易,但通信带来的效率损失是个问题。宏内核的功能块之间的耦合度太高造成修改与维护的代价太高,但是效率高性能好。
  2. 宏内核比微内核更老,宏内核的涉及思想出现在20世纪80年代末。
  3. 宏内核用于Unix和Linux。微内核用于QNX,L4以及HURD(GNU的内核)。微内核最早用于Mach(不是Mac OS X),不过之后它就转向了混合内核。至于Minix也不能算是一个纯正的微内核,因为它的设备驱动直接编译作为内核的一部分了。
  4. 宏内核比微内核执行速度更快
  5. 宏内核一般比较庞大,微内核的体积很小。
  6. 在宏内核中,设备驱动驻留在内核空间;微内核中,设备驱动驻留在用户空间。
  7. 由于设备驱动驻留在内核空间,这导致宏内核较微内核更不安全,并且驱动的错误可能导致内核崩溃。
  8. 宏内核使用信号和套接字保障IPC,微内核使用消息队列。
  9. 为宏内核添加新的功能特性意味着重新编译整个内核,而在微内核中可以通过补丁轻松地添加新特性而无需重新编译。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • 1. 基础知识 1.1、 基本概念、 功能 冯诺伊曼体系结构1、计算机处理的数据和指令一律用二进制数表示2、顺序执...
    yunpiao阅读 5,292评论 1 22
  • 文/tangsl(简书作者) 原文链接:http://www.jianshu.com/p/2b993a4b913e...
    西葫芦炒胖子阅读 3,758评论 0 5
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 4,119评论 0 23
  • 什么是玩客币 玩客币是玩客云共享计算生态下的基于区块链技术的原生数字资产,它的产生过程与玩客云智能硬件、共享CDN...
    何岐有幸阅读 457评论 0 0
  • 我想出去流浪,和你一起 我想去深山种田,和你一起 我想吃遍所有美食,和你一起 我想去希腊探寻,和你一起 是的,无时...
    阿憨大叔家的猫阅读 110评论 0 0