1.1 Unix的历史
unix的优点
- 简介,没有繁冗的系统调用
- 所有东西都被当成了文件对待,对文件和对设备的操作是通过同样的系统调用的接口实现的
- 内核和相关工具使用C编写,具有很高的可移至性
- 创建新的进程非常迅速
- 进程间的通信简单稳定
1.2 追寻Linux足迹
linux和unix并不一样,他并没有使用unix的源代码,只是使用unix的接口名称
1.3 操作系统和内核简介
内核是实现了一组核心系统功能的程序集合,如终端响应、进程管理、内存空间管理等,系统其余部分必须依赖内核来提供服务。
其实内核说白了就是一些代码,当然整个计算机软件都是一些代码,内核和普通的软件代码不同之处在于在提供保护机制的计算机系统里,内核代码拥有更高的权限。当系统执行内核代码的时候,系统处于内核态。内核代码拥有访问受保护内存空间和访问硬件的权力,这种系统态和被保护的内存空间被称为系统空间。当系统执行普通代码的时候,系统处于用户态,只能访问有限的内存空间,这些有限的内存空间被称为用户空间。
我们平时写代码的时候也需要和硬件打交道,比如print函数向屏幕上输出helloworld。但是普通程序是不具备访问硬件的权限的,所以他必须要通过某种方式来让请求内核来实现访问硬件的功能。学究一点的说法就是“应用程序通过系统调用来和内核进行通信”。其实应用程序并非直接和系统调用打交道,比如C语言是先调用库函数然后再由库函数去执行系统调用。库函数封装了一些系统调用不具有的新功能,比如printf打印字符串的功能是通过write系统调用来实现的,printf函数也支持格式化字符串,所以printf函数在系统调用之前先会完成格式化字符串的功能,把格式化之后的字符串作为参数传给write这个系统调用。也有一些简单的库函数直接进行系统调用,比如open。
用学究的可以在面试官面前装逼的语言总结一下上述过程:应用程序通过系统调用而陷入内核,当一个应用程序在执行一条系统调用的时候,内核在代其执行,应用程序通过系统调用在内核空间运行。
内核还要负责硬件和系统之间的通信。硬件和系统的通信是通过中断来实现的,以键盘敲击为例,当敲击键盘输入某个字符的时候,键盘发出一个中断,每一个中断都有自己的一个中断号。内核收到中断请求,根据中断里的中断号去查询相应的中断服务程序去响应中断。比如服务键盘输入的中断会读取输入缓冲区里的字符,并通知键盘可以继续输入了。中断服务程序在一个与进程无关的、专门的中断上下文里运行,这样做是为了提高中断响应速度。
中断是可以屏蔽的,对于某个处理器,它可以屏蔽所有中断也可以选择屏蔽某个中断号的中断。在后面的同步相关章节会设计到。
所有综上所有情况,一个处理器一定是处在下述三种运行状态之下
- 用户空间,执行用户进程
- 内核空间,处于进程上下文,此时是在处理进程的系统调用请求
- 内核空间,处于中断上下文,处理中断
1.4 Linux内核和传统Unix内核的比较
内核的设计分为两大阵营:单内核和微内核。
大多数unix采用的是单内核,即unix内核是一个不可分割的静态可执行库,它以一个巨大的二进制文件的格式存在于磁盘中,所谓不可分割意味着整个内核要么全部被加载要么都不被加载,不存在某一功能模块被加载而另一些功能模块代码没有被加载的情况。整个内核同时被加载意味着他们运行在同一个地址空间中,所以内核间不同的模块不存在通信的问题,可以以函数调用的方式调用不同模块的代码。
与单内核相反,微内核把不同的功能划分成不同的模块,不同的模块运行在不同的地址空间里。一个比较特殊的地方是,作为内核的一些功能模块居然运行在非特权模式下运行,只有少量的具有“强烈请求特权”的功能模块运行在特权模式。因此模块直接的相互调用需要通过某种方式通信,这就产生了进程间通信(IPC)机制,这种通信会带来比单内核之间函数调用更大的代价,而且不同的模式之间的切换设计到内核空间和用户空间的上下文切换。
实际中那些号称微内核的操作系统,比如WindowsNT和MacOSX都是让微内核的所有功能模块运行在内核空间,这是违背了设计初衷的。我们的linux是单内核的,但是他也吸收了微内核的一些精华,比如可以在需要的时候动态的卸载和加载部分内核代码。
第1章 Linux内核简介的更多相关文章
-
Linux内核分析——第一章 Linux内核简介
第一章 Linux内核简介 一.Unix的历史 1.Unix系统成为一个强大.健壮和稳定的操作系统的根本原因: (1)简洁 (2)在Unix中,很多东西都被当做文件对待.这种抽象使对数据和对设备的 ...
-
《Linux内核设计与实现》读书笔记 第一章 Linux内核简介
一.相关历史 1. Unix内核的特点 简洁:仅提供系统调用并有一个非常明确的设计目的 抽象:几乎所有东西都被当做文件 可移植性:使用C语言编写,使得其在各种硬件体系架构面前都具备令人惊异的移植能力 ...
-
第一章 Linux内核简介
1. 操作系统和内核 操作系统是指在整个系统中负责完成最基本功能和系统管理的那些部分.包括内核.设备驱动程序.启动引导程序.命令行shell或者其他种类的用户界面.基本的文件管理工具和系统工具. 用户 ...
-
2013337朱荟潼 Linux第一章读书笔记——Linux内核简介
一.Unix历史 二.Linux足迹 类Linux系统.非商业化产品.用途广泛 三.操作系统和Linux内核简介 1.操作系统 (1)是指在整个最基本功能系统中负责完成最基本功能和系统管理的部分. ( ...
-
Linux 内核简介
Linux内核简介 一.系统架构 (1). Linux系统架构 ##用户空间: 文件系统 C库 ##内核空间: 接口 内核 (2). Linux内核架构 二.Linux内核源代码 下载地址 www.k ...
-
Linux内核简介、子系统及分类
一.内核简介 内核:在计算机科学中是一个用来管理软件发出的数据I/O(输入与输出)要求的计算机程序,将这些要求转译为数据处理的指令并交由*处理器(CPU)及计算机中其他电子组件进行处理,是现代操作系 ...
-
Linux内核简介
内核是提供硬件抽象层.磁盘及文件系统控制.多任务等功能的系统软件.一个内核不是一套完整的操作系统.一套基于Linux内核的完整操作系统叫作Linux操作系统,或是GNU/Linux.Linux内核的主 ...
-
[国嵌攻略][098][Linux内核简介]
Linux系统架构 1.用户空间:应用程序.C函数库 2.内核空间:系统调用接口.内核.体系结构相关代码 Linux系统利用处理器不同的工作模式,使用其中的两个级别分别来运行Linux内核与应用程序, ...
-
第1章 Linux系统简介
第1节 UNIX发展历史和发行版本 1. UNIX与Linux发展史 1.1 UNIX发展历史 (1)1965年,美国麻省理工学院(MIT).通用电气公司(GE)及AT&T的贝尔实验室联合开发 ...
随机推荐
-
PAT-乙级-1055. 集体照 (25)
1055. 集体照 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 拍集体照时队形很重要,这里对给定的N ...
-
[zz]安装PostgreSQL数据库(Linux篇)
0.编译环境 Linux: CentOS 5.5 gcc: 4.1.2 1. 安装PostgreSQL 1) 解压postgresql-9.1.7.tar.bz2 #tar jxvf postgres ...
-
Oracle EBS-SQL (SYS-9):职责使用菜单.sql
select aa.menu_name, aa.user_menu_name, aa.type, aa.description, aa.ENTRY_SEQUENCE, ...
-
DX与OpenGL投影矩阵的区别
之前学习DX和OpenGL时到是知道一点,但是没仔细研究过,只是跟着教程抄个公式就过了,看双API引擎时发现转换时是个问题,必须搞懂,gamedev上找了个解释,希望用得上. https://www. ...
-
vue 使用mint-ui实现上拉加载和下拉刷新
解决了官网中下拉刷新存在的问题 <template> <div class="tmpl"> <nav-bar title="商品列表&quo ...
-
Git学习笔记(三)
Git提交相关内容 在Git提交时,会保存一个提交对象,该对象包括一个指向暂存区内容快照的指针,包括本次提交作者等相关附属信息,包括零个或多个指向该提交对象的父对象指针:首次提交时是没有祖先,普通提交 ...
-
USACO Section 1.5 Number Triangles 解题报告
题目 题目描述 现在有一个数字三角形,第一行有一个数字,第二行有两个数字,以此类推...,现在从第一行开始累加,每次在一个节点累加完之后,下一个节点必须是它的左下方的那个节点或者是右下方那个节点,一直 ...
-
遇到问题---java---@value注解为null
Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 在xml文件中配置properties文件 例如 cas.authn.mongo.col ...
-
cesium初始化参数
var viewer = new Cesium.Viewer('cesiumContainer',{ animation:false, //动画控制不显示 //baseLayerPicker:fals ...
-
CF Dima and Salad 01背包
C. Dima and Salad time limit per test 1 second memory limit per test 256 megabytes input standard in ...