Linux基础知识(一、什么是Linux)

devtools/2024/10/21 10:01:26/

一、Linux之父——林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)

        Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,最初被发布的LINUX0.02版本因其高质量的代码与开放源代码,迅速引起了一大批黑客的加入,而今虽然有数百计的 Linux发布版,但都依然统一使用Linus Torvalds.开发/维护的系统内核,Linux是具有类似Unix的程序界面与操作方法且继承了其稳定性(通常运行几年都不会宕机)。

二、什么是Linux

Linux 可大致划分为以下四部分:
1、Linux 内核
2、GNU 工具
3、图形化桌面环境
4、应用软件

 1、Linux内核

        Linux系统的核心是 内核 。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,
并根据需要执行软件。
内核主要负责以下四种功能:

1.1、系统内存管理

        操作系统内核的主要功能之一就是内存管理。内核不仅管理服务器上的可用物理内存,还可
以创建和管理虚拟内存(即实际并不存在的内存)。
内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为 交换空间 swap space)。内核不
断地在交换空间和实际的物理内存之间反复交换虚拟内存中的内容。这使得系统以为它拥有比物
理内存更多的可用内存。

        内存存储单元按组划分成很多块,这些块称作页面 page )。内核将每个内存页面放在物理
内存或交换空间。然后,内核会维护一个内存页面表,指明哪些页面位于物理内存内,哪些页面
被换到了磁盘上。
        内核会记录哪些内存页面正在使用中,并自动把一段时间未访问的内存页面复制到交换空间
区域(称为 换出 swapping out )——即使还有可用内存。当程序要访问一个已被换出的内存页
面时,内核必须从物理内存换出另外一个内存页面给它让出空间,然后从交换空间换入请求的内
存页面。显然,这个过程要花费时间,拖慢运行中的进程。只要 Linux 系统在运行,为运行中的
程序换出内存页面的过程就不会停歇。

1.2、软件程序管理

        Linux操作系统将运行中的程序称为 进程 。进程可以在前台运行,将输出显示在屏幕上,也
可以在后台运行,隐藏到幕后。内核控制着 Linux 系统如何管理运行在系统上的所有进程。
内核创建了第一个进程(称为 init 进程 )来启动系统上所有其他进程。当内核启动时,它会
init 进程加载到虚拟内存中。内核在启动任何其他进程时,都会在虚拟内存中给新进程分配一
块专有区域来存储该进程用到的数据和代码。
一些 Linux 发行版使用一个表来管理在系统开机时要自动启动的进程。在 Linux 系统上,这个
表通常位于专门文件 /etc/inittab 中。
        Linux操作系统的 init 系统采用了运行级。运行级决定了 init 进程运行 /etc/inittab 文件或
/etc/rcX.d 目录中定义好的某些特定类型的进程。 Linux 操作系统有 5 个启动运行级。
运行级为 1 时,只启动基本的系统进程以及一个控制台终端进程。我们称之为 单用户 模式。
单用户模式通常用来在系统有问题时进行紧急的文件系统维护。显然,在这种模式下,仅有一个
人(通常是系统管理员)能登录到系统上操作数据。
        标准的启动运行级是3 。在这个运行级上,大多数应用软件,比如网络支持程序,都会启动。
另一个 Linux 中常见的运行级是 5 。在这个运行级上系统会启动图形化的 X Window 系统,允许用
户通过图形化桌面窗口登录系统。
        Linux系统可以通过调整启动运行级来控制整个系统的功能。通过将运行级从 3 调整成 5 ,系
统就可以从基于控制台的系统变成更先进的图形化 X Window 系统。

1.3、硬件设备管理

        内核的另一职责是管理硬件设备。任何Linux 系统需要与之通信的设备,都需要在内核代码
中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之
间交换数据。在 Linux 内核中有两种方法用于插入设备驱动代码:
①编译进内核的设备驱动代码
可插入内核的设备驱动模块
        以前,插入设备驱动代码的唯一途径是重新编译内核。每次给系统添加新设备,都要重新编
译一遍内核代码。随着 Linux 内核支持的硬件设备越来越多,这个过程变得越来越低效。不过好
Linux 开发人员设计出了一种更好的将驱动代码插入运行中的内核的方法。
开发人员提出了内核模块的概念。它允许将驱动代码插入到运行中的内核而无需重新编译内
核。同时,当设备不再使用时也可将内核模块从内核中移走。这种方式极大地简化和扩展了硬件
设备在 Linux 上的使用。
Linux 系统将硬件设备当成特殊的文件,称为 设备文件 。设备文件有 3 种分类:
1、字符型设备文件:
        字符型设备文件是指处理数据时每次只能处理一个字符的设备。大多数类型的调制解调器和 终端都是作为字符型设备文件创建的。
2、块设备文件:
        块设备文件是指处理数据时每次能处理大块数据的设备, 比如硬盘。
3、 网络设备文件:
        网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设
备。这个回环设备允许 Linux 系统使用常见的网络编程协议同自身通信。

