Linux基础
所有图片来自 (字节前端训练营 - Linux 基础.pptx - 飞书云文档 (feishu.cn))
此文档是对对应课程 Linux 基础 - 掘金 (juejin.cn) 的笔记
1. 计算机组成:
冯诺依曼计算机体系结构:
计算机由运算器、控制器、存储器、输入设备、输出设备组成
2. 操作系统
是一种应用程序,提供2方面服务:
管理计算机资源:处理器管理、设备管理、文件管理
提供用户接口:图形用户接口、命令接口、程序接口
3. 计算机开机时os是如何启动的
在主板上有一组固定的程序,在开机时启动操作系统
2种方式:
BIOS ---> BIOS自检 ---> Bootloader ---> OS启动
UEFT ---> Bootloader ---> OS启动
区别: UEFT可视为BIOS的优化版本
- BIOS启动时要进行硬件自检,UEFT优化了自检流程
- BIOS配合MBR磁盘分区模式,MBR模式至多识别容量为2TB大小的磁盘;UEFT配合GPT磁盘分区模式,GPT可以识别容量大于2TB的磁盘
4. Linux
4.1 版本
1992年v1.0内核发布(GPL)
内核版本 + 常用软件 = Linux发行版本
查看内核版本
uname -a
cat /proc/version
查看发行版本信息
cat /etc/os-release
4.2. Linex组成
内核:提供资源管理、硬件管理等
shell:一个命令解释器,实现与内核的交互 文件系统:管理文件
应用程序:常见的应用程序
4.3 Linux体系结构
分为用户空间和内核空间
- 用户空间:用户的用用程序、调用内核的接口
- 内核空间:内核、系统调用、架构相关的代码
权限的考虑:
应用程序运行在用户空间,即使出错也不会影响内核,提升了稳定性,保证了资源分配的可控和系统的可靠。
一次系统调用的过程:
应用访问系统调用 --> 进入内核态,此时权限获得提升,可以调用硬件等资源 ---> 人物完成后,程序切换回用户态
小结:
- 内核提供了软硬件交互的接口
- 内核是一个资源管理程序,包括程序运行堆栈等资源
- 内核提供一组面向系统的命令,外部应用可以通过这组命令与内核交互
- 即,内核分别提供了管理资源的接口和与外部应用交互的接口,使得软硬件之间的交互称为可能
5. Linux进程管理
5.1 进程的定义
狭义定义:进程就是一段程序的执行过程。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统资源分配的基本单元。
即,进程是一个应用程序在操作系统下关于特定的数据的一次执行过程。
特点:
- 一个正在执行的程序或命令
- 占有一定的资源和地址空间
- 一个CPU核 只能同时运行一个进程
- 由进程ID(PID)和其父进程ID(PPID)唯一识别
5.2 进程的创建
一个进程是由其父进程创建的
子进程以其父进程作为模板创建的一个新进程(fork), 同时将分配给子进程的资源映射到子进程中
即一个进程不是凭空通过一个接口创建的,是由父进程fork,并分配资源得到的
最初的进程: Linux启动时,产生一个PID=0的进程,是所有其它进程的祖先,此后由PID0创建PID1(用户进程的祖先)、PID2(内核进程的祖先)
因此进程是一个树结构
5.3 查看一个进程
显示系统进程
ps -ef
搜索指定应用的进程并查看
ps -ef | grep nginx
其中nginx是应用名称
根据PID查看进程
top -p <pid>
根据PID杀死进程
kill <pid>
“资源管理器”
top
5.4 进程调度
按照某种策略给进程分配CPU运行时间
进程的生命周期
不考虑优先级时,不考虑互斥资源时进程调度的原则:
- 一个CPU核同一时间只运行一个进程
- 每个进程有相同的执行时间
- CPU对每个进程采用轮询的方式调度
- 进程执行消耗的时间与进程属灵成正比
另:
考虑进程互斥的调度原则: 空闲让进、忙则等待、有限等待、让权等待
5.5 进程的系统调用
运行在用户/内核空间时,称其处于用户/内核态
进程使用一次系统调用:
进程频繁的在用户/内核态切换,使用硬件或内核资源
6. 文件系统
一切皆文件
Linux将一切资源视为不同类型的文件,在调用时保持接口的统一。
文件为树结构存储
如何实现统一接口?
抽象一个虚拟文件系统层进行封装
6.1 基础文件操作命令
可以查看文件系统类型的命令
# 报告磁盘利用率
df -T
# 挂在文件系统,不加参数时,返回磁盘分区信息(包含文件系统)
mount
ls -l # 查看当前目录文件
mkdir dir # 创建文件夹
touch deomFile # 在当前目录创建文件
mv from to # 移动或重命名文件
rm file # 删除
6.2 一次文件的访问
ngx的一次访问
读:
先查看缓冲,有则返回
无则访问磁盘(DMA接口可以不通过CPU直接进行读写)并添加缓存
写:
有需要(无socket缓存)则更新scoket缓存
通过网络返回文件内容
另:
加入缓冲区的目的:减少系统调用,减少占有CPU运行时,加快进程操作
7. 用户权限
用户权限:普通、root
用户组:标准组(多个用户)、私有组(只用自己)
查看权限的命令
w # 当前用户权限
groups # 当前用户所属组
id # 当前用户uid,gid等
8. 文件权限
根据 所有者、所有组、其它分为3类
chmod 设置权限
su 改变权限
9. 软件管理
软件包:一个应用程序
软件包管理工具:
底层工具:用于简单的删除和安装软件包,如dpkg,rpm 类似软件的安装和卸载工具
上层工具:可以进行数据搜索和解析依赖,如apt,yum,dnf 类似软件商店
apt常用命令
nginx