Linux基础 | 青训营笔记

59 阅读5分钟

引入

十分感谢字节青训营给予了我们如此丰富且优质的课程。Linux是我一直以来都希望接触的一个操作系统,作为代码世界的常客,简单易用但过分复杂臃肿的Win已经难以满足我们日益增长的需求了。作为开源、稳定、轻巧的系统,我们可以在除了PC之外的几乎所有地方看到它的身影——手机(鸿蒙)、智能家居、汽车系统、服务器……

现在就让我们一起看看字节讲师徐老师是怎么理解Linux的吧。

趣味小知识

Linux选用企鹅作为图标,其实是因为企鹅代表南极洲,不属于任何国家和组织,是全世界共有财富。Linux作为开源的系统,不受任何企业和组织限制,不属于任何机构,是全社会的共有财富,秉持开源精神。

1.计算机硬件

计算机由五大基本单元:控制器、运算器、存储器单元、输入单元、输出单元。

image.png

2.计算机操作系统

操作系统(Operating System)。用于管理和控制计算机系统中的硬件和软件资源,用于在用户余系统硬件之间传递信息。

主流操作系统除了Linux还有MacOS、Windows、Android等。

3.操作系统启动流程

image.png

主流的启动方式有两种,BIOS和UEFI就是蚀刻在主板上的软件,让计算机在开机的时候就能执行这个程序。启动该程序就可以运行Bootloader程序,也就是一个操作系统引导程序,通过这个程序,我们就可以找到并运行最终启动硬盘里的OS了。

UEFI和BIOS有啥区别?

其实可以把UEFI理解为BIOS的一种优化,BIOS自检会拖慢速度,UEFI则一定程度上优化了这个。此外UEFI还在磁盘启动上进行了优化,可以引导操作2T以上的磁盘启动。

4.Linux概览

4.1. Linux版本

  • 内核版本(开发者本人维护)
  • 发行版本(百花齐放)

image.png

4.2. 查看Linux的内核和发行版本的Shell命令

image.png

image.png

4.3. 应用领域

  • IT服务器(操作系统、虚拟化和云计算)
  • 嵌入式和智能设备
  • 个人办公桌面
  • 学术研究和软件研发

5. Linux系统结构

5.1. Linux基本组成

  • 内核
  • Shell(命令解释器)
  • 文件系统
  • 应用系统

image.png

5.2. Linux体系结构

image.png

用户空间和内核空间权限不同

  • 内核就是硬件和软件之间的中间层
  • 内核是一个资源管理程序
  • 内核提供一组面向系统的命令

5.3. 进程管理

  • 进程是正在执行的一个程序或命令
  • 进程有自己的地址空间,占用一定系统资源
  • 一个CPU核同一时间只能运行一个进程
  • 进程由他的进程ID和它父进程的进程ID唯一识别(PID和PPID)

image.png

5.3.1. 查看进程信息

image.png

5.4. 进程调度

指操作系统按某种策略或规则选择进程占用CPU进行运行的过程。

image.png

image.png

进程调度原则:

  • 一个CPU核同一时间只能运行一个进程
  • 每个进程有近乎相等的执行时间
  • 对于逻辑CPU而言,进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复。
  • 进程执行消耗时间和进程量成正比。

image.png

程序运行在用户空间的时候处于用户态,在内核空间运行的时候称为在内核态。通过IO请求发生系统调用,将应用程序本身从用户态和内核态之间切换。

5.5. 文件系统

关于Linux有一句经典的话:Linux中一切皆文件

文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。

image.png

即便Linux的文件类型有很多,但他们的本质都是文件,对他们的操作都是一样的。

image.png

Linux文件系统是采用树状的目录结构,最上方是根目录。

那么Linux既然有如此多的文件类型,那么其如何做到统一命令来调用不同的接口,使得Linux做到“一切皆文件”呢?

其实Linux在用户空间和内核空间之间做了一层抽象。这就是VFS虚拟文件系统。

image.png

  • 虚拟文件系统对应用提供一个标准的文件操作接口
  • 虚拟文件系统对文件系统提供一个标准的文件接入接口

简化了程序员的操作,交给VFS来完成对每种文件的分别操作。我们可以对每种文件使用以下统一的命令。

image.png

那么文件读取流程是怎么样的呢?用一张图可以大致说明:

image.png

缓冲区就是储存以前的调用留下的记录。如果以前有相关记录了,直接读取即可。

5.5. 用户权限

Linux既然是万物皆文件,那么如果所有人都可以修改这些文件,会造成严重的安全问题。

因此Linux一个重要的部分就是用户权限

image.png 常见的用户查询命令有:

image.png

关于权限,我们需要结合文件来了解:

image.png

我们经常会在Linux文件处理中看到这样一串字母。表示了各个用户在这个文件的权限。 image.png

6. 软件包管理

软件包通常指的是一个应用程序,可以是一个GUI应用程序、命令行工具或软件库

而对软件包的管理包括

  • 底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM等。
  • 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF等。

image.png

关于Debian APT,有以下常用命令:

image.png