【Linux上分之路】第一篇:Linux简介、发行版、开源协议

冲

Linux

Linux是一套开放源代码程序操作系统软件,Linux提供了一个完整操作系统当中最底层硬件控制与资源管理的完整架构,这个架构是沿袭UNIX来的,UNIX系统也是Linux系统的前身

Linux核心最初是由李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学时编写的,之后并开放了源代码,现在普遍使用的Linux,是由Linux爱好者与托瓦兹共同开发完成的

Linux企鹅标志

Linux的优点

  • 大量可用软件及免费软件
  • 良好的可移植性
  • 优良的稳定性和安全性
  • 支持几乎所有的网络协议和编程语言

Linux分类

Linux发行版本可以根据维护组织不同分为两类:

  • 商业公司维护的发行版本,代表为RedHat
  • 社区组织维护的发行版本,代表为Debian

Linux发行版本可以根据软件管理方式的不同分为两类:

  • 以RPM软件管理为主的RHEL、Fedora、SUSE、CentOS
  • 以dpkg软件管理为主的debian、Ubuntu

Linux发行版本

李纳斯·托瓦兹开发的Linux只是一个内核,内核指的是提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,只是一个操作系统的核心,并不能构成一套完整的操作系统

一些组织和厂商将Linux内核与各种软件和文档包包装起来,并提系统安装界面和系统配置、设定和管理工具,这就是Linux发行版本

RedHat Linux

LinuxRedHat发行版

Red Hat是目前最资深的Linux产商,RedHat公司的主要产品有RHEL(RedHat Enterprise Linux,收费版本)和CentOS(RHEL的社区克隆版本,免费版本)、Fedora Core(由RedHat桌面版发展而来,免费版本)

Ubuntu Linux

LinuxUbuntu发行版

Ubuntu基于著名的Debian Linux发展而来,界面友好,是免费版本

Linux系统结构

UNIX/Linux 系统可以粗糙地抽象为 3 个层次(所谓粗糙,就是不够细致、精准,但是便于初学者抓住重点理解),如图 3 所示。底层是 UNIX/Linux 操作系统,即系统内核(Kernel);中间层是 Shell 层,即命令解释层;高层则是应用层
Linux系统结构

1、内核层

内核层是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境

2、Shell层

Shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作

3、应用层

应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window

Linux主要应用的领域

  • 网站服务器
  • 电影工业
  • 嵌入式应用

开源软件

Linux是一款开源软件,Linux本身就是开源精神的受益者

开源软件就是把软件程序与源代码文件一起打包提供给用户,用户既可以不受限制的使用该软件的全部功能,也可以根据自己的需求修改源代码,甚至把由此衍生出的产品再次发布

开源软件的优点

低风险:开源软件的源代码参与维护的人越多,软件的漏洞和风险就会越低

高品质:开源软件通常是由开源社区来研发和维护的,参与编写和维护的人越多,软件越能经受检查

典型的开源软件

Linux开源软件

开源协议

开源协议规定了在使用开源软件的权利和义务,虽然开源协议没有法律效力,但是涉及软件版权纠纷时,开源协议是很重要的证据

1、GNU GPL(GNU General Public License,GNU通用公共许可证)

LinuxGNU开源协议

只要软件中包含了遵循GPL协议的产品和代码,该软件就必须遵循GPL许可协议,也就是开源免费

GPL开源协议的主要特点:复制自由、传播自由、收费传播、修改自由

  1. 复制自由:允许把软件复制到任何人的电脑中,并且不复制复制的数量
  2. 传播自由:允许软件以各种形式进行传播
  3. 收费传播:允许在各种媒介上出售软件,但前提示必须让买家知道该软件是可以免费获取的
  4. 修改软件:允许开发人员增加或删除软件的功能,但是软件修改后必须遵循GPL许可协议授权

2、BSD(Berkeley Software Distribution,伯克利软件发布版)协议

LinuxBSD协议

BSD协议允许用户使用、修改和重新发布遵循该许可的软件,并可以将软件作为商业软件发布和销售,但得满足三个前提条件:

  1. 如果再发布的软件包含源代码,则源代码必须遵循BSD许可协议
  2. 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了 BSD 协
  3. 不允许用原始软件的名字、作者名字或机构名称进行市场推广

3、Apache许可证协议

LinuxApache协议

Apache 和 BSD 类似,都适用于商业软件。Apache 协议在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由

程序开发人员在开发遵循该协议的软件时,要严格遵守下面的四个条件:

  1. 该软件及其衍生品必须继续使用 Apache 许可协议
  2. 如果修改了程序源代码,需要在文档中进行声明
  3. 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息
  4. 如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他许可协议

4、MIT协议

目前限制最少的开源许可协议之一(比 BSD 和 Apache 的限制都少),只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用

5、GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证)

LGPL 是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议

LGPL 允许商业软件通过类库引用(link)的方式使用 LGPL 类库,而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售

选择开源协议

Linux开源协议的选择

总结

Linux本身就是个最普通的操作系统,常见的:Linux发行版有"商业、分类"分类法,或者通过软件管理分为RPM、DPKG,以及保护软件权益的各种开源协议和开源协议的选择

赶紧学习起来吧!我是一个正在努力找回自我的人,希望能和一起学习的人成长,有错误的地方请各位大佬帮忙指正,如果觉得有帮助就点个赞当作对我的一个小肯定❤,peace&love

