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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/595037.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

硬件四舍五入模式

文章目录 舍入模式1. 就近舍入2.向0舍入3.远离0舍入4. 向正无穷舍入5. 向负无穷舍入6.向负无穷舍入7. ROUND TO MATH参考资料 舍入模式 为了减小舍入操作对推理结果的精度影响&#xff0c;AI芯片有时会支持多种舍入模型(round mode)供编程人员选择&#xff0c;常见模式如下表&…

websevere服务器从零搭建到上线(二)|Linux上的五种IO模型

文章目录 阻塞 blocking非阻塞 non-blockingIO复用 IO multiplexing信号驱动 signal-driven异步 asynchronous拓展知识 看过上篇文章英国基本能理解本文五张图的内容websevere服务器从零搭建到上线&#xff08;一&#xff09;&#xff5c;阻塞、非阻塞、同步、异步 本文要能够在…

IP地址类型

这些IP地址中有IPv4和IPv6地址,以及一些是链路本地地址(通常用于本地网络中的通信),而另一些则是可以被路由的公共或私有IP地址。 这里是您提供的IP地址的一些简要说明: IPv6 链路本地地址:以fe80:开头的地址是IPv6链路本地地址。这些地址仅用于同一链路(如以太网段或无…

Verilog中求两个数的差值

根据输入信号a,b的大小关系&#xff0c;求解两个数的差值&#xff1a;输入信号a,b为8bit位宽的无符号数。如果a>b&#xff0c;则输出a-b&#xff0c;如果a≤b&#xff0c;则输出b-a。 接口信号图如下&#xff1a; 代码如下&#xff1a; &#xff08;CSDN代码块不支持Veril…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…

数据结构-二叉树-二叉搜索树

一、概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左树上所有节点的值都小于根节点的值。 若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值。 它…

27.leetcode---随机链表的复制(Java版)

题目链接: https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 题目解析: 使用map来解这个题就比较方便了 代码: 测试:

手机异地组网方案?

现代社会&#xff0c;随着信息技术的快速发展&#xff0c;人们之间的通信需求也日益增加。尤其是在异地工作、异地学习、异地旅游等情况下&#xff0c;我们需要实现不同地区间的快速组建局域网&#xff0c;以解决电脑与电脑、设备与设备、电脑与设备之间的信息远程通信问题。本…

深度学习中的注意力机制一(Pytorch 15)

一 简介 灵长类动物的视觉系统接受了大量的感官输入&#xff0c;这些感官输入远远超过了大脑能够完全处理的程度。然而&#xff0c; 并非所有刺激的影响都是相等的。意识的聚集和专注使灵长类动物能够在复杂的视觉环境中将注意力引向感 兴趣的物体&#xff0c;例如猎物和天敌。…

C语言 函数递归

函数递归 一、递归是什么&#xff1f; 递归是学习C语⾔函数绕不开的⼀个话题&#xff0c;那什么是递归呢&#xff1f; 递归其实是⼀种解决问题的⽅法&#xff0c;在C语⾔中&#xff0c;递归就是函数⾃⼰调⽤⾃⼰。 写⼀个史上最简单的C语⾔递归代码&#xff1a; #include <…

量水堰计使用手册:流量监测的关键工具

在水资源管理、环境监测、工业应用中&#xff0c;精确测量流体流量是至关重要的。量水堰计是一种流行且有效的工具&#xff0c;用于监测开放水道中的水流量。本文将详细介绍量水堰计的原理、安装、使用方法及常见问题解决策略&#xff0c;旨在帮助用户更好地理解和运用该设备。…

Python 机器学习 基础 之 构建第一个机器学习应用

Python 机器学习 基础 之 构建第一个机器学习应用 目录 Python 机器学习 基础 之 构建第一个机器学习应用 一、简单介绍 二、第一个机器学习测试应用介绍&#xff1a;鸢尾花分类 三、第一个机器学习测试应用 &#xff1a;前置环境&#xff0c;知识点介绍 jupyter notebo…

案例精选 | 江苏省徐州医药高等职业学校网络流量纵深防护项目

江苏省徐州医药高等职业学校&#xff0c;自1985年建校以来&#xff0c;始终站在医药教育的前沿。作为江苏省药品监督管理局直属的高等职业学校&#xff0c;该校不仅是江苏省医药行业协会的重要成员&#xff0c;还是中国职业技术教育学会医药专业委员会的副主任单位。 学校拥有…

C++:重写和重载

重写&#xff08;Override&#xff09;和重载&#xff08;Overload&#xff09;是面向对象编程中常用的两个概念&#xff0c;它们虽然都涉及到方法的定义&#xff0c;但是在实现和使用上有着不同的特点。 重写&#xff08;Override&#xff09;&#xff1a; 重写是指在子类中重…

Web安全研究(九)

知识星球 首先推荐一下我们的知识星球,以AI与安全结合作为主题,包括AI在安全上的应用和AI本身的安全; 加入星球你将获得: 【Ai4sec】:以数据驱动增强安全水位,涵盖内容包括:恶意软件分析,软件安全,AI安全,数据安全,系统安全,流量分析,防爬,验证码等安全方向。…

linux安装 mysql

环境&#xff1a;centOS8 一、安装 1 安装wget库 sudo yum -y install wget 2. 安装 mysql 换yum源 亲测成功&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 换yum源 1.下载对应版本的repo文件 wget -O CentOS-Base.repo http://mirrors…

今日arXiv最热大模型论文:首个面向AI的python编程框架,提升大模型编程能力新思路

高级编程语言Python有两个受众&#xff1a;一是编译和执行程序的机器&#xff0c;二是阅读、理解和编写程序的人类。机器关注程序的语义操作&#xff0c;而人类更强调代码的可读性。Python在语法中融入了许多以人类为中心的设计元素&#xff0c;以“可读性至上”为设计原则&…

【蓝桥杯备赛国赛】5-5

文章目录 求阶乘双子数 求阶乘 求阶乘 分析k的范围&#xff0c;10的18次方。这个数字很大 想要末尾有0的存在必须要2和5&#xff0c;但是通过分析2的数目应该是远远多于5的&#xff0c;所以只要5的数目够多即可。所以for循环的层次也是10的九次方以上&#xff0c;必然会超时&…

项目|保障房房产管理系统,政务房产解决方案

一、系统概况 保障房管理系统是是为了落实中央关于住房保障的相关政策&#xff0c;实现对低收入家庭住房状况的调查管理、保障计划及落实管理、保障申请及审核管理、保障户和保障房源档案管理等。 针对政府保障房产管理的一站式解决方案&#xff0c;专注于为解决复杂、繁琐的…

python+barcode快速生成条形码(电商测试小工具)

背景 需要测试自助收银机&#xff0c;每次都要在线生成条码&#xff0c;而且生成次数还有限制 需求 满足自定义条形码&#xff0c;可以生成条形码图片 方案 python 3.8以上 barcode 1.0.4 python-barcode 0.15.1 代码 用于生成Code128条形码…