1 Linux 系统简介

目录

[1 linux简介](#1 linux简介)

[1.1 Linux系统介绍](#1.1 Linux系统介绍)

[1.2 Linux 组成结构](#1.2 Linux 组成结构)

[1.2.1 Uboot引导程序](#1.2.1 Uboot引导程序)

[1.2.2 Kernel内核](#1.2.2 Kernel内核)

[1.2.3 文件系统 (rootfs)](#1.2.3 文件系统 (rootfs))

[1.2.4 对比:单片机STM32系统的开发模式](#1.2.4 对比:单片机STM32系统的开发模式)

[1.3 Linux的主要特征](#1.3 Linux的主要特征)

[1.3.1 "一切皆文件"(Everything is a file)](#1.3.1 “一切皆文件”(Everything is a file))

[1.3.2 开源免费、](#1.3.2 开源免费、)

[1.3.3 跨平台支持](#1.3.3 跨平台支持)

[1.3.4 可裁剪与可移植性](#1.3.4 可裁剪与可移植性)

[2 Linux与Windows的区别](#2 Linux与Windows的区别)

[2.1 文件的区别](#2.1 文件的区别)

[2.1.1 Windows文件管理](#2.1.1 Windows文件管理)

[2.1.2 Linux文件管理](#2.1.2 Linux文件管理)

[2.2 目录区别](#2.2 目录区别)

[2.2.1 Windows目录结构](#2.2.1 Windows目录结构)

[2.2.2 Linux目录结构](#2.2.2 Linux目录结构)

[2.2.3 Linux根目录下的文件夹](#2.2.3 Linux根目录下的文件夹)

[2.3 命令识别区别](#2.3 命令识别区别)

[2.3.1 Windows命令识别](#2.3.1 Windows命令识别)

[2.3.2 Linux命令识别](#2.3.2 Linux命令识别)


1 linux简介

1.1 Linux系统介绍

Linux 是一套免费、开源、类Unix操作系统,广泛应用于多用户、多任务、多线程和多CPU的环境。它兼容主流的Unix工具、应用程序及网络协议,具有高稳定性和良好的性能。Linux支持32位及64位硬件,适用于从个人电脑到工业控制系统等各种设备。

作为一个网络操作系统,Linux继承了Unix的核心设计思想,以TCP/IP和UDP协议为基础,特别适合用于网络环境下的高效管理和资源共享。尽管 Linux 内核本身是操作系统的核心,但"Linux"这一术语通常被用来指代整个操作系统环境,包括由 GNU 工程提供的各种工具和数据库,以及 Linux 内核本身。

值得注意的是,Linux 存在许多不同的版本或发行版,这些版本由不同的厂商或开发团队制作,但它们共享相同的 Linux 内核。各个版本在工具和软件包上有所不同,用户可以根据需求选择最合适的发行版。

1.2 Linux 组成结构

Linux操作系统由三大核心部分组成:Uboot引导程序Kernel内核 、和文件系统(rootfs)。每个部分在系统启动、运行及文件管理中扮演着重要角色,同时它们之间相互配合,共同完成操作系统的核心功能。

1.2.1 Uboot引导程序

Uboot是Linux系统的引导程序,它运行在操作系统启动的初期阶段,负责硬件的初始化与系统的启动。Uboot的功能是确保硬件准备就绪,并加载Linux内核到内存中,最后将控制权交给Linux内核。

  • 主要功能

    • 初始化硬件,如CPU、内存、外设等。

    • 加载内核镜像并传递必要的启动参数。

    • 提供一个基本的命令行接口,方便开发者进行系统调试和配置。

1.2.2 Kernel内核

Kernel内核是Linux操作系统的核心,负责管理硬件资源、调度任务、控制文件操作及提供应用程序与硬件交互的接口。内核为系统提供了高效、稳定的资源管理机制,并确保应用程序能够在多任务环境下并行执行。

  • 内核功能

    • 硬件抽象:通过设备驱动将硬件资源抽象成操作系统可管理的资源,应用程序无需直接操控硬件。

    • 任务调度:负责管理多个进程的执行,确保操作系统在多任务环境下稳定运行。

    • 内存管理:包括内存分配、回收、虚拟内存管理等,保证系统稳定性和性能。

    • 文件系统支持:内核提供对文件系统的管理,支持对磁盘上的数据进行创建、删除、读取和修改操作。

  • 驱动程序:Linux内核中的驱动程序负责控制硬件设备(如网络卡、硬盘、显示器等),它们与硬件的交互通过内核进行,应用程序通过系统调用与内核进行通信,而不直接操作硬件。

  • Shell与内核的关系

    • Shell是内核之上的一个命令行解释器,充当了用户与操作系统之间的接口。它提供了一个命令行环境,允许用户直接输入命令并执行各种操作。Shell不仅支持基础的命令执行,还能运行脚本和批处理命令,帮助用户自动化常见操作。

    • Shell的功能

      • 命令执行 :用户输入的命令(如lsmkdir等)通过Shell传递给内核,内核执行相应的操作并返回结果。

      • 脚本支持:Shell允许用户编写脚本,实现自动化任务,如系统配置、安装程序、测试等。

      • 交互式界面:提供一个直观的命令行界面,支持用户与系统进行交互。

1.2.3 文件系统 (rootfs)

文件系统是Linux系统中用于管理存储资源的重要组件。它为文件的存储和访问提供了统一的管理机制,使得系统能够高效、安全地存储和读取数据。

  • 功能

    • 文件管理:创建、删除、读取和写入文件。

    • 目录管理 :组织文件,提供多层次的目录结构,如/home/bin/etc等。

    • 权限控制:确保文件和目录的访问安全,通过权限管理防止未授权的访问。

    • 支持多种文件系统格式:如ext4、XFS、Btrfs等,提供不同的性能和安全保障。

1.2.4 对比:单片机STM32系统的开发模式

单片机STM32系统 的开发中,应用程序和硬件驱动代码是紧密结合的。开发者编写的应用程序通常直接操作硬件寄存器来控制硬件功能,如控制LED灯的亮灭、设置GPIO端口、配置串口通信等。

  • 应用与驱动结合

    • 单片机开发中,应用程序和驱动代码是紧密耦合的。例如,在控制一个LED时,应用程序可能会直接编写GPIO初始化代码和控制LED亮灭的逻辑。

    • 这种模式下,应用程序与硬件间的界限不明确,硬件操作通常是在应用程序代码中直接体现的。

  • 硬件直接操作

    • STM32等单片机应用程序直接通过硬件寄存器操作来进行硬件控制,代码需要为特定硬件配置,如GPIO_Init、UART_Init等。这使得开发过程简洁,但当硬件发生变化时,应用程序也需要修改。

与此相比,Linux系统的内核与驱动程序是完全分离的 。在Linux中,硬件的控制由内核中的驱动程序负责,应用程序并不直接访问硬件 。应用程序通过系统调用与内核进行交互,内核通过驱动程序与硬件通信。

  • 内核与驱动分离

    • Linux内核负责硬件抽象,驱动程序在内核中运行,应用程序通过系统调用与内核交互,而不直接控制硬件。

    • 这种设计使得应用程序的开发更加灵活,应用与硬件解耦,驱动程序和硬件的更改不需要修改应用程序代码。

重点:STM32硬件发生变化时,应用程序需修改;而Linux通过内核驱动抽象硬件,应用程序无需修改。

1.3Linux的主要特征

Linux作为一个开源操作系统,具有多个显著的特征,使其在多个领域中得到广泛应用。以下是Linux系统的主要特征:

1.3.1 "一切皆文件"(Everything is a file)

在Linux系统中,几乎所有的资源(无论是硬件设备、目录、文件、甚至进程等)都可以看作是文件。这一特性源自Unix系统,强调了文件操作的统一性和简洁性。无论是读取硬盘中的文件,还是控制硬件设备,Linux都通过统一的文件接口来实现。

  • 文件操作方式:操作文件的基本方式包括:

    • 打开文件 :使用系统调用(如 open())打开文件。

    • 读写文件 :通过 read()write() 等系统调用进行文件的读取和写入。

    • 文件移位 :可以使用 lseek() 调用调整文件指针位置。

    • 关闭文件 :使用 close() 系统调用关闭文件描述符。

  • 设备文件 :在Linux中,硬件设备如磁盘、串口、网络接口等,都会被映射为文件,位于 /dev 目录下。例如,硬盘驱动器 sda 和串口设备 ttyS0 都是设备文件。通过文件的方式,应用程序能够以统一的接口操作硬件。

1.3.2 开源免费、

  • 开源:Linux操作系统遵循GPL(GNU General Public License)开源协议,意味着任何人都可以查看、修改和分发Linux的源代码。由于这一开放性,开发者可以自由地对Linux进行定制和优化,满足不同的需求。

  • 免费:Linux操作系统本身是免费的,用户可以无需支付许可费用就能使用、修改、甚至商用Linux系统。这一点与一些商业操作系统(如Windows、macOS)形成了鲜明对比。

  • 社区驱动:Linux的开发是由全球开发者社区共同推动的。开源和免费的特性使得Linux系统得以快速发展和创新,得到了大量开发者的支持与贡献。

1.3.3 跨平台支持

Linux的另一个重要特征是其跨平台支持,即Linux能够运行在多种硬件平台上。这使得Linux成为一个非常灵活的操作系统,可以在从个人计算机、嵌入式设备、服务器到超级计算机等各种设备上运行。

  • 支持范围广泛

    • 桌面平台:Linux支持传统的x86、x86-64架构的PC和笔记本电脑。

    • 嵌入式平台:Linux还支持ARM、MIPS、PowerPC等嵌入式平台,广泛应用于手机、路由器、物联网设备等领域。

    • 服务器平台:Linux在数据中心中应用广泛,支持各种服务器架构,包括x86、SPARC、IBM Power系列等。

    • 移动平台:Linux是Android操作系统的核心,广泛应用于智能手机、平板电脑等设备。

  • 平台兼容性:Linux内核的设计考虑到硬件的多样性,支持的硬件平台类型包括各种处理器架构(如Intel、AMD、ARM等)、外设以及文件系统等,使得Linux能够适配多种设备

1.3.4 可裁剪与可移植性

Linux的架构和设计使其具备了高度的可裁剪性可移植性,即用户或开发者可以根据实际需求定制和裁剪Linux系统,以适应不同的硬件平台或应用场景。

  • 可裁剪性:Linux内核是模块化设计的,开发者可以选择性地加载和卸载内核模块。例如,开发者可以根据硬件平台的不同,只选择支持特定硬件的驱动程序和功能模块。这使得Linux能够在资源有限的设备(如嵌入式系统)上高效运行。

  • 可移植性:由于Linux内核的代码结构清晰,且与硬件平台相对独立,Linux系统可以被移植到各种不同的硬件架构上。开发者只需根据目标平台的需求,进行必要的移植工作,而不需要大规模修改操作系统的核心代码。

  • 搭积木的过程:Linux的组件和模块化结构就像搭积木一样,用户可以自由选择所需的功能模块并将其组合在一起,构建一个符合需求的定制系统。例如,在嵌入式设备中,开发者可能只需要最小化的文件系统和特定的驱动程序,而在桌面系统中,则需要更多的功能模块。

  • 互不干扰:由于Linux采用了模块化设计,不同的功能模块和组件在运行时相互独立,这意味着裁剪或移除某一模块不会影响系统的其他部分。开发者可以自由定制Linux系统,去除不必要的功能,提高系统的性能和安全性。

2 Linux与Windows的区别

2.1文件的区别

2.1.1 Windows文件管理

在Windows操作系统中,文件类型的区分主要依赖于文件的扩展名 。文件扩展名是文件名的一部分,通常在"."之后跟着一串字符,例如 .exe.txt.jpg 等。Windows根据这些扩展名来识别文件类型,决定如何打开该文件。

  • 常见的扩展名

    • .exe:可执行文件(应用程序)

    • .txt:文本文件

    • .jpeg.jpg:图片文件

    • .mp3:音频文件

    • .wmv:视频文件

    • .doc:文档文件

Windows通过扩展名来判断文件类型,并根据文件的扩展名来决定使用哪个程序打开该文件。如果文件没有扩展名或扩展名不明,Windows可能无法正确识别文件类型。


2.1.2 Linux文件管理

与Windows不同,Linux并不通过文件扩展名 来区分文件类型。Linux使用文件的创建方式 (文件的"模式")来区分文件类型。Linux的文件系统基于文件的权限与属性来识别文件,而不是扩展名。

  • Linux的文件类型有7种

    1. 普通文件 (-):这类文件是最常见的文件类型,如文本文件、图片、程序等。绝大多数文件都是普通文件。

    2. 块设备文件 (b):代表块设备,如硬盘、U盘等,用于大规模的数据存储。

    3. 字符设备文件 (c):代表字符设备,如串口设备、键盘、鼠标等,数据按字符流的方式进行处理。

    4. 目录文件 (d):代表目录,目录文件包含其他文件。

    5. 符号链接文件 (l):又叫软链接文件,它是指向另一个文件的引用或快捷方式。

    6. 套接字文件 (s):用于进程间通信,通常用于网络通信。

    7. 管道文件 (p):用于进程间的通信,特别是在管道和FIFO(先进先出队列)中使用。

在Linux中,通过命令 ls -l 来查看文件的详细信息,文件的第一列显示了文件的类型。例如:

复制代码

除了文件的类型,Linux还通过颜色 来帮助用户快速区分文件的种类。不同的颜色代表不同类型的文件,具体的颜色显示通常由LS_COLORS变量控制。

  • 白色:表示普通文件(没有特殊标记的常规文件)。

  • 蓝色:表示目录文件。

  • 绿色:表示可执行文件(例如程序、脚本等)。

  • 红色 :表示压缩文件(例如 .tar.gz.zip等压缩格式)。

  • 灰色:表示其他类型的文件(如设备文件或特殊文件)。

2.2 目录区别

在Windows和Linux操作系统中,目录结构路径表示存在明显的差异。

2.2.1 Windows目录结构

Windows操作系统 中,目录路径使用反斜杠(\)来表示目录层级。例如:

  • 根目录C:\

  • 子目录C:\Users\Documents\

在Windows中,文件和目录路径通常使用反斜杠(\)分隔,这代表目录的层级结构。

  • 文件路径C:\Program Files\example.exe

  • 当前目录 :Windows下的当前目录可以通过**.**来表示。例如,dir . 列出当前目录的文件。


2.2.2 Linux目录结构

Linux操作系统 中,目录路径使用斜杠(/)来分隔目录层级。以下是Linux中常见的目录结构表示方法:

  • 根目录(/

    • 在Linux中,根目录是系统文件的顶层目录,用来存放操作系统的核心文件和子目录。

    • 例如,/ 表示根目录,/home表示用户的家目录,/bin表示二进制执行文件。

  • 当前目录(.

    • 在Linux中,.表示当前目录,它的作用与Windows中的.类似,用来表示当前所在的目录。
  • 上一层目录(..

    • ..表示当前目录的上一层(父目录)。通过..可以访问当前目录的上一级目录。

    • 例如,cd ..会让你进入上一级目录。

2.2.3 Linux根目录下的文件夹

Linux的根目录 / 下包含多个子目录,每个目录都有特定的功能和用途。以下是根目录中常见的文件夹及其作用:

  • /bin

    • 存放系统必需的二进制执行文件 。这些文件通常是操作系统正常运行所必需的程序,如lscpmv等常用命令都在该目录下。

    • 这些命令可用于系统修复和管理,无论系统是否处于多用户模式。

  • /boot

    • 存放与Linux系统启动相关的文件 。这些文件包括启动时使用的引导加载程序(如GRUB),以及内核映像文件(如vmlinuz)和初始内存盘(initrd)。

    • 系统启动时,会加载/boot中的文件来引导操作系统。

  • /dev

    • 存放与设备相关的文件 ,在Linux中,硬件设备(如硬盘、串口、打印机等)在/dev目录下有对应的设备文件。

    • 例如,/dev/sda表示第一个硬盘,/dev/ttyS0表示串口设备。

  • /home

    • 存放普通用户的文件。每个用户在系统中通常都有一个对应的子目录,目录名与用户名相同。用户的数据、配置文件等存储在这里。

    • 例如,用户 user1 的目录通常是 /home/user1,其中存放该用户的文档、图片、配置文件等。

  • /mnt

    • 存放挂载的文件系统。这是一个临时目录,系统管理员通常会在这里挂载外部设备(如U盘、网络共享目录等)。

    • 例如,共享文件夹通常挂载在 /mnt/hgfs 下。

  • /root

    • 存放**根用户(root)**的文件。这是超级用户(root)专用的家目录。

    • 注意:/root 目录与普通用户的/home目录不同,作为超级用户,操作/root目录时要小心,避免误操作导致系统问题。

  • /lib

    • 存放系统和应用程序运行时所需的共享库文件。这些文件对于操作系统和软件的正常运行至关重要。

    • 例如,/lib/x86_64-linux-gnu 存放着许多系统级的共享库文件。

  • /etc

    • 存放系统的配置文件。所有系统级配置文件,如网络配置、用户账户信息、软件配置文件等,都位于此目录下。

    • 例如,/etc/passwd 存储系统用户信息,/etc/network/interfaces 存储网络接口配置。

  • /usr

    • 存放与用户相关的应用程序和文件。它包含大多数非系统级程序和库文件。

    • 例如,/usr/bin 存放应用程序的二进制文件,/usr/share 存放共享文件和资源。

2.3 命令识别区别

WindowsLinux 操作系统中,命令识别存在显著的差异。尤其是在命令的大小写 敏感性、空格 的使用以及参数匹配上,Windows和Linux表现出不同的规则。

2.3.1 Windows命令识别

  • 不区分大小写

    • Windows操作系统中,命令和文件路径对大小写不敏感。这意味着,无论你输入命令或路径时使用大写字母还是小写字母,操作系统都会理解它们是相同的。

    • 示例

      • dirDIR 是相同的命令,都会列出当前目录中的文件。

      • C:\Windowsc:\windows 都指向同一个目录,Windows会忽略字母的大小写。

  • 命令格式

    • 在Windows中,命令参数与选项之间常常可以不严格要求空格,系统会根据需要自动处理。例如,输入 dir /wdir/w 都能正确执行,并列出文件。

    • 示例

      • dir /wdir/w 都可以执行列出目录的命令。

2.3.2 Linux命令识别

  • 严格区分大小写

    • Linux操作系统对命令和文件路径是严格区分大小写的。这意味着,大小写不同的命令或路径会被视为不同的命令或文件。

    • 示例

      • lsLS 是两个不同的命令。ls 用于列出目录内容,而 LS 可能会提示"命令未找到"。

      • 文件名"file.txt"与"File.txt"被视为两个完全不同的文件。

  • 命令和参数的空格要求

    • 在Linux中,命令和参数之间的空格是非常重要的。如果你不正确地使用空格,Linux命令可能无法正确执行或会报错。

    • 示例

      • ls -l(列出当前目录的详细信息)与 ls-l(可能会提示错误或不执行任何操作),因为没有空格,Linux会认为 -l 是一个不可识别的文件名。

      • 在命令中,每个参数和选项之间必须有空格,否则系统无法正确识别。例如,ls -l 正确,而 ls-l 错误。

  • 参数匹配的严格性

    • 在Linux中,命令参数也需要严格匹配。如果输入错误或拼写不正确,系统将不会执行命令,或者会返回一个"命令未找到"错误。

    • 示例

      • ls -l 正确,显示详细目录列表。

      • ls -L 是错误的,因为 -L 选项并不是 ls 命令的有效选项。正确的是 -l,是小写字母L。

相关推荐
福尔摩斯张2 小时前
基于C++的UDP网络通信系统设计与实现
linux·c语言·开发语言·网络·c++·tcp/ip·udp
hkNaruto2 小时前
【规范】Linux平台C/C++程序版本发布调试规范手册 兼容银河麒麟
linux·c语言·c++
model20053 小时前
Alibaba linux 3安装LAMP(6)
linux·运维·服务器
wjykp3 小时前
1.vmware虚拟机安装和配置os
linux·运维·服务器
Better Bench3 小时前
Ubuntu aarch64 (arm64)架构开发板的Linux系统安装拼音输入法
linux·ubuntu·arm64·aarch64·拼音输入法
koddnty4 小时前
在c++中使用HOOK修改sleep函数
linux·c++
Jovin Giogic4 小时前
简明教程:记录 Ubuntu系统命令行安装TexLive,配置vscode
linux·vscode·ubuntu·latex·texlive
猫豆~4 小时前
Shell脚本部署——8day
linux·云计算
屿行屿行4 小时前
【Linux】浅析Linux内存管理机制
linux