1.4、文件系统管理

        不同于其他一些操作系统,Linux 内核支持通过不同类型的文件系统从硬盘中读写数据。除
了自有的诸多文件系统外, Linux 还支持从其他操作系统(比如 Microsoft Windows )采用的文件
系统中读写数据。内核必须在编译时就加入对所有可能用到的文件系统的支持。表 1-1 列出了
Linux 系统用来读写数据的标准文件系统。

2.核心GNU工具

        GNU项目的主旨在于为 Unix 系统管理员设计出一套类似于 Unix 的环境。这个目标促使该项目
移植了很多常见的 Unix 系统命令行工具。供 Linux 系统使用的这组核心工具被称为 coreutils core
utilities)软件包。GNU coreutils软件包由三部分构成:用以处理文件的工具、用以操作文本的工具、用以管理进程的工具。
GNU/Linux shell是一种特殊的交互式工具。它为用户提供了启动程序、管理文件系统中的文
件以及运行在 Linux 系统上的进程的途径。 shell 的核心是命令行提示符。命令行提示符是 shell 负责
交互的部分。它允许你输入文本命令,然后解释命令,并在内核中执行。
        shell包含了一组内部命令,用这些命令可以完成诸如复制文件、移动文件、重命名文件、显
示和终止系统中正运行的程序等操作。 shell 也允许你在命令行提示符中输入程序的名称,它会将
程序名传递给内核以启动它。
        你也可以将多个shell 命令放入文件中作为程序执行。这些文件被称作 shell 脚本 。你在命令行
上执行的任何命令都可放进一个 shell 脚本中作为一组命令执行。这为创建那种需要把几个命令放
在一起来工作的工具提供了便利。

3.Linux 桌面环境

        在Linux 的早期( 20 世纪 90 年代初期),能用的只有一个简单的 Linux 操作系统文本界面。这
个文本界面允许系统管理员运行程序,控制程序的执行,以及在系统中移动文件。
        完成工作的方式不止一种,Linux 一直以来都以此而闻名。在图形化桌面上更是如此。 Linux
有各种图形化桌面可供选择。常见桌面有如下几种
1. X Window 系统
2. KDE 桌面
3. GNOME 桌面
4. Unity 桌面
5. 其他桌面

http://www.ppmy.cn/devtools/100722.html

相关文章

小琳AI课堂:使用ChatGPT API搭建系统(一)

大家好,这里是小琳AI课堂。今天我们来聊聊提示链的构建,这是一个非常有趣且实用的技术话题。提示链,简单来说,就是一系列逻辑上相互关联的提示,用于指导大型语言模型(如ChatGPT API)如何处理复杂…

服务器主动推送的方法

目录 1.长轮询(Long Polling)2.WebSockets3.Server-Sent Events(SSE)4.HTTP2 Server Push 服务器如何主动推送数据 在传统的网络通信中,客户端(如浏览器)通常需要通过向服务器发起请求来获取数据…

使用ddns-go实现自动配置IPv6的DDNS

正文共:888 字 17 图,预估阅读时间:1 分钟 前面说到通过PPPoE拨号获取到的IPv6地址没有发生变化(企业路由器配置IPv6家用宽带的PPPoE拨号示例),结果说完就打脸了。中间家里停了一次电,路由器重新…

【网络基础】DNS协议详解:从背景到解析过程及`dig`工具的使用

文章目录 DNS 协议① 前言 - 背景② 域名③ DNS解析过程④ Linux下用dig工具 分析DNS过程⑤ 浏览器中输入URL后,会有哪些过程 DNS 协议 DNS(域名系统,Domain Name System)是互联网的一个核心协议,用于将域名转换为 IP…

@SpringBootTest单元测试中报错:无法自动装配,找不到 ‘XXX‘ 类型的 Bean

一开始照着网上教程讲Springboot原理中的代码来copy写的↓ import com.google.gson.Gson; import com.itheima.pojo.Result; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.cont…

SpringMvc 以配置类的形式代替xml文件

1、配置类 1.1、创建Mvc 项目之后创建 MyWebApplicationInitializer 类 实现接口 WebApplicationInitializer public class MyWebApplicationInitializer implements WebApplicationInitializer {Overridepublic void onStartup(ServletContext servletContext) throws Serv…

外卖霸王餐项目是什么?怎么搭建属于自己的外卖霸王餐小程序 ?

前言: 外卖霸王餐项目是一种结合了优惠促销与推广合作的商业模式,主要针对外卖行业。这个项目的核心是通过提供低于市场价的外卖餐品(通常是半价或者更大折扣)来吸引新用户尝试,并通过用户的口碑传播来增加餐厅的知名…

企业高性能web服务器及其应用服务器TOMCAT详解

一 .Web 服务基础介绍 Web 服务介绍 1.1Apache 经典的 Web 服务端 Apache 起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发 目前经历了两大版本分别是 1.X 和 2.X 其可以通过编译安装实现特定的功能 1.1.1Apache prefork 模型 预派生模式&#xff0c…