Linux入门知识

news2024/11/25 20:19:25


文章目录

  • 一、Linux发展历程
    • 1.1、Linux前身-Unix
    • 1.2、Linux 诞生
  • 二、Linux系统特点
  • 三、Linux 分支
  • 四、Linux系统架构
    • 4.1、系统调用
    • 4.2、Linux shell
    • 4.3、Linux文件系统
    • 4.4、Linux内核


  团队博客: 汽车电子社区

一、Linux发展历程

1.1、Linux前身-Unix

  1968年Multics 项目
  MIT|、Bell 实验室、美国通用电气有限公司走到了一起,致力于开发Multics项目。到后期由于开发进度不是很好,MIT 和Bell实验室相继离开这个项目的开发,最终导致项目搁浅。

  1970年 Unix诞生
  当时在开发Multics项目的时候,实验室中有一个开发成员Ken Thompson(汤姆森.肯 UNIX之父)开发了一 款游戏 (ravel space:遨游太空),因为两个实验室相继离开项目开发,导致这名开发人员没法玩游戏。后来他提议组织人员重新在Multics项目之上重新的开发,也就出现了1970 年的Unix。当时Unix操作系统是使用的汇编语言(机器语言)开发的。

  1973年用C语言重写 Unix

  因为汇编语言有一一个最大的局限性,对于计算机硬件过于依赖。导致移植性不好,所以后斯在1973年使用了C语言对其进行重新开发。

  1975年Bell 实验室允许大学使用Unix

  1975年Bell 实验室允许大学使用Unix操作系统用于教学作用,而不允许用于商业用途。

  1984年Richard Stallman(斯特曼)发起了开发自由软件运动,成立了自由软件基金会(Free Software Foundation)和GNU(GNU’s not Unix)项目,其主要目标是建立一套完整自由的可移植的类Unix操作系统。GNU的几个重要的系统:

    1、Emacs 代码编辑器工具

    2、GNU C(gcc)

    3、GNU C Library (glibc)

    4、bash shell

  1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明;

  GPL(General Public License) 一个开源产品的协议,意思为在当前开源产品的基础上二次开发必须公开源码。

1.2、Linux 诞生

  Linux的开发作者,Linux之父, linus(李纳斯. 托瓦兹)。

  李纳斯当时学校使用的就是Unix 操作系统,他使用bash、gcc等工具写了一个内核程序,可以在386机器上运行,放到了学校为学生开放的网站上,原先他把文件命名写成了Linus’s Unix,后期网络管理发现之后觉得这个名字不好,自己手动的将名字改成Linux.随后其他同学下载之后发现这个版本还是挺好用的,随后都把自己代码贡献给李纳斯。从此开始Linux的发展之路。

    1991年0.0.1版本
    1992年0.0.2 版本
    1994年1.0 版本
    2003年2.6 版本

  上述提及的版本号并不是分支版本,而是指linux的内核版本。

二、Linux系统特点

  1、免费且开源

  2、完全兼容POSIX 1.0标准

  3、多用户、多任务

  4、拥有良好的界面

  5、支持多种平台

  6、Windows属于:单用户、多任务,Linux属于:多用户、多任务。

