Linux内核设计与实现笔记_1_基本概念
Linux内核设计与实现笔记_1_基本概念
操作系统
系统这个词包含了操作系统和所有运行在它上面的应用程序.操作系统是指在整个系统中负责完成分最基本功能和系统管理的那些部分,这些部分应该包括:
内核,
设备驱动程序,
启动引导程序,
> 命令行shell,
用户界面,
基本文件管理工具
系统工具.
内核
用户界面是操作系统的外在表象,内核才是操作系统的内在核心,系统的其他部分必须依靠内核这部分软件提供的服务,如
管理硬件设备,
分配系统资源等
内核的组成
内核也被称为管理者或操作系统核心.
通常一个内核由
负责响应中断的中断服务程序,
负责管理进程地址空间的内存管理程序,
负责管理多个进程从而分享处理器时间的调用程序,
网络,进程间通信等系统服务等共同组成.
内核空间
对于具有内核保护机制的现代系统来说,内核独立于普通应用程序,他一般处于系统态,即拥有受到保护的内存空间和访问硬件设备的所有权限.这种系统态和被保护起来的内存空间,统称为内核空间.
用户空间
应用程序在用户空间执行,他们只能看到允许他们使用的部分系统资源,并且只能使用某些特定的系统功能,不能直接访问硬件,也不能访问内核划分给别人的内存范围,还有一些其他的限制.
系统状态的切换
内核运行时,系统以内核态进去内核空间执行,当执行一个普通的用户程序时,系统以用户态进入用户空间执行.
系统调用
应用程序通过系统调用让内核代其完成一些任务.我们称,内核正在代其执行.
应用程序被称为通过系统调用在内核空间运行,而内核被称为运行于上下文中.
应用程序通过系统调用在内核空间运行,是应用程序完成其工作的基本行为方式.
中断机制
硬件想与系统通信时,会发出一个异步中断信号,打断CPU执行,继而打断内核的执行,一个中断对应着一个中断号,内核通过中断号找到并执行对应的中断服务程序,来处理中断.许多操作系统,包括Linux的中断管理程序,都不在进程环境范围中运行,而是在一个专用于处理中断的内核环境范围中执行,为了保证中断的快速处理和快速退出.
每个处理器在任一时刻上的内核活动必然包括三者之一:
- 运行于用户空间,执行用户进程.
- 运行于内核空间,处理进程上下文,代表某个特定的进程执行.
- 运行于内核空间,执行中断上下文,与任何进程无关,处理特定中断.
- 当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_基本概念的更多相关文章
- linux内核设计与实现笔记 进程调度
转载:http://blog.chinaunix.net/uid-24919665-id-3013590.html
- 《Linux内核设计与实现》读书笔记(十八)- 内核调试
内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...
- 初探内核之《Linux内核设计与实现》笔记下
定时器和时间管理 系统中有很多与时间相关的程序(比如定期执行的任务,某一时间执行的任务,推迟一段时间执行的任务),因此,时间的管理对于linux来说非常重要. 主要内容: 系统时间 定时器 定时器相关 ...
- 《Linux内核设计与实现》课本第四章自学笔记——20135203齐岳
<Linux内核设计与实现>课本第四章自学笔记 进程调度 By20135203齐岳 4.1 多任务 多任务操作系统就是能同时并发的交互执行多个进程的操作系统.多任务操作系统使多个进程处于堵 ...
- 《Linux内核设计与实现》课本第三章自学笔记——20135203齐岳
<Linux内核设计与实现>课本第三章自学笔记 进程管理 By20135203齐岳 进程 进程:处于执行期的程序.包括代码段和打开的文件.挂起的信号.内核内部数据.处理器状态一个或多个具有 ...
- 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳
<Linux内核设计与实现>课本第十八章自学笔记 By20135203齐岳 通过打印来调试 printk()是内核提供的格式化打印函数,除了和C库提供的printf()函数功能相同外还有一 ...
- 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳
<Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...
- 《Linux内核设计与实现》读书笔记 - 目录 (完结)
读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个<Linux内核设计与实现>读书笔记 的目录: < ...
- 《Linux内核设计与实现》课本第一章&第二章学习笔记
<Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ...
随机推荐
- 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
1. 使用ASP.NET Core 3.x 构建 RESTful API - 1.准备工作 什么是REST REST一词最早是在2000年,由Roy Fielding在他的博士论文<Archit ...
- NOIP模拟 2
大概就是考试的时候慌的一批,因为一道正解也没想出来,T1,T3只会暴搜,听见天皇在旁边的窃喜声本渣内心是崩溃的 会打暴搜的我先打了暴搜,大多数时间都用在第二题上,妄想自己能拿50多分- 最后半小时万念 ...
- CSS(5)---通俗讲解盒子模型
CSS(5)---盒子模型 盒子模型四个关键字:内容(content).填充(padding).边框(border).边界(margin), CSS盒子模式都具备这些属性. 一.概念 1. 概念 盒子 ...
- 手把手教你定制标准Spring Boot starter,真的很清晰
写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容:相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 ...
- mysql group by分组查询后 查询个数
mysql group by分组查询后 查询个数2个方法随便你选 <pre>select count(distinct colA) from table1;</pre>< ...
- 从多维卷积说起,比较CNN中的全连接和全卷积
一幅图像里包含三个通道,分别是RGB通道.三通道在卷积时是通过累加三个卷积结果得到的. CNN中全连接层的卷积核大小是feature map的大小.比如feature是3*3的,那么该全连接层的卷积核 ...
- 『嗨威说』算法设计与分析 - PTA 程序存储问题 / 删数问题 / 最优合并问题(第四章上机实践报告)
本文索引目录: 一.PTA实验报告题1 : 程序存储问题 1.1 实践题目 1.2 问题描述 1.3 算法描述 1.4 算法时间及空间复杂度分析 二.PTA实验报告题2 : 删数问题 2.1 实践题目 ...
- C# 获取系统当前登录用户(管理员身份运行同样有效)
今天学习下怎么用.Net获取系统当前登陆用户名,因为目前网上基本只有最简单的方式,但以管理员身份运行的话就会获取不到,所以特整理一下作为分享,最后附带参考文档,方便深究的童鞋继续学习. ======= ...
- 网站搭建-IIS Windows系统搭建网站 (不小心看到自己的密码 - 怎么找回网站记住的密码)
上一期说到IIS可以用自己喜欢的网站来直接玩,然后得得瑟瑟将自己的博客园账号首页拿过去玩(今天第一天水博客园). 然后自己访问啊,访问啊,然后就一直点啊点的,当然,其实后面的链接都是跳转到博客园里面去 ...
- Java 读取Word批注中的文本和图片
本文将介绍读取Word批注的方法,包括读取Word批注中的文本及图片.关于操作Word批注的方法还可以参考这两篇文章:Java 添加.回复.修改.删除Word批注:Java 给Word指定字符串添加批 ...