课程介绍 学习Linux的价值
- Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
- 公司内部服务(TCE、Faas、SCM)统一使用Debian Linux系统
- 熟悉Linux基础指令,熟练运维前端常用服务(Nginx,Node.js)
- 加深对操作系统概念和实现的理解,夯实基础知识
课程内容: 01 计算机硬件 02 计算机操作系统 03 Linux系统概览 04 Linux系统结构 05 Linux系统软件包管理器
1、计算机硬件
计算机由五大基本单元组成
- 控制器(协调和组织计算机中其他部件进行工作)
- 运算器(进行算术和逻辑运算)
- 存储器单元(分为内存和外存,外存:磁盘、光驱)
- 输入单元(比如:鼠标、键盘)
- 输出单元(比如:显示器、音响)
常规意义上,可以认为控制器和运算器共同组成了CPU单元
2、计算机操作系统
操作系统(Operating System,OS)
- 管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息
- 承上启下的作用,连接应用程序和系统硬件
问题思考 程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?
操作系统启动流程:
- BIOS和UEFI固化在主板上的一段程序,在开机的时候就能够执行和解析这段程序
- Bootloader:操作系统引导程序
- 区别在于:UEFI是优化之后的BIOS;BIOS有自检,这样UEFI更快;BIOS默认会和MBR这种磁盘分区进行配合,无法启动大容量的磁盘,UEFI配合GPT分区模式
3、Linux系统概览
Linux发展简史:
Linux版本:
- 内核版本(分为进程管理、内存管理、文件系统管理、硬件资源管理)
- 发行版本(Linux内核+常用软件=Linux发行版本)
查看Linux系统内核版本
Linux系统应用领域:
- IT服务器(操作系统、虚拟化和云计算)
- 嵌入式和智能设备
- 个人办公桌面
- 学术研究与软件研发
4、Linux系统结构
Linux基本组成
Linux系统一般有4个主要部分:
- 内核
- shell(命令解释器)
- 文件系统
- 应用程序
Linux体系结构:
- 用户空间(用户运行的应用程序和封装好的系统调用库)
- 内核空间(系统调用、内核、平台架构相关的代码) 目的:隔离的;内核空间权限较高,用户空间拥有较低级别的权限,linux通过权限的划分来保证资源分配和管理的可控和安全
应用程序怎么和硬件设备之间进行通信呢?比如:应用程序要发起一次IO请求
- 涉及应用程序上下文的切换
- 应用程序默认运行在用户空间,处于用户态;当用户发起IO请求的时候,底层就是发起一个系统调用,程序会从用户态切换到内核态,运行在内核空间,当程序进入内核态的时候就拥有了最高的权限,就有了和硬件通信的能力,本次任务完成之后,程序又会从内核态切换为用户态,这就是一个系统调用
内核总结:
- 内核是硬件与软件之间的中间层
- 内核是一个资源管理程序
- 内核提供一组面向系统的命令
进程之间可以通过管道进行通信 命令行接口或者输入,通过tty交给进程
1)进程管理
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源
- 一个CPU核同一时间只能运行一个进程
- 进程由它的进程ID(PID)和它父进程的进程ID(PPID)唯一识别
进程的结构是一个树形的
- S:休眠
- NI:进程调度优先级,当发生资源抢占的时候
- top:类似于资源管理器
问题思考:系统中运行的程序远远大于CPU的核数,那 Linux系统是如何实现同时运行这么多程序的?
- 进程调度
进程调度:
- 僵尸进程,进程僵死
- T状态:调试程序,debugger工具引起的
进程调度的原则:
- 一个CPU核同一时间只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
进程的系统调用:
2)文件系统
文件系统
- 都是文件的好处:保证操作的统一,接口调用的统一
问题思考:Linux有这么多不同的文件系统,如何实现对用户提供统一调用接口的?
- 虚拟文件系统
虚拟文件系统:
- 做了一层抽象,加了一个中间层
查看文件系统类型:
文件基本操作:
文件读取流程:
- DMA:直接存储访问,向磁盘发送文件读取的请求;可以直接和磁盘交互,获取磁盘的数据,将磁盘的数据写到内核缓冲区
3)用户权限
用户账户: 用户账户
- 普通用户账户:在系统中进行普通作业
- 超级用户账户:在系统中对普通用户和整个系统进行管理 组账户
- 标准组:可以容纳多个用户
- 私有组:只有用户自己
查看用户信息:
文件权限: 文件权限关于用户有三个概念:
- 所有者:文件的所有者
- 所在组:文件的所有者所在的组
- 其他人:除文件所有者及所在组外的其他人
每个用户对于文件都有不同权限,包括读(R)、写( w)、执行(×)
用户权限操作:
5、Linux系统软件包管理器
软件包
- 通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
软件包管理
- 底层工具:主要用来处理安装和删除软件包文件等任务,DPKG,RPM
- 上层工具:主要用于数据的搜索任务和依赖解析任务,APT,YUM,DNF
- dnf是yum的升级版