三、Linux 分支

  现在比较有名的ubuntu、debian、 centos(Community Enterprise Operating System)、 redhat、 suse 等等 。

    1、Debian:Debian运行起来极其稳定,这使得它非常适合用于服务器。

    2、Gentoo:与Debian一样,Gentoo这款操作系统也包含数量众多的软件包。Gentoo并非以预编译的形式出现,而是每次需要针对每个系统进行编译。

    3、Ubuntu:Ubuntu是Debian的一款衍生版,侧重于它在这个市场的应用,在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。

    4、Damn Vulnerable Linux:易受攻击的Linux,根本不是一般意义上的优秀的Linux发行版,它的目的在于借机训练Linux管理员。

    5、红帽企业级Linux:这是第一款面向商业市场的Linux发行版。它有服务器版本,支持众多处理器架构。

    6、CentOS:CentOS是一款企业级Linux发行版,它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。

    7、Fedora:Fedora是红帽公司的一个测试平台,产品在成为企业级发行版之前,在该平台上进行开发和测试。Fedora同是一款非常好的发行版,有庞大的用户论坛,软件库中还有为数不少的软件包。Fedora同样使用YUM来管理软件包。

    8、Kali Linux:Kali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。

    9、Arch:Arch是一款采用滚动发行方式的操作系统,只要安装一次就够了,每当发行了某个新版本,就可以升级发行版,无需重新安装。Pacman是Arch Linux的软件包管理器。Arch Linux既支持X86处理器架构,又支持X86_64架构,安装程序可以从光盘或U盘来运行。

    10、OpenSuse:OpenSuse这款Linux发行版是免费的,并不供商业用途使用,仍然供个人使用。OpenSuse的真正竞争对手是红帽企业级Linux。它使用Yast来管理软件包。有了Yast,使用和管理服务器应用程序就非常容易。

四、Linux系统架构

在这里插入图片描述

  Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

  内核的接口是一个软件层,称之为系统调用(如上图中的阴影部分),通用库函数是建立在系统调用接口之上,应用程序可以自由的使用这两者。Shell是一种特殊的应用程序,它提供接口来运行其他的应用程序。广义上来说,操作系统是内核和所有其他的软件的集合,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性。其他的软件包括系统工具,应用程序,shells,通用函数库等等。

