Linux 内核简介

操作系统简介

操作系统概念:操作系统处于硬件和应用程序的中间层,控制和管理整个计算机系统的硬件和软件资源,提供给用户和其他软件方便的接口和环境,它是计算机系统的最基本的系统软件。
在这里插入图片描述
操作系统功能:

  • 处理机管理
  • 存储器管理
  • 设备管理
  • 文件管理

处理机管理

进程控制:创建和撤销进程
进程同步:对多个进程的运行进行协调
进程通信:实现进程之间的信息交换
调度:按照一定的算法将处理机分配给各个进程

存储器管理

内存分配:存储空间的分配和回收
地址变换:将逻辑地址变换为物理地址
内存保护:防止因用户程序错误破坏系统或其他用户,防止程序之间的相互干扰
内存扩充:在逻辑上为用户提供一个比实际内存更大的存储空间

设备管理

设备分配:按照设备类型和相应的分配算法,将I/O设备分配给哪一个进程
设备处理:设备处理程序用以实现CPU和设备控制器之间的通信
缓冲管理:设置缓冲区的目的是为了缓和I/O设备与CPU速度不匹配的矛盾
缓冲管理程序负责完成缓冲区的分配、释放及有关的管理工作

文件管理

文件存储空间的管理
文件基本操作:创建文件,删除文件,打开文件,关闭文件,读写文件
文件共享:一个文件被多个用户或程序使用
文件保护:保护文件数据安全,口令保护,加密保护和访问控制

Linux系统历史

1969年,Unix诞生于贝尔实验室
1984年,Andrew S.Tanenbaum开发了用于教学的类Unix系统,命名为MINIX.只是一个用于教学目的的简单操作系统,而不是一个强有力的实用操作系统
1991年,芬兰赫尔辛基大学计算机系学生Linus Torvalds使用intel处理机开发的操作系统。将早期版本发布到网络,很多开发者发现问题,解决问题,并不断完善其功能.
Linux遵循GPL版权许可协议
GNU计划是由Richard Stallman在1983年9月27日公开发起的,目标是创建一套完全自由的操作系统。GPL许可的核心保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件的源代码权利
因为GNU的发展理念,使得Linux得到了快速的发展,我们一般所指的Linux,其实全称应该是GNU/Linux
1991: Linux内核在网络公开发布,8000多行代码
1992:在GNU GPL下Linux内核被重新授权使用,产生了第一个“Linux发行版本”
1993:超过100个开发者致力于Linux内核开发。内核逐渐适应了GNU的环境
1994:发布Linux的1.0版本。XFree86项目组提供了一个图形化用户界面(GUI).同年Red Hat公司和SUSE发行了他们各自的Linux1.0分发版本
1995: Linux被移植到DEC Alpha和Sun公司的SPARC平台上,而在接下来的几年里它又被广泛地移植到更多的平台上。
1996: Linux内核2.0版本发布。此时内核已经支持多处理器,确定了Linux的吉祥物:企鹅
1998:很多大公司,诸如IBM,Compaq,Oracle表示支持Linux系统。另外,一部分程序员开始了图形化用户界面KDE的开发
2020.1 Linux内核源码树共有27 85万行、887925次commit和大约21074位不同的作者参与
linux系统特点

  1. 免费开源
  2. 模块化程度高
  3. Linux系统广泛的硬件支持
  4. 安全稳定
  5. 多用户,多任务
  6. 良好的可移植性

Linux内核简介

Linux内核版本号由3个数字组成:r.x.y
r:主版本号
x:从版本号,偶数表示稳定版本;奇数表示开发中版本
y:修订版本号,错误修补的次数

在内核版本的普通数字之后添加后缀rc表示待发布5.8-rc6
longterm: Long Term Support的缩写,长期维护的意思
在这里插入图片描述
Linux内核官方网站:https://www.kernel.org/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获取linux内核

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
https://cdn.kernel.org/pub/linux/kernel/
https://mirror.tuna.tsinghua.edu.cn/kernel/
http://mirrors.163.com/kernel/

内核源代码一般以gzip和bzip2两种方式发布
bzip2的内核linux-x.y.z.tar.bz2
tar jxvf linux-x.y.z.tar.bz2
gzip的内核linux-x.y.z.tar.gz
tar zxvf linux-x.y.z.tar.gz

在这里插入图片描述

目录描述
arch特定体系结构的源码
block块设备I/O层
crypto加密API
Documentation内核源码文档
drivers设备驱动程序
firmware使用某些驱动程序而需要的设备固件
fsVFS和各种文件系统
include内核头文件
init内核引导和初始化
ipc进程间通信代码
make menuconfig
make oldconfig
make xxx_defconfig在/arch目录下找,找到单板相似的架
构配置xxx_defconfig以其作为默认配置
make
编译完成后:在arch/xx/boot下生成内核镜像
CONFIG_IKCONFIG_PROC:内核的配置文件会存放在/proc/config.gz中
General setup --->
<*>Kernel.config support
[*]Enable access to .config through /proc/config.gz
ZTE
zcat/proc/config.gz>.config获取内核使用的配置文件
编译内核模块:make modules
make -C $(KDIR) M=$(PWD)modules
-C选项:此选项指定内核源码的位置,make在编译时将会进入内核源码
目录,执行编译,编译完成时返回
M=$(PWD):需要编译的模块源文件地址
modules将源文件编译并生成内核模块
modules install:安装这个外部模块
clean:卸载源文件目录下编译过程生成的文件

内核开发特点

  • 内核编程时既不能访问C库也不能访问标准C头文件

  • 内核编程时使用GNUC

  • 内核编程时缺乏像用户空间那样的内存保护机制

  • 内核编程时难以执行浮点运算

  • 内核只有一个很小的定长堆栈

  • 由于内核支持异步中断、抢占和SMP,因此必须时刻注意同步和并发

  • 考虑可移植性

常用网站

http://kernel.org
http://kernelnewbies.org
http://lwn.net
https://dev.zte.com.cn/(中兴开发者社区)
https://elixir.bootlin.com/linux/latest/source
http://www.wowotech.net/
https://www.kernel.org/doc/html/latest/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

haven-852

你的鼓励是对我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值