Linux基础笔记

302 阅读7分钟

01_计算机硬件

image.png

02_操作系统

image.png

  • 问题思考
  • 程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?

操作系统启动流程

image.png

在计算机启动时,最先被执行的是计算机 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容量以上的磁盘启动

MBR与GPT:磁盘分区方式 - 知乎 (zhihu.com)

03_Linux系统概览

发展简史

image.png

Linux版本

image.png 发行版本常用的有:CentOS、Ubuntu、Debian linux

image.png

查看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应用领域

image.png

04_Linux系统结构

Linux系统四个主要部分

image.png

Linux体系结构

image.png

  • 内核是硬件和软件之间的中间层
  • 内核是一个资源管理器
  • 内核提供向系统的命令

内核漫画

image.png 底层:文件系统、文件管理

中间层:进程管理、进程运行的地方

上层:命令行工具、命令行输入项,用于交互使用的

进程之间允许通行

进程管理

  • 进程是正在执行的一个程序或命令
  • 进程有自己的地址空间,占用一定的系统资源
  • 一个CPU核同一时间只能运行一个进程
  • 进程由它的进程ID(PID)和它父进程的进程D(PPID)唯一识别

查看进程信息

image.png

  • 问题思考
  • 系统中运行的程序远远大于CPU的核数,那Liux系统是如何实现同时运行这么多程序的?

image.png

进程调度是指操作系统按某种策略或规则选择进程占用CPU进行运行的过程

进程状态

image.png

进程调度原则

  • 一个CPU核同一时间只能运行一个进程
  • 每个进程有近乎相等的执行时间
  • 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
  • 进程执行消耗时间和进程量成正比

进程的系统调用

image.png

Linux文件系统

image.png

  • Linux文件系统采用树状的目录结构

  • 最上层是根目录

  • 问题思考

  • Linux有这么多不同的文件系统,如何实现对用户提供统一调用接口的?

image.png

查看文件系统类型

image.png

image.png

文件读取流程

image.png

用户权限

image.png

查看用户信息

image.png

文件权限

image.png

用户权限操作

image.png

05_Linux软件包管理

image.png

上层与底层工具的区别 底层工具主要用于底层的软件包管理操作,例如软件包的安装、卸载、更新等,其主要特点包括:

-以命令行为主要界面; -操作灵活、功能强大; -操作相对复杂,需要较高的技术水平。

软件包管理工具

image.png

Debian APT常用命令

image.png

Debian配置软件源

image.png