前言:学习Linux的价值
- 应用程序交付的首选平台
- 公司内部服务统一使用Debian Linux系统
- 运维前端常用服务
- 加深对操作系统概念和实现的理解
计算机硬件
计算机组成部分:控制器+运算器=CPU,存储器单元,输入单元,输出单元。
计算机操作系统(Operating System,OS)
管理计算机资源;提供用户接口。
主流:macOS,Linux,windows,android,harmonyOS
操作系统启动:BIOS&UEFI 固化在主板上的一段程序,找到并运行Bootloader(操作系统引导程序),由Bootloader运行OS,OS启动完成。
BIOS(配合MBR磁盘分区无法引导启动2.2T以上磁盘)-升级优化->UEFI(配合GPT分区模式,可以引导启动2.2T以上磁盘) 性能和加载速度提升。
Linux系统概览
发展简史
Linux版本
- 内核版本:核心,内存管理,文件系统管理等底层能力。
- 发行版本:内核版本+常用软件。
如何查看Linux版本:
uname -a查看内核版本cat /proc/version查看内核版本cat /etc/os-release查看发行版本
Linux系统应用领域
- IT服务器
- 嵌入式和智能设备(android)
- 个人办公桌面
- 学术研究和软件研发
系统结构
基本组成
- 内核:提供核心能力。
- shell:命令解释器,用户可以使用shell进行与内核的交互。
- 文件系统:用户文件存到磁盘硬件中。
- 应用程序:linux上运行的程序。
体系结构
- 用户空间:应用程序,C Library-封装好的系统标准调用库。
- 内核空间:系统调用层,内核模块代码,平台架构相关代码。
应用程序如何与硬件系统通信:用户发起IO请求(系统调用)-->应用程序从用户态(应用程序默认在用户空间)-用户请求(底层用C Library发起系统调用)->内核态(内核代表程序运行在内核空间) --> 恢复成用户态
内核总结:
- 硬软件的中间层
- 资源管理程序
- 提供面向系统的命令
内核组成
文件系统 <-- 进程管理 <-- TTY,命令行工具/命令行输入
进程管理
进程的特点:
- 正在执行的程序或命令;
- 有自己的地址空间,占用一定系统资源;
- 一个CPU核同一时间只能运行一个进程; -由其进程ID(PID)和父进程ID(PPID)唯一识别:父进程作为模板,创建新进程,将子进程的内容映射到该进程中——树形结构。
查看进程属于内核还是用户进程:
ps -ef | grep nginx #查询nginx是哪个进程的
查看进程具体信息:
top -p xxxxx #xxxxx是进程的ID,是上一条命令中第二个量
NI资源抢占的时候该进程的优先级
S进程状态:休眠状态
关闭指定进程:
kill xxxxx
全部进程动态实时展示(类似资源管理器):
top
进程调度
CPU将不同进程运行时间进行切分。
26:30-29:07
进程调度原则:
- 一个CPU核同一时间只能运行一个进程;
- 每个进程有近乎相等的执行时间;
- 对于逻辑CPU,使用轮询方式进行,当轮询完成则回到第一个进程反复:OS创建调度队列管理进程,CPU进行进程调度时会从每个队列的第一个进程开始调度,直到执行完所有队列-保证每个进程都能被调用到;
- 进程执行消耗时间与进程量成正比。
进程的系统调用
系统调用(IO请求),应用程序从用户态切换为内核态,读取完成后,返回应用程序,应用程序从内核态重新变为用户态。
文件系统
Linux中一切皆文件,便于管理的数据存到磁盘,持久化保存文件。
文件组成类型:
- 普通文件(index.html):ext2/3/4
- 目录
- 设备
- 套接字socket(网络连接字段):nfs
文件系统管理文件的方法:树状目录结构,最上层是根目录。
问题引入虚拟文件系统:不同的文件系统和文件类型,Linux怎么实现对用户的同一文件接口?
答:虚拟文件系统VFS。打通不同文件类型,保证所有操作都是统一的。
怎么知道文件系统是什么类型的指令:
df -T #快速将文件系统的一些文件类型举例出来
mount #打印包含文件子同类型在内的磁盘分区信息
查看文件夹下内容:
mkdir xxxx #创建文件夹
mv xxxx /home #移动xxxx文件夹到/home
rm -r xxxx #删除xxxx文件夹
touch file.txt #创建空文件
cp file.txt file.bak.txt #复制file.bak文件到file文件里
文件读取流程
38:34-40:13
DMA:直接和磁盘进行交互,获取磁盘数据。
用户权限
组成内容:
- 用户账户
- 普通用户账户:使用者
- 超级用户账户:管理者
- 组账户
- 标准组:可容纳多个用户
- 私有组:只有用户自己
查看用户信息的指令:
w #查看当前登录用户信息
groups #查看当前用户所属组
id xxxx #查看用户uid信息
文件权限
文件权限关于用户的三个概念:
- 所有者
- 所在组
- 其他人
程序语言中的表示:例drwxr-xr-x
头字母表示文件类型,后每三个字符为一组分别表示所有者,所在组,其他人的文件权限。
用户权限操作:
Linux软件包管理
- 软件包:应用程序
- 软件包管理(工具):
- 底层工具(自给自足):处理安装和删除软件包文件任务-DPKG(Debian),RPM(Red hat)
- 上层工具(雇人帮我全部打点好):用于数据搜索和依赖解析-APT,YUM,DNF
以下内容暂时没用