Linux基础
学习 Linux 的价值
- Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
- 公司内部服务(TCE、FaaS、SCM)统一使用 Debian Linux 系统
- 熟悉 Linux 基础指令,熟练运维前端常用服务(Nginx,Node.js)
- 加深对操作系统概念和实现的理解,夯实基础知识
计算机硬件
计算机由五大基本单元组成
- 控制器
- 运算器
- 存储器单元
- 输入单元
- 输出单元
计算机操作系统
操作系统(Operating System,OS)
定义:管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息
起到承上启下的作用,承上:可以在操作系统之上运行一些应用程序,启下:可以在操作系统之下跟系统硬件进行交互
管理计算机资源:
- 处理器管理
- 存储器管理
- 设备管理
- 文件管理
提供用户接口:
- 命令接口
- 图形用户接口
- 程序接口
操作系统启动流程
Linux 版本
- 内核版本:由 Linux 作者本人进行维护,提供进程管理、内存管理、文件系统管理以及硬件资源管理等一系列的底层能力
- 发行版本如:centos、debian Linux、Ubuntu(补一句,Ubuntu yyds)
查看 Linux 系统内核版本
通过 uname -a | cat /proc/version 命令查询 Linux 内核版本
通过 cat /etc/os-release 命令查询 Linux 发行版本
Linux 系统应用领域
- IT 服务器(操作系统、虚拟化和云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究与软件研发
Linux 系统结构
Linux 基本组成
一般有 4 个主要部分:
- 内核
- shell
- 文件系统
- 应用程序
Linux 进程管理
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源
- 一个 CPU 核同一时间只能运行一个进程
- 进程由它的进程 ID(PID)和它父进程的进程 ID(PPID)唯一识别
进程调度
系统中运行的程序远远大于 CPU 的核数,那 Linux 系统是如何实现同时运行这么多程序的?
简介
进程调度是指操作系统按某种策略或规则选择进程占用 CPU 进行运行的过程
进程生命周期
-
R (TASK_RUNNING),可执行状态
-
S (TASK_INTERRUPTIBLE),可中断的睡眠状态
-
D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态
-
T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态
-
Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程称为僵尸进程
-
X (TASK_DEAD - EXIT_DEAD),退出状态,进程即将被销毁
进程调度原则
-
一个 CPU 核同一时间只能运行一个进程
-
每个进程有近乎相等的执行时间
-
对于逻辑 CPU 而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- CPU 会生成一个调度队列,进程会放入这个队列中,当 CPU 开始进程调度的时候,会从第一个开始取,直到队列中所有的进程被取出,CPU 又会从队列的第一个位置开始取出,这样好处保证了每个进程都被调用了,而不会因为优先级的问题,导致低优先级的进程不被调用
-
进程执行消耗时间和进程量成正比
进程的系统调用
内核空间(Kernal Space):系统内核运行的空间
用户空间(User Space):应用程序运行的空间
文件系统
文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件