Linux内核设计与实现(chapter1/2)
Linux内核简介
Unix从一个失败的多用户操作系统Multics中衍生来的。
Unix强大的原因:
- 简洁
- 几乎所有的东西都被当做文件来对待,可以通过相同的系统调用接口来进行调用。
- 因为它是由c语言编写,所以具有强大的移植能力
- 进程创建迅速,且拥有独特的fork()系统调用
- 具备清晰的层次化
Unix操作系统多样的功能:
- 抢占式多任务
- 多线程
- 虚拟内存
- 换页
- 动态链接
- TCP/IP网络
Linux是类Unix系统,但它不是Unix。
Linux内核是自由软件。
操作系统和内核简介
- 内核是操作系统的内在核心,有时候其被称为管理者或者是操作系统核心。
- 应用程序通过系统调用与内核通信。
- 内核可以通过中断号查找相应的中断服务程序,并调用这个程序响应和处理中断。
- 每个处理器在任何指定时间点上的活动必然概括为下列三者之一:
- 运行于用户空间,执行用户进程
- 运行于内核空间,处于进程上下文,代表某个特定的进程执行。
- 运行于内核空间,处于中断上下文,与任何进程无关,处理某个特定的中断。
Linux内核和传统Unix内核的比较
Unix内核通常需要硬件系统提供页机制(MMU)以管理内存。
操作系统内核的两大阵营:单内核和微内核
单内核:内核从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上运行。内核可以直接调用函数。大多数的Unix系统设计为单模块。
- 简单
- 性能高
微内核:其的功能被划分为多个独立的过程,每个过程叫做一个服务器。所有的服务器都保持独立并运行在各自的地址空间上,通过消息传递处理内核通信——IPC机制(进程间通信机制),消息传递需要一定的周期。
Linux是一个单内核,即Linx内核运行在单独的内核地址空间上。
Linux内核与传统的Unix系统之间存在一些显著的差异:
- Linux支持动态加载内核模块
- Linux支持对称多处理机制(SMP机制)
- Linux内核可以抢占
- Linux对线程支持的实现比较有意思
- Linux提供具有设备类的面向对象的设备模型、热插拔时间,以及用户控件的设备文件系统
- Linux忽略了一些拙劣的Unix特性
- Linux体现了自由。
Linux内核版本
- 主版本号.从版本号.修订版本号.稳定版本号
从内核出发
使用Git获取Linux版本中的一种版本
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
更新版本
git pull
安装内核源代码
- 若为bzip2的压缩形式:tar xvjf linux-x.y.z.tar.bz2
- GNU的zip:tar xvzf linux-x..y.z.tar.gz
使用补丁:patch -pl< ../patch-x.y.z
内核的配置与安装通过Makefile与config所定。
我有话说:
如果让我一下子去学习内核里面的一堆代码内容,我只能呵呵呵呵呵,好在现在的我有时间,慢慢看吧,毕竟很多事情都可以一件一件一件一件一件一件地完成。
Linux内核设计与实现(chapter1/2)的更多相关文章
- 《Linux内核设计与实现》CHAPTER1,2阅读梳理
<Linux内核设计与实现>CHAPTER1,2阅读梳理 [学习时间:2.5hours] [学习内容:Linux内核简介——历史与现今版本:Linux内核源代码以及编译] CHAPTER1 ...
- 《Linux内核设计与实现》学习记录一
chapter1 Linux内核简介 前言:Unix是一个具有相似应用程序编程接口(API)并且基于相似设计理念的操作系统家族. 1.1 Unix的历史 1.Unix演化版实现了任务管理.换页机制.T ...
- 《linux内核设计与实现》实践之模块及深入
<linux内核设计与实现>实践之模块及深入 写在前面的话. 基础模块部分我已经做完了,设计到的知识点无非就是,编写模块代码,编写Makefile文件,加载模块和卸载模块部分.由于大家都 ...
- 《Linux内核设计与实现》CHAPTER13阅读梳理
<Linux内核设计与实现>第13章阅读总结 [edited by 5216lwr] 一.虚拟文件系统概述 1.虚拟文件系统 (也称作虚拟文件交换或VF)作为内核子系统,为用户空间程序提供 ...
- 《Linux内核设计与实现》CHAPTER17阅读梳理
<Linux内核设计与实现>CHAPTER17阅读梳理 [学习时间:3.5hours] [学习内容:设备类型,模块,内核对象,sysfs] 个人思考部分见[]标出的部分 一.课堂讲解整理& ...
- 《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内核设计与实现>读书笔记 的目录: < ...
随机推荐
- [luogu2172] 部落战争
题面 我们可以将'.'抽象为一个可以通过的点, 将'x'抽象为一个不可通过的点. 那么题意便可以转化为: 一条路径可以看做从任意一个没有到达过的可通过的点出发到任意一个其他的可以通过却没有被到 ...
- 测试udp服务的端口是否可用
测试tcp服务的端口是否可用,可以使用: telnet ip port 但是如果这个用在upd服务上,就会报错, 因为telnet走的是tcp协议, 比如说192.168.80.131在8888端 ...
- OC4J Configuration issue. /u01...dbhome_1/oc4j/j2ee/OC4J_DBConsole_orcl-db-01_orcl not found.
emctl start dbconsole 报错信息: OC4J Configuration issue. /u01/app/Oracle/product/11.2.0/dbhome_1/oc4j/j ...
- [转]在C++中容易出现的#error No Target Architecture
项目环境:win 7 64位,编译环境:VS2013 最近在写C++的项目,发现了自己很多不会的地方,这也使得我在C++中的成长变得比较快,下面我就说说我自己在写项目是遇到的一些问题,希望可以帮到一些 ...
- HDU1599(Floyd最小环)
Floyd最小环理解+模板: https://www.cnblogs.com/DF-yimeng/p/8858184.html 除了上述博文里写的,我再补充几点我的理解. 1.为什么先枚举ij求经过i ...
- js阻止事件冒泡的两种方法
1.什么是JS事件冒泡 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这 ...
- Android 混淆打包
有些时候我们希望我们自己的apk包不能被别人反编译而获取自己的源代码.这就需要我们通过Android提供的混淆打包技术来完成. 一.没有引用外部包的情况: 这种情况下代码混淆的方式相对简单: 1)只需 ...
- tarjan 求割点
在无向连通图中,如果将其中一个点以及所连的所有边都删掉,图就不再连通的话,那么这个点就叫做割点 首先将所有的点分为:1.环中点 2.不成环的单点割点一般出现的情况是:如果(处在不同环中/一环一单点/均 ...
- haproxy [WARNING] 312/111530 (17395) : config : 'option forwardfor' ignored for frontend 'harbor_login' as it requires HTTP mode.
1.经过调查, 2down voteaccepted x-forwarded-for is an HTTP header field, so has nothing to do with the tr ...
- bash下输入命令的几个常用快捷键
------------------------------------------ 先区分下vi里的命令 快速在行里移动光标 b 是往前部一个单词一个单词的移动 e 是往后部一个单词一个单词的移 ...