标题“51单片机通过MPU6050-DMP获取姿态角例程”解析 “51单片机通过MPU6050-DMP获取姿态角例程”是一个基于51系列单片机(一种常见的8位微控制器)的程序示例,用于读取MPU6050传感器的数据,并通过其内置的数字运动处理器(DMP)计算设备的姿态角(如倾斜角度、旋转角度等)。MPU6050是一款集成三轴加速度计三轴陀螺仪的六自由度传感器,广泛应用于运动控制姿态检测领域。该例程利用MPU6050的DMP功能,由DMP处理复杂的运动学算法,例如姿态融合,将加速度计陀螺仪的数据进行整合,从而提供稳定且实时的姿态估计,减轻主控MCU的计算负担。最终,姿态角数据通过LCD1602显示屏以字符形式可视化展示,为用户提供直观的反馈。 从标签“51单片机 6050”可知,该项目主要涉及51单片机MPU6050传感器这两个关键硬件组件。51单片机基于8051内核,因编程简单、成本低而被广泛应用;MPU6050作为惯性测量单元(IMU),可测量设备的线性角速度。文件名“51-DMP-NET”可能表示这是一个与51单片机及DMP相关的网络资源或代码库,其中可能包含C语言等适合51单片机的编程语言的源代码、配置文件、用户手册、示例程序,以及可能的调试工具或IDE项目文件。 实现该项目需以下步骤:首先是硬件连接,将51单片机与MPU6050通过I2C接口正确连接,同时将LCD1602连接到51单片机的串行数据线控制线上;接着是初始化设置,配置51单片机的I/O端口,初始化I2C通信协议,设置MPU6050的工作模式数据输出速率;然后是DMP配置,启用MPU6050的DMP功能,加载预编译的DMP固件,并设置DMP输出数据的中断;之后是数据读取,通过中断服务程序从DMP接收姿态角数据,数据通常以四元数或欧拉角形式呈现;再接着是数据显示,将姿态角数据转换为可读的度数格
MathorCup高校数学建模挑战赛是一项旨在提升学生数学应用、创新团队协作能力的年度竞赛。参赛团队需在规定时间内解决实际问题,运用数学建模方法进行分析并提出解决方案。2021年第十一届比赛的D题就是一个典型例子。 MATLAB是解决这类问题的常用工具。它是一款强大的数值计算编程软件,广泛应用于数学建模、数据分析科学计算。MATLAB拥有丰富的函数库,涵盖线性代数、统计分析、优化算法、信号处理等多种数学操作,方便参赛者构建模型实现算法。 在提供的文件列表中,有几个关键文件: d题论文(1).docx:这可能是参赛队伍对D题的解答报告,详细记录了他们对问题的理解、建模过程、求解方法结果分析。 D_1.m、ratio.m、importfile.m、Untitled.m、changf.m、pailiezuhe.m、huitu.m:这些是MATLAB源代码文件,每个文件可能对应一个特定的计算步骤或功能。例如: D_1.m 可能是主要的建模代码; ratio.m 可能用于计算某种比例或比率; importfile.m 可能用于导入数据; Untitled.m 可能是未命名的脚本,包含临时或测试代码; changf.m 可能涉及函数变换; pailiezuhe.m 可能与矩阵的排列组合相关; huitu.m 可能用于绘制回路图或流程图。 matlab111.mat:这是一个MATLAB数据文件,存储了变量或矩阵等数据,可能用于后续计算或分析。 D-date.mat:这个文件可能包含与D题相关的特定日期数据,或是模拟过程中用到的时间序列数据。 从这些文件可以推测,参赛队伍可能利用MATLAB完成了数据预处理、模型构建、数值模拟结果可视化等一系列工作。然而,具体的建模细节解决方案需要查看解压后的文件内容才能深入了解。 在数学建模过程中,团队需深入理解问题本质,选择合适的数学模
以下是关于三种绘制云图或等高线图算法的介绍: 一、点距离反比插值算法 该算法的核心思想是基于已知数据点的值,计算未知点的值。它认为未知点的值与周围已知点的值相关,且这种关系与距离呈反比。即距离未知点越近的已知点,对未知点值的影响越大。具体来说,先确定未知点周围若干个已知数据点,计算这些已知点到未知点的距离,然后根据距离的倒数对已知点的值进行加权求,最终得到未知点的值。这种方法简单直观,适用于数据点分布相对均匀的情况,能较好地反映数据在空间上的变化趋势。 二、双线性插值算法 这种算法主要用于处理二维数据的插值问题。它首先将数据点所在的区域划分为一个个小的矩形单元。当需要计算某个未知点的值时,先找到该点所在的矩形单元,然后利用矩形单元四个顶点的已知值进行插值计算。具体过程是先在矩形单元的一对对边上分别进行线性插值,得到两个中间值,再对这两个中间值进行线性插值,最终得到未知点的值。双线性插值能够较为平滑地过渡数据值,特别适合处理图像缩放、地理数据等二维场景中的插值问题,能有效避免插值结果出现明显的突变。 三、面距离反比 + 双线性插值算法 这是一种结合了面距离反比双线性插值两种方法的算法。它既考虑了数据点所在平面区域对未知点值的影响,又利用了双线性插值的平滑特性。在计算未知点的值时,先根据面距离反比的思想,确定与未知点所在平面区域相关的已知数据点集合,这些点对该平面区域的值有较大影响。然后在这些已知点构成的区域内,采用双线性插值的方法进行进一步的插值计算。这种方法综合了两种算法的优点,既能够较好地反映数据在空间上的整体分布情况,又能保证插值结果的平滑性,适用于对插值精度数据平滑性要求较高的复杂场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值