Linux学习笔记day1

1. 认识 Linux

Linux 可以分为四个主要部分:Linux 内核图形桌面环境GNU 工具应用软件。这四位各司其职。

系统架构流转图

复制代码
[ 应用软件 ]
    │
    ├─► 扩展系统功能
    ▼
[ 图形桌面环境 ]
    │
    ├─► 提供可视化操作管理软件界面
    ▼
[ GNU 工具 ]
    │
    ├─► 用以操作文件/文本的工具
    ├─► 用以管理进程的工具
    ▼
[ Linux 内核 ]
    │
    ├─► 管理:系统内存、软件程序、硬件设备、文件系统
    ▼
[ 底层硬件 ] 
    (主板、CPU等)

2. Linux 内核 (Kernel) 的四个主要功能

内核是整个系统的核心,管理着硬件和软件,以下是四个主要功能:

① 系统内存管理

这是内核的主要功能,管理着物理内存与虚拟内存。

基本原理 :内核通过硬盘上的空间来实现虚拟内存,这块区域叫 交换空间 (Swap);物理内存与 Swap 分区之间不断地交换"页"。简单来说,就是将应用动态生成的、且硬盘上没有对应文件的纯粹的内存数据进行转移。

内存交换示意图
复制代码
                        ┌──────────────────────────────┐
                        │          虚拟内存            │
                        │ (内核记录哪些页面正在使用,  │
                        │ 自动将未使用的页面复制到     │
                        │ Swap 分区)                   │
                        └──────────────┬───────────────┘
                                       │ 交互
                                       ▼
                              【 Linux 内核 】
                                 ▲           ▲
                            交互 │           │ 交互
                                 │           │
           ┌─────────────────────┘           └──────────────────────┐
           ▼                                                        ▼
┌───────────────────────┐                                ┌─────────────────────┐
│       物理内存        │                                │      交换空间       │
│  (按组划分内存为块,  │                                │       (Swap)        │
│   叫做"页")           │                                │                     │
└───────────────────────┘                                └─────────────────────┘

② 软件程序管理

在 Linux 系统中运行的程序叫进程

  • 内核控制着所有进程。

  • 内核创建了 init 进程,也叫第一个进程。

  • 内核启动的时候,它会将 init 进程加载到虚拟内存中;在启动任何新进程的时候,都会在虚拟内存中分配一块专门的区域给新进程存储数据。

③ 硬件设备管理

任何需要与之通信的设备都在内核注入其驱动程序,让系统认识设备。在内核中注入驱动程序有两种方法:

  1. 编译进内核的设备驱动代码。

  2. 可插入内核的设备驱动模块。

设备文件分类 Linux 系统将硬件设备当成特殊文件,叫设备文件,分三类:

  1. 字符型设备文件:每次处理数据时只能处理一个字符的设备。

  2. 块设备文件:每次处理数据时能处理大块数据的设备。

  3. 网络设备文件:采用数据包发送和接收数据的设备。

节点与设备号 Linux 为每个设备都创建一种名为节点的特殊文件。每一个节点都有一个唯一的数据对,对应的 Linux 内核标识它。

  • 数据对包括一个主设备号次设备号

  • 类似的设备会被划分到同样的主设备号下,降低代码冗余,防止路由表爆炸。

④ 文件系统管理

不同于 Windows 系统,Linux 支持不同类型的文件系统的读写,除了 Linux 自带的多种文件系统外,还支持其他操作系统的文件系统。

Linux 支持的文件系统列表:

序号 格式 说明
1 ext Linux 扩展文件系统
2 ext2 第二扩展文件系统 (包含后续的 ext3, ext4)
3 hpfs OS/2 高性能文件系统
4 iso9660 ISO9660 光盘文件系统
5 jfs IBM 日志文件系统
6 minix MINIX 文件系统
7 msdos 微软的 FAT16 文件系统
8 ncp Netware 文件系统
9 nfs 网络文件系统
10 ntfs 支持微软的 NT 文件系统
11 proc 访问系统内核信息的虚拟文件系统
12 reiserfs 提供更好性能的文件系统
13 smb 支持网络访问的共享文件系统
14 sysv 较早期的 Unix 的文件系统
15 ufs BSD 文件系统
16 umsdos 建立在 msdos 上的文件系统
17 vfat 就是 FAT32 文件系统
18 xfs 高性能 64 位日志文件系统

注: Linux 内核采用 虚拟文件系统 (VFS) 作为和每个文件系统交互的接口。为任何类型文件系统通信提供一个标准接口。

3. GNU 工具与 Shell

GNU 工具

GNU 组织开发了一套完整的 Unix 工具,除了执行一些标准功能,还提供了控制文件程序的工具。核心是 Coreutils 软件包,其中包括:

  1. 用以处理文件的工具

  2. 用以操作文本的工具

  3. 用以管理进程的工具

Shell

Shell 工具是一种特殊的交互工具,为用户提供了启动程序和管理文件系统的途径。

  • 命令行提示符:Shell 的核心是命令行提示符。它允许用户输入文本命令,由其解释并且执行。

  • 内部命令:Shell 包含了一组内部命令,用这些命令可以完成对系统和文件系统的基本管理。

  • Shell 脚本:也可以将多个 shell 命令放入文件中作为程序进行执行,也就是 shell 脚本。可以完成一些自动化的功能。

常见的 Shell 种类 在 Linux 系统上,有好几种 Shell 可供使用,各个 shell 的特性各不相同,所有默认的 shell 基本上是 bash。除了基本的 bash shell 还有另几种 shell 如下:

  • ash: 一种运行在内存受限环境中间的轻量级 shell。

  • korn (ksh): 支持关联数组和浮点计算的高级编程特性。

  • tcsh: 一种将 C 语言中的一些元素引入到 Shell 脚本中的 shell。

  • zsh: 拥有上面三种的特性,同时提供高级编程语言的特性。

4. Linux 桌面环境

Linux 桌面环境其实就是提供了一个类似于 Windows 图形化的操作界面的工具。

  • 弊端:会浪费一些系统资源。所以在纯粹的服务器管理中通常不用。
相关推荐
老詹图解IT1 小时前
统信 UOS 登录界面转圈闪退/卡登录等常见原因及处理
linux·服务器·网络
轻颂呀1 小时前
进程间关系和守护进程
linux·网络
三品吉他手会点灯1 小时前
C语言学习笔记 - 31.数据类型 - 基本输入输出函数printf与scanf
c语言·开发语言·笔记·学习
sbjdhjd1 小时前
02 (中)| K8s Pod 生产化落地:从配置到优化全流程
linux·运维·云原生·kubernetes·开源·podman·kubelet
皓月盈江2 小时前
Linux Ubuntu系统如何编辑Docker容器内的文件
linux·ubuntu·docker·容器·靶场·vulhub·编辑docker内文件
chushiyunen2 小时前
typescript笔记、ts笔记、npx命令
javascript·笔记·typescript
jingyu飞鸟2 小时前
linux系统二进制安装MySQL 8.4、8.0版本数据库,配置crontab和xtrabackup数据库热备份脚本
linux·数据库·mysql
无限进步_2 小时前
从Multics到Linux:操作系统的自由之路
linux·运维·服务器
China_Yanhy2 小时前
【云原生实战】从零构建无节点 EKS:Karpenter 极简注入与全自动算力接管指南
linux·运维·云原生