4.1、系统调用

  为了方便调用内核,Linux将内核的功能接口制作成系统调用(system call)。系统调用看起来就像C语言的函数。你可以在程序中直接调用。Linux系统有两百多个这样的系统调用。用户不需要了解内核的复杂结构,就可以使用内核。系统调用是操作系统的最小功能单位。一个操作系统,以及基于操作系统的应用,都不可能实现超越系统调用的功能。

  在命令行中输入 m a n 2 s y s c a l l s 可以查看所有的系统调用。你也可以通过 m a n 2 r e a d 来查看系统调用。在这两个命令中的 2 都表示我们要在 2 类(系统调用类)中查询(具体各个类是什么可以通过 man 2 syscalls可以查看所有的系统调用。你也可以通过man 2 read来查看系统调用。在这两个命令中的2都表示我们要在2类(系统调用类)中查询 (具体各个类是什么可以通过 man2syscalls可以查看所有的系统调用。你也可以通过man2read来查看系统调用。在这两个命令中的2都表示我们要在2类(系统调用类)中查询(具体各个类是什么可以通过man man看到)

  系统调用提供的功能非常基础,所以使用起来很麻烦。一个简单的给变量分配内存空间的操作,就需要动用多个系统调用。Linux定义一些库函数(library routine)来将系统调用组合成某些常用的功能。上面的分配内存的操作,可以定义成一个库函数(像malloc()这样的函数)。再比如说,在读取文件的时候,系统调用要求我们设置好所需要的缓冲。我可以使用Standard IO库中的读取函数。这个读取函数既负责设置缓冲,又负责使用读取的系统调用函数。使用库函数对于机器来说并没有效率上的优势,但可以把程序员从细节中解救出来。库函数就像是汉字的偏旁部首,它由笔画组成,但使用偏旁部首更容易组成字,比如“铁”。当然,你也完全可以不使用库函数,而直接调用系统函数,就像“人”字一样,不用偏旁部首。

4.2、Linux shell

  shell是一个特殊的应用。很多用户将它称为命令行 。shell是一个命令解释器(interpreter),当我们输入“ls -l”的时候,它将此字符串解释为

    1、在默认路径找到该文件(/bin/ls),

    2、执行该文件,并附带参数“-l”。

  Shell接着通过系统调用指挥内核,实现具体的重定向或者管道。在没有图形界面之前,shell充当了用户的界面,当用户要运行某些应用时,通过shell输入命令,来运行程序。shell是可编程的,它可以执行符合shell语法的文本。这样的文本叫做shell脚本(script)。可以在架构图中看到,shell下通系统调用,上通各种应用,同时还有许多自身的小工具可以使用。Shell脚本可以在寥寥数行中,实现复杂的功能。

  UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。而shell充当了这些小功能之间的“胶水”,让不同程序能够以一个清晰的接口(文本流)协同工作,从而增强各个程序的功能。这也是Linux老鸟鼓励新手多用shell,少用图形化界面的原因之一。

  目前主要有下列版本的shell。

    1、Bourne Shell:是贝尔实验室开发的。

    2、BASH:是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。

    3、Korn Shell:是对Bourne SHell的发展,在大部分内容上与Bourne Shell兼容。

    4、C Shell:是SUN公司Shell的BSD版本。

4.3、Linux文件系统

  Linux 系统能够支持的文件系统非常多,除 Linux 默认文件系统 Ext2、Ext3 和 Ext4 之外,还能支持 fat16、fat32、NTFS(需要重新编译内核)等 Windows 文件系统。也就是说,Linux 可以通过挂载的方式使用 Windows 文件系统中的数据。Linux 所能够支持的文件系统在 “/usr/src/kemels/当前系统版本/fs” 目录中(需要在安装时选择),该目录中的每个子目录都是一个可以识别的文件系统。

4.4、Linux内核

  Linux内核是世界上最大的开源项目之一,内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。

  内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图:
在这里插入图片描述在这里插入图片描述

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

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

相关文章

【Excel】如何画不同时序交叉的百分比堆积柱状图

这里写自定义目录标题 1 将两表交叉合并为一个表1.1 步骤一:在两独立表的工作天数和工资列下面按1-n顺次标号。1.2 步骤二:选中两表需要合并的部分,调出自定义排序1.3 步骤三:选项 ——> 按行排序 (选完后点确定&am…

LV.12 D17 中断控制器 学习笔记

一、中断控制器 在处理IRQ的时候,会将CPSR写入IRQ_SPSR,然后将CPU切换为IRQ模式,把状态改成ARM状态,把I位写成1禁止全部的IRQ,所以中断这样是我们不想要的。4412是一个四核的CPU,在发送中断前要确定发送给哪…

【UDS基础】简单介绍“统一诊断服务“

1. 前言 我们将在这个实用教程中介绍UDS的基础知识,重点关注在CAN总线上的UDS(UDSonCAN)和CAN诊断(DoCAN)。此外,我们还会介绍ISO-TP协议,并解释UDS、OBD2、WWH-OBD和OBDonUDS之间的差异。 最后,我们将解释如何请求、记录和解码UDS消息,并提供一些实际示例,例如记录…

libevent

libevent 库概念和特点 开源。精简。跨平台(Windows、Linux、maxos、unix)。专注于网络通信(不一定非用在网络当中,比如下面的读写管道)。 libevent特性:基于"事件",面向“文件描述符…

C++算法:第N位数的原理、源码及测试用例

本文涉及知识点 简单的数学知识。 本博文对应源码,审核比较慢,请耐心等待:https://download.csdn.net/download/he_zhidan/88504919 本博文在CSDN 学院有对应课程。 题目 给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5…

编译原理(1)----LL(1)文法(首符号集,后跟符号集,选择符号集)

一.首符号集(First()) 技巧:找最左边可能出现的终结符 例: 1.First(E) E->T,最左边为T,又因为T->F,最左边为F,F->(E)|i,则最左边为{(,i } 2.First(T):只需要看符号串最左…

Mac VsCode g++编译报错:不支持C++11语法解决

编译运行时报错: [Running] cd “/Users/yiran/Documents/vs_projects/c/” && g 1116.cpp -o 1116 && "/Users/yiran/Documents/vs_projects/c/"1116 1116.cpp:28:22: warning: range-based for loop is a C11 extension [-Wc11-extensi…

pda条码二维码扫描数据采集安卓手持终端扫码热敏标签打印一体机

HT800新一代移动物联终端是深圳联强优创信息科技有限公司自主研发的基于Android11操作系统的高性能、高可靠的工业级手持数据终端,能与其它设备进行无线通讯,提供良好的操作界面,支持条码扫描、RFID读写(NFC)、GPS定位…

ch579串口编程笔记

“CH579SFR.h”库文件,关于串口中断部分 /* UART interrupt identification values for IIR bits 3:0 */ #define UART_II_SLV_ADDR 0x0E // RO, UART0 slave address match #define UART_II_LINE_STAT 0x06 // R…

云服务器哪家便宜靠谱 | 简单了解亚马逊云科技发展史

云服务器哪家便宜又靠谱呢?为什么说亚马逊云科技在这道题答案的第一行,一篇故事告诉你。 1994年,杰夫贝索斯在西雅图创建了亚马逊,最初只是一个在线书店。 1997年,亚马逊在纳斯达克交易所上市,成为一家公…

基于 Odoo + Python 的网站快速开发指南

基于 Odoo Python 的网站快速开发指南 下载根据本指南开发的主题模块源码 Odoo 网站生成器是一个灵活的工具,可以轻松构建与 Odoo 应用完全集成的网站。使用其提供的主题选项 (options) 和构建块 (blocks) 很容易定制网站。然而,你还可以更进一步深度定…

JavaEE进阶3

传递数组: 当我们请求中,同一个参数有多个时,浏览器就会帮我们封装成一个数组 用逗号进行分割也是可以的(有的浏览器不能直接使用逗号,需要我们去转码) 传递集合: HTTP 状态码(不是后端自定义的) 2XX:成功 3XX:重定向 4XX:客户端错误 5XX:服务器错误 业务状态码:HTTP响应…

第十章 Python 自定义模块及导入方法

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

Cookie、Session、Token、JWT 一篇就够了

什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时,就打卡成功&a…

git工作流(待续)

一、git git是分布式管理系统和集中式的区别在于每个人具有的本地份数不同,集中式只有一份 分布式 主要是 协同工作 gitlab github 等是git仓库的一个托管平台 二、git安装、初始化 基础配置 第一次需要对身份进行说明 git config --global user.name "xx&…

阿里云安全恶意程序检测(速通二)

阿里云安全恶意程序检测 高阶数据探索变量分析连续数值变量与连续数值变量单个类别变量与连续数值变量两个类别变量与连续数值变量两个变量线性关系探索查看多个双变量关系的技巧 高阶数据探索多变量交叉探索 高阶数据探索 变量分析 连续数值变量与连续数值变量 分析连续数值…

SQL第三次上机作业

1.查询与王利就读同一专业学生的借书证号和姓名 SELECT Lno,Rname FROM Reader WHERE Dept(SELECT DeptFROM ReaderWHERE Rname王利)2.查询比希望出版社出版的所有图书价格都高的图书信息 SELECT * FROM Book WHERE Price>(SELECT MAX(Price)FROM BookWHERE Press希望出版…

【C++入门 四】学习C++内联函数 | auto关键字 | 基于范围的for循环(C++11) | 指针空值nullptr(C++11)

C 入门 四 1.内联函数1.1前言(引出内联函数)①写一个Add函数的宏定义②宏的缺点③C对宏的态度 1.2内联函数①概念②内联函数特性 2.auto关键字(C11)① 类型别名思考② auto简介③ auto的使用细则④ auto不能推导的场景 3. 基于范围的for循环(C11)① 范围…

【计算机网络笔记】TCP的拥塞控制机制

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

3.27每日一题(常系数线性非齐次方程的特解)

常系数非齐次线性方程的特解如何假设(两种)形式: 1、题目中 e 的 x 次幂以及 1,都是第一种:1可以看成为e的0次幂 注:题目给的多项式是特殊的形式,我们要设为一般的形式的多项式 2、题目中sin…