Linux 内核简介

news2024/11/16 12:29:38

操作系统简介

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

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

处理机管理

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

存储器管理

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

设备管理

设备分配:按照设备类型和相应的分配算法,将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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Springboot的房屋租赁管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的房屋租赁管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

01 JVM -- JVM 体系结构、HotSpot

1. JVM、HotSpot、 OpenJDK 的区别 JVM (Java Virtual Machine) 是一个虚拟机HotSpot 是 JVM 规范的一个实现。HotSpot 虚拟机通过即时编译 (JIT) 技术将 Java 字节码转换为本地机器码&#xff0c;以提高程序的执行效率。OpenJDK 是一个项目名&#xff0c;它在 HotSpot 的基础…

puzzle(1041)植此青绿、拼图迷宫

目录 植此青绿 简单模式 困难模式 拼图迷宫 核心规则 中级模式具体规则 十字的交叉点 十字的端点、L的交叉点 L的端点 直线、矩形 U的端点 中级模式精选关卡 基本策略 高级模式具体规则 Z形状 T形状 高级模式精选关卡 植此青绿 最强大脑同款项目。 给出7个正…

JavaEE企业级开发中常用的JDK7和JDK8的时间类

JDK7时间类 全世界的时间有一个统一的计算标准 在同一条经线上的时间是一样的 格林威治时间 简称GMT 计算核心 地球自转一天是24小时 太阳直射正好是12小时 但是误差太大 现在用原子钟来代替 用铯原子震动的频率来计算时间&#xff0c;作为世界的标准时间UTC 中国标准时间…

开源版本管理系统的搭建二:SVN部署及使用

作者&#xff1a;私语茶馆 1. Visual SVN Server部署 SVN Server部署包括&#xff1a; 创建版本仓库创建用户 这些部署是通过VisualSVN Server Manager实现的&#xff0c;如下图&#xff1a; VisualSVN Server Manager&#xff08;安装后自带&#xff09; 1.1.SVN 初始化配…

流畅的Python阅读笔记

五一快乐的时光总是飞快了&#xff0c;不知多久没有拿起键盘写文章了&#xff0c;最近公司有Python的需求&#xff0c;想着复习下Python吧&#xff0c;然后就买了本Python的书籍 书名&#xff1a; 《流畅的Python》 下面是整理的一个阅读笔记&#xff0c;大家自行查阅&#xf…

ROS专栏—基于STM32F103的INA219电源数据采集

一、专栏介绍 这篇博客为ROS小车专栏的第一篇&#xff0c;自己想要做一个ROS小车&#xff0c;同时通过CSDN平台记录我的制作过程&#xff0c;为后来者提供一些参考吧&#xff0c;恩我也是从零开始摸索&#xff0c;可能会有很多错误和问题&#xff0c;希望大家多多包涵。 二、…

Python 全栈系列241 GFGo Lite迭代

说明 随着整个算网开发逐渐深入&#xff0c;各个组件、微服务的数量、深度在不断增加。由于算网是个人项目&#xff0c;我一直按照MVP(Minimum Viable Product )的原则在推进。由于最初的时候对架构、算法和业务的理解并没有那么深刻&#xff0c;所以MVP的内容还是在不断变化&…

数据结构十:哈希表

本次将从概念上理解什么是哈希表&#xff0c;理论知识较多&#xff0c;满满干货&#xff0c;这也是面试笔试的一个重点区域。 目录 一、什么是哈希表 1.0 为什么会有哈希表&#xff1f; 1.1 哈希表的基本概念 1.2 基本思想 1.3 举例理解 1.4 存在的问题 1.5 总结 二、…

基于TL431基准电压源的可调恒压恒流源的Multisim电路仿真设计

1、线性电源的工作原理 在我们日常应用里&#xff0c;直流电是从市电或电网中的交流电获取的。例如15V直流电压源、24V直流电压源等等。交流电变为直流电的过程大概分为一下几步&#xff1a; 首先&#xff0c;交流电通过变压器降低其电压幅值。接着&#xff0c;经过整流电路进…

01_SpringBoot简单搭建入门程序

目录 1、先创建一个java项目2、导入依赖3、将Java项目修改为SpringBoot项目4、编写一个测试的Controller5、测试(创建一个*.http的文件)方式1&#xff1a;方式2&#xff1a;可以直接在浏览器访问该地址方式3&#xff1a;使用postman也可以 1、先创建一个java项目 我的项目结构…

智能化工单助力业务运作:亿发解析工单系统的功能与适用场景

在现代企业管理中&#xff0c;工单系统扮演着至关重要的角色。面对市面上众多的工单系统&#xff0c;我们可以根据不同的依据进行分类&#xff0c;以更好地满足企业的需求。 1、按部署方式分类&#xff1a; 按照部署方式可以分为本地化部署工单系统和云端SaaS服务工单系统。 …

步态识别论文(6)GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation

摘要: 视角变化导致步态外观存在显着差异。因此&#xff0c;识别跨视图场景中的步态是非常具有挑战性的。最近的方法要么在进行识别之前将步态从原始视图转换为目标视图&#xff0c;要么通过蛮力学习或解耦学习提取与相机视图无关的步态特征。然而&#xff0c;这些方法有许多约…

【java9】java9新特性之Optional类改进

其实Optional类在Java8中就引入了&#xff0c;用于避免null检查和NullPointerException指针问题。 在Java9中&#xff0c;Optional类得到了进一步的改进&#xff0c;增加了一些新的方法&#xff0c;使其更加灵活和易用。 以下是一些Java9中对Optional类的改进&#xff1a; s…

ssm106学生公寓管理系统的设计与实现+jsp

学生公寓管理系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生公寓管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短…

python数据分析——数据分析的统计推断

数据分析的统计推断 前言一、提出问题二、统计归纳方法三、统计推断四、统计推断步骤4.1.点估计4.2.区间估计4.2.1. 总体方差已知4.2.2总体方差未知 4.3. 假设检验4.4. 假设检验的假设4.5.显著性水平 五、检验统计量六、检验方法七、拒绝域八、假设检验步骤九、重要假设检验方法…

CGAL 网格简化

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 为了提高网格处理的效率,通常需要将过于冗长的3D数据集简化为更简洁而又真实的表示。尽管从几何压缩到逆向工程有许多应用,但简洁地捕捉表面的几何形状仍然是一项乏味的任务。CGAL中则为我们提供了一种通过变分几…

SpringBoot的ProblemDetails

1.RFC 7807 之前的项目如果出现异常&#xff0c;默认跳转到error页面。或者是抛出500 异常。 但是对于前后端分离的项目&#xff0c;Java程序员不负责页面跳转&#xff0c;只需要 把错误信息交给前端程序员处理即可。而RFC 7807规范就是将异常 信息转为JSON格式的数据。这个…

Golang | Leetcode Golang题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; func climbStairs(n int) int {sqrt5 : math.Sqrt(5)pow1 : math.Pow((1sqrt5)/2, float64(n1))pow2 : math.Pow((1-sqrt5)/2, float64(n1))return int(math.Round((pow1 - pow2) / sqrt5)) }

5.Spring Security-web权限方案

设置登录的用户名和密码 1.通过配置文件设置用户名密码 spring:security:user:name: xiankejinpassword: 123456 如果没有以上配置&#xff0c;那么就会在后台生成一个随机密码&#xff0c;用户名固定位user。 2.通过配置类设置用户名密码 Configuration public class Sec…