01_计算机硬件
02_操作系统
- 问题思考
- 程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?
操作系统启动流程
在计算机启动时,最先被执行的是计算机 BIOS(Basic Input/Output System)或 UEFI(Unified Extensible Firmware Interface),它们是计算机的固件,也就是硬件上的软件。BIOS 或 UEFI 将会执行 POST(Power On Self Test,自检程序)以确认硬件设备是否正常。 接着,BIOS 或 UEFI 会寻找启动盘(通常是硬盘或者 USB 设备),读取启动盘中的引导程序。引导程序是一个小程序,它被放置在启动盘的特定位置,用于启动操作系统。 当引导程序被加载后,它会加载操作系统内核和初始化程序,并将控制权转移到操作系统内核中,启动操作系统的运行。操作系统会根据用户或者系统设置,加载相应的服务和应用程序,提供计算机的各种功能。
BIOS和UEFI
BIOS是个程序,存储在BIOS芯片中,而现在的新式电脑用的基本都是UEFI启动,早期的过渡电脑用的都是EFI启动。其实EFI或UEFI的一部分也是存储在一个芯片中,由于它们在表面形式、基本功能上和BIOS差不多,所以习惯上我们也把存储EFI/UEFI的芯片叫做EFI/UEFI BIOS芯片,EFI/UEFI也叫做EFI/UEFI BIOS,但在实际上它们和BIOS根本是不一样的
BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口。BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。
其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。
BIOS用于计算机硬件自检、CMOS设置、引导操作系统启动、提供硬件I/O、硬件中断等4项主要功能,因此BIOS程序可以分为若干模块,主要有Boot Block引导模块、CMOS设置模块、扩展配置数据(ESCD)模块、DMI收集硬件数据模块,其中引导模块直接负责执行BIOS程序本身入口、计算机基本硬件的检测和初始化,ESCD用于BIOS与OS交换硬件配置数据,DMI则充当了硬件管理工具和系统层之间接口的角色,通过DMI,用户可以直观地获得硬件的任何信息,CMOS设置模块就是实现对硬件信息进行设置,并保存在CMOS中,是除了启动初始化以外BIOS程序最常用的功能。
统一可扩展固件接口(英语:Unified Extensible Firmware Interface,缩写UEFI)是一种个人电脑系统规格,用来定义操作系统与系统固件之间的软件界面,作为BIOS的替代方案。可扩展固件接口负责加电自检(POST)、联系操作系统以及提供连接操作系统与硬件的接口。
UEFI的前身是Intel在1998年开始开发的Intel Boot Initiative,后来被重命名为可扩展固件接口(Extensible Firmware Interface,缩写EFI)。Intel在2005年将其交由统一可扩展固件接口论坛(Unified EFI Forum)来推广与发展,为了凸显这一点,EFI也更名为UEFI(Unified EFI)。
可以简单的理解为:UEFI是BIOS启动流程的优化和升级版本,BIOS本身存在一些限制,例如BIOS在开机时进行BOIS自检,导致开机速度变慢,UEFI优化了启动流程,加载启动速度明显提升。 BIOS默认与MBR类型磁盘分区配合,无法引导启动2.2T容量以上磁盘 UEFI一般配合GPT分区模式,可以引导2.2T容量以上的磁盘启动
03_Linux系统概览
发展简史
Linux版本
发行版本常用的有:CentOS、Ubuntu、Debian linux
查看Linux版本
#方法1 uname -a
/显示系统的所有信息,包括内核版本号、操作系统发行版、主机名、处理器类型和架构等等 uname -r
只显示当前Linux系统的内核版本号
方法2 at /proc/version
/cat /proc/version 命令用于显示当前 Linux 系统内核的版本号、编译者和编译日期。该命令读取 /proc/version 文件的内容并将其输出到终端上。
/该命令可以提供有关 Linux 内核的基本信息,包括内核版本、内核编译器和内核构建日期等。此外,它还提供了有关操作系统的其他信息,例如 GNU 工具链的版本和 CPU 架构信息。
/一些 Linux 系统中可能没有 /proc/version 文件,但是它们通常会提供其他方式来查看内核版本号,例如方法1的 uname -r 命令
Linux应用领域
04_Linux系统结构
Linux系统四个主要部分
Linux体系结构
- 内核是硬件和软件之间的中间层
- 内核是一个资源管理器
- 内核提供向系统的命令
内核漫画
底层:文件系统、文件管理
中间层:进程管理、进程运行的地方
上层:命令行工具、命令行输入项,用于交互使用的
进程之间允许通行
进程管理
- 进程是正在执行的一个程序或命令
- 进程有自己的地址空间,占用一定的系统资源
- 一个CPU核同一时间只能运行一个进程
- 进程由它的进程ID(PID)和它父进程的进程D(PPID)唯一识别
查看进程信息
- 问题思考
- 系统中运行的程序远远大于CPU的核数,那Liux系统是如何实现同时运行这么多程序的?
进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程
进程状态
进程调度原则
- 一个CPU核同一时间只能运行一个进程
- 每个进程有近乎相等的执行时间
- 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
- 进程执行消耗时间和进程量成正比
进程的系统调用
Linux文件系统
-
Linux文件系统采用树状的目录结构
-
最上层是根目录
-
问题思考
-
Linux有这么多不同的文件系统,如何实现对用户提供统一调用接口的?
查看文件系统类型
文件读取流程
用户权限
查看用户信息
文件权限
用户权限操作
05_Linux软件包管理
上层与底层工具的区别 底层工具主要用于底层的软件包管理操作,例如软件包的安装、卸载、更新等,其主要特点包括:
-以命令行为主要界面; -操作灵活、功能强大; -操作相对复杂,需要较高的技术水平。