Linux内核设计与实现笔记_1_基本概念

操作系统

系统这个词包含了操作系统和所有运行在它上面的应用程序.操作系统是指在整个系统中负责完成分最基本功能和系统管理的那些部分,这些部分应该包括:

内核,
设备驱动程序,
启动引导程序,
​> 命令行shell,
用户界面,
基本文件管理工具
系统工具.

内核

用户界面是操作系统的外在表象,内核才是操作系统的内在核心,系统的其他部分必须依靠内核这部分软件提供的服务,如

管理硬件设备,
分配系统资源等

内核的组成

内核也被称为管理者或操作系统核心.
通常一个内核由

负责响应中断的中断服务程序,
负责管理进程地址空间的内存管理程序,
负责管理多个进程从而分享处理器时间的调用程序,
网络,进程间通信等系统服务等共同组成.

内核空间

对于具有内核保护机制的现代系统来说,内核独立于普通应用程序,他一般处于系统态,即拥有受到保护的内存空间和访问硬件设备的所有权限.这种系统态和被保护起来的内存空间,统称为内核空间.

用户空间

应用程序在用户空间执行,他们只能看到允许他们使用的部分系统资源,并且只能使用某些特定的系统功能,不能直接访问硬件,也不能访问内核划分给别人的内存范围,还有一些其他的限制.

系统状态的切换

内核运行时,系统以内核态进去内核空间执行,当执行一个普通的用户程序时,系统以用户态进入用户空间执行.

系统调用

应用程序通过系统调用让内核代其完成一些任务.我们称,内核正在代其执行.

应用程序被称为通过系统调用在内核空间运行,而内核被称为运行于上下文中.

应用程序通过系统调用在内核空间运行,是应用程序完成其工作的基本行为方式.

中断机制

硬件想与系统通信时,会发出一个异步中断信号,打断CPU执行,继而打断内核的执行,一个中断对应着一个中断号,内核通过中断号找到并执行对应的中断服务程序,来处理中断.许多操作系统,包括Linux的中断管理程序,都不在进程环境范围中运行,而是在一个专用于处理中断的内核环境范围中执行,为了保证中断的快速处理和快速退出.

每个处理器在任一时刻上的内核活动必然包括三者之一:

  1. 运行于用户空间,执行用户进程.
  2. 运行于内核空间,处理进程上下文,代表某个特定的进程执行.
  3. 运行于内核空间,执行中断上下文,与任何进程无关,处理特定中断.
  4. 当CPU空闲时间,内核就运行一个空进程,处于进程上下文之间,运行于内核空间.

MMU

Unix内核,可以看成是一个静态可执行库,
因此,Unix系统的运行,必须以一个可执行块在一个单独的地址空间中运行.因此需要MMU机制来管理内存;
MMU也称为页机制,Unix内核通常需要硬件系统提供页机制,管理内存,
使得每个进程都能运行在不同的虚拟地址空间中.

操作系统的内核分为三大阵营: 单内核 微内核 外内核

单内核
单内核是最为简单的设计,所谓单内核,就是把内核做为一个大过程来实现,运行在一个单独的地址空间中,将内核以静态二进制文件的形式存放在磁盘中,所有的内核服务都在同一个内核的地址空间中运行.因为大家都运行在内核态,所有的进程和系统服务都在同一个地址间,这使得用户空间与内核空间是在同一个地址空间中,用户程序与系统程序之间可以互相调用,没有隔离,单模块具有简单高性能的特点,大多数Unix系统都设计为单模块.

微内核

微内核将内核划分为多个独立的过程,每个过程称为一个服务器.

只有强烈请求特权服务的服务器,才能够运行在特权模式下,其他服务器都运行于用户空间,
由于内核空间与用户空间在不同的地址区域,所以他们之间不能直接访问,而只能够通过消息传递处理服务器间的通信.系统采用进程间通信IPC机制,各个服务器通过IPC机制互通消息,
这种模块化设计,由于各个服务器都被隔离开运行,在不同的地址区域,这避免了一个服务器崩坏,导致系统崩溃,比单内核更安全.

微内核的缺点:

IPC机制的开销多于函数调用,又涉及到内核空间与用户空间的切换,所以传递消息需要一定的时间,而单内核没有这些开销,实际的微内核系统,通常让全部内核服务都位于一块内核空间中,这使得内核服务之间可以直接调用,避免了内核服务之间传递消息的开销,Windows NT和Max OS X都是微内核的典型实例.

Linux是单内核系统,让所有事情都运行在内核态,直接调用函数,没有传递消息的开销.

Linux内核版本的命名机制:

第一个数字是主版本号
第二个数字是从版本号,偶数为稳定版,奇数为开发版
第三个数字是修订版本号
第四个数字是稳定版本号(可选)
如 2.6.26.1
内核主版本号为2,从版本号为6,修订版本号为26,稳定版本号为1.

Linux内核设计与实现笔记_1_基本概念的更多相关文章

  1. linux内核设计与实现笔记 进程调度

    转载:http://blog.chinaunix.net/uid-24919665-id-3013590.html

  2. 《Linux内核设计与实现》读书笔记(十八)- 内核调试

    内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...

  3. 初探内核之《Linux内核设计与实现》笔记下

    定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关 ...

  4. 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...

  5. 《Linux内核设计与实现》课本第三章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第三章自学笔记 进程管理 By20135203齐岳 进程 进程:处于执行期的程序.包括代码段和打开的文件.挂起的信号.内核内部数据.处理器状态一个或多个具有 ...

  6. 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳

    <Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一 ...

  7. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

  8. 《Linux内核设计与实现》读书笔记 - 目录 (完结)

    读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个<Linux内核设计与实现>读书笔记 的目录: < ...

  9. 《Linux内核设计与实现》课本第一章&第二章学习笔记

    <Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ...

随机推荐

  1. 关于 typeof 的暂时性死区,了解一下

    将知识转化为能力,核心是掌握20%行业核心技能,把学习培养成习惯,持续深耕,用能力解决问题,方能持续成长!那么基础好,就是必须条件. 最近看 数据类型,知道数据类型判断有三种方式,typeof 是其中 ...

  2. Unity3-各个内置面板,对象说明

    *在Inspector面板中,是表示每个物体(诸如摄像机,圆柱,正方体)的组件. 组件包含: 1.Transform,在第一节当中,可以用于变换物体的位置.每个物体对象都有. 2.cube,网格,对于 ...

  3. My Eclipse 配置

    设置编码格式 点击Windows → preference → WorkSpace 设置编码格式 点击Windows → preference → General →Appearence → Colo ...

  4. 微服务架构~Zuul1.0和2.0我们该如何选择?

    介绍 在今年5月中,Netflix终于开源了它的支持异步调用模式的Zuul网关2.0版本,真可谓千呼万唤始出来.从Netflix的官方博文[附录1]中,我们获得的信息也比较令人振奋: The Clou ...

  5. Charles破解安装及基本使用

    一.Charles简介 1.Charles是一款代理服务器,通过成为电脑或者浏览器的代理,而后截取请求和请求结果达到抓包目的. 2.Charles是用Java写的,能够在Windows,Mac,Lin ...

  6. 算法笔记codeup-Contest100000567

    A 1 #include <stdio.h> 2 #include <math.h> 3 int main() 4 { 5 double a=0; 6 double b=0; ...

  7. [LINQ2Dapper]最完整Dapper To Linq框架(四)---Linq和SQL并行使用

    目录 [LINQ2Dapper]最完整Dapper To Linq框架(一)---基础查询 [LINQ2Dapper]最完整Dapper To Linq框架(二)---动态化查询 [LINQ2Dapp ...

  8. Linux系统重启Oracle-12c步骤

    Linux系统重启Oracle-12c步骤 1. 使用oracle用户登录: [root@Oracle-12c /]# su – oracle 2. 登录oracle登陆管理员账号: [oracle@ ...

  9. C#同级catch块和finally块中全都抛出异常,上一级捕获哪一个?

    C#同级catch块和finally块中全都抛出异常,上一级优先捕获finally块中的异常. 测试代码: using System; namespace test { class Program { ...

  10. vue-create 报错 command failed: yarn --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/dist 完美解决方案

    @vue/cli 3.x 创建项目失败解决方案 报错信息 command failed: yarn --registry=https://registry.npm.taobao.org --distu ...