引入
十分感谢字节青训营给予了我们如此丰富且优质的课程。Linux是我一直以来都希望接触的一个操作系统,作为代码世界的常客,简单易用但过分复杂臃肿的Win已经难以满足我们日益增长的需求了。作为开源、稳定、轻巧的系统,我们可以在除了PC之外的几乎所有地方看到它的身影——手机(鸿蒙)、智能家居、汽车系统、服务器……
现在就让我们一起看看字节讲师徐老师是怎么理解Linux的吧。
趣味小知识
Linux选用企鹅作为图标,其实是因为企鹅代表南极洲,不属于任何国家和组织,是全世界共有财富。Linux作为开源的系统,不受任何企业和组织限制,不属于任何机构,是全社会的共有财富,秉持开源精神。
1.计算机硬件
计算机由五大基本单元:控制器、运算器、存储器单元、输入单元、输出单元。
2.计算机操作系统
操作系统(Operating System)。用于管理和控制计算机系统中的硬件和软件资源,用于在用户余系统硬件之间传递信息。
主流操作系统除了Linux还有MacOS、Windows、Android等。
3.操作系统启动流程
主流的启动方式有两种,BIOS和UEFI就是蚀刻在主板上的软件,让计算机在开机的时候就能执行这个程序。启动该程序就可以运行Bootloader程序,也就是一个操作系统引导程序,通过这个程序,我们就可以找到并运行最终启动硬盘里的OS了。
UEFI和BIOS有啥区别?
其实可以把UEFI理解为BIOS的一种优化,BIOS自检会拖慢速度,UEFI则一定程度上优化了这个。此外UEFI还在磁盘启动上进行了优化,可以引导操作2T以上的磁盘启动。
4.Linux概览
4.1. Linux版本
- 内核版本(开发者本人维护)
- 发行版本(百花齐放)
4.2. 查看Linux的内核和发行版本的Shell命令
4.3. 应用领域
- IT服务器(操作系统、虚拟化和云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究和软件研发
5. Linux系统结构
5.1. Linux基本组成
- 内核
- Shell(命令解释器)
- 文件系统
- 应用系统
5.2. Linux体系结构
用户空间和内核空间权限不同
- 内核就是硬件和软件之间的中间层
- 内核是一个资源管理程序
- 内核提供一组面向系统的命令
5.3. 进程管理
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定系统资源
- 一个CPU核同一时间只能运行一个进程
- 进程由他的进程ID和它父进程的进程ID唯一识别(PID和PPID)
5.3.1. 查看进程信息
5.4. 进程调度
指操作系统按某种策略或规则选择进程占用CPU进行运行的过程。
进程调度原则:
- 一个CPU核同一时间只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言,进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复。
- 进程执行消耗时间和进程量成正比。
程序运行在用户空间的时候处于用户态,在内核空间运行的时候称为在内核态。通过IO请求发生系统调用,将应用程序本身从用户态和内核态之间切换。
5.5. 文件系统
关于Linux有一句经典的话:Linux中一切皆文件
文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。
即便Linux的文件类型有很多,但他们的本质都是文件,对他们的操作都是一样的。
Linux文件系统是采用树状的目录结构,最上方是根目录。
那么Linux既然有如此多的文件类型,那么其如何做到统一命令来调用不同的接口,使得Linux做到“一切皆文件”呢?
其实Linux在用户空间和内核空间之间做了一层抽象。这就是VFS虚拟文件系统。
- 虚拟文件系统对应用提供一个标准的文件操作接口
- 虚拟文件系统对文件系统提供一个标准的文件接入接口
简化了程序员的操作,交给VFS来完成对每种文件的分别操作。我们可以对每种文件使用以下统一的命令。
那么文件读取流程是怎么样的呢?用一张图可以大致说明:
缓冲区就是储存以前的调用留下的记录。如果以前有相关记录了,直接读取即可。
5.5. 用户权限
Linux既然是万物皆文件,那么如果所有人都可以修改这些文件,会造成严重的安全问题。
因此Linux一个重要的部分就是用户权限
常见的用户查询命令有:
关于权限,我们需要结合文件来了解:
我们经常会在Linux文件处理中看到这样一串字母。表示了各个用户在这个文件的权限。
6. 软件包管理
软件包通常指的是一个应用程序,可以是一个GUI应用程序、命令行工具或软件库
而对软件包的管理包括
- 底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM等。
- 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF等。
关于Debian APT,有以下常用命令: