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内核设计与实现>读书笔记 的目录: < ...
随机推荐
- 测试dos攻击对openflow中flow_table溢出的影响
环境准备 环境 ubuntu16.04 mininet pox scapy 安装mininet sudo apt-get update sudo apt-get upgrade git clone g ...
- Tushare test
查看版本 import tushare print(tushare.__version__) 1.2.12 初步的调用方法为: import tushare as ts ts.get_hist_dat ...
- 计数dp
计数dp 计数类的$dp$没做过几个,所以之前都放到"思维"标签下了,后来发现原来这属于一类问题啊...搬过来了. 管道取珠:https://www.lydsy.com/Judge ...
- c# winform 自动升级
winform自动升级程序示例源码下载 客户端思路: 1.新建一个配置文件Update.ini,用来存放软件的客户端版本: [update] version=2011-09-09 15:26 2.新 ...
- 更改Apache默认起始(索引)页面:DirectoryIndex
Apache默认索引页面是index.html,修改成其他文件需要修改httpd.conf文件: # # DirectoryIndex: sets the file that Apache will ...
- Oracle RMAN 恢复数据库到不同主机(一)
一.RMAN 备份的内容 RMAN做数据库全备时包含了 数据文件.归档日志.控制文件和参数文件和备份日志,如下: arch_20160223_08qukp2t_1_1 arch_20160223_0 ...
- [转]VS2013+简单稀疏光束调整库SSBA配置(64位编译)
有关SSBA库的资源比较少,我是在Github上搜索下载的,具体的GitHub官方下载地址为:SSBA 下载后在SSBA解压文件夹下新建文件夹build. 打开cmake gui,在source co ...
- char a='1'和char a=1区别
char a='1'表示:把字符为1,ASSIC码为49的值赋值给a: char a= 1表示:把ASSIC码为1的值赋值给a
- Android-ProgressDialog点击对话框外部是不让其消失
1)ProgressDialog.setCanceledOnTouchOutside(false); 调用这个方法时,按对话框以外的地方不起作用.按返回键还起作用 2)ProgressDialog.s ...
- C#/JS AES字符串加密和解密
往往我们有一种需求:在页面端实现对即将传入到后台端的某些字符串进行加密,然后在后台端对传入进来的字符串做解密.在一些有安全要求的数据传输上会用到此种方式 下面分别列出js端和后台端的加密或解密代码. ...