青训营笔记创作

63 阅读13分钟

计算机硬件

计算机五大基本单元

  • 控制器
  • 控制器是计算机的“大脑”,用于控制计算机中的各种操作。它接收指令,解码指令,调度指令,并且通过总线将指令发送到其他单元,以控制它们执行指令
  • 举例:计算机执行一个打印操作时,控制器会通过运算器进行相关运算,然后将需要打印的数据存储到存储器单元中,最后通过输出单元将数据输出到打印机中
  • 运算器
  • 运算器是计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。它由ALU(算术逻辑单元)和其他寄存器组成
  • 举例:计算机执行加法操作时,将需要计算的两个数存储在寄存器中,运算器会从寄存器中读取这两个数并进行加法运算,将结果存储到另一个寄存器中
  • 存储器单元
  • 存储器单元是计算机中的存储单元,用于存储程序和数据。它分为内存和外存两部分,内存一般指主存储器,外存一般指磁盘等外部存储设备
  • 举例:主存储器中存储着当前正在执行的程序和需要处理的数据,而辅助存储器则用于长期存储数据和程序
  • 输入单元
  • 输入单元是计算机中的输入设备,用于接收外部数据并将其传输到计算机系统中。例如,键盘、鼠标、扫描仪等都是输入单元
  • 举例:键盘就是一种输入单元,可以将输入的字符或指令送到计算机中进行处理
  • 输出单元
  • 输出单元是计算机中的输出设备,用于将计算机系统中的数据传输到外部环境中。例如,显示器、打印机、喇叭等都是输出单元
  • 举例:显示器、打印机等就是一种输出单元,可以将计算机处理后的数据显示出来或者打印出来

计算机操作系统

管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息。

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

在计算机启动时,最先被执行的是计算机 BIOS(Basic Input/Output System)或 UEFI(Unified Extensible Firmware Interface),它们是计算机的固件,也就是硬件上的软件。BIOS 或 UEFI 将会执行 POST(Power On Self Test,自检程序)以确认硬件设备是否正常。 接着,BIOS 或 UEFI 会寻找启动盘(通常是硬盘或者 USB 设备),读取启动盘中的引导程序。引导程序是一个小程序,它被放置在启动盘的特定位置,用于启动操作系统。 当引导程序被加载后,它会加载操作系统内核和初始化程序,并将控制权转移到操作系统内核中,启动操作系统的运行。操作系统会根据用户或者系统设置,加载相应的服务和应用程序,提供计算机的各种功能

BIOS与UEFI

BIOS和UEFI都是计算机的固件,也就是硬件上的软件。它们的作用是在计算机启动时初始化硬件,检测设备是否正常,然后启动操作系统。

BIOS(Basic Input/Output System,基本输入输出系统)是一种早期的固件,它在计算机启动时负责执行POST(Power On Self Test,自检程序),检测硬件设备是否正常,然后加载引导程序,启动操作系统。BIOS存储在主板上的闪存芯片中,由于其限制比较多,如容量小、功能简单、启动速度慢等,已逐渐被新一代的UEFI所取代。

UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)是BIOS的后继者,是一种新型的计算机固件,提供比BIOS更多的功能和扩展性。UEFI支持更大的启动盘和更多的文件系统,也支持更高级的安全和启动选项,同时启动速度更快。UEFI通常存储在主板上的闪存芯片中,并由厂商提供升级固件的方式,使其支持新的硬件和功能。

在操作系统安装时,需要选择与BIOS或UEFI兼容的启动方式。在BIOS时代,常用的启动方式是Legacy BIOS(传统BIOS)启动模式,而在UEFI时代,常用的启动方式是UEFI启动模式。通常情况下,UEFI启动方式更为推荐,因为它提供了更多的功能和扩展性,同时也支持传统BIOS启动方式,以兼容老的硬件设备。

Linux系统概览

Linux发展简史

  1. 1969年,Uniⅸ诞生于贝尔实验室
  2. 1984年,贝尔实验室将Unix商业化
  3. 1984年,Tanenbaum开发Minix操作系统用于教学并开放源码
  4. 1984年,Richard M.Stallman发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议
  5. 1991年,Linus Torvalds:受Minix影响实现初版的Linux内核
  6. 1992年,Liux内核以GPL协议发行V1.0

Linux版本

  • 内核版本
  • 发行版本

image.png

查看Linux系统内核版本

#方法1
uname -a
//显示系统的所有信息,包括内核版本号、操作系统发行版、主机名、处理器类型和架构等等
uname -r
//只显示当前Linux系统的内核版本号
​
#方法2
cat /proc/version
//cat /proc/version 命令用于显示当前 Linux 系统内核的版本号、编译者和编译日期。该命令读取 /proc/version 文件的内容并将其输出到终端上。
​
//该命令可以提供有关 Linux 内核的基本信息,包括内核版本、内核编译器和内核构建日期等。此外,它还提供了有关操作系统的其他信息,例如 GNU 工具链的版本和 CPU 架构信息。
​
//一些 Linux 系统中可能没有 /proc/version 文件,但是它们通常会提供其他方式来查看内核版本号,例如方法1的 uname -r 命令
复制代码

Linux系统应用领域

  • IT服务器(操作系统、虚拟化和云计算)
  • 嵌入式和智能设备
  • 个人办公桌面
  • 学术研究与软件研发

Linux系统结构

Linux四个主要部分

  • 内核

    • Linux操作系统的核心部分,它管理计算机硬件的资源,包括CPU、内存、磁盘、网络等。它是操作系统与硬件之间的接口,提供了一个操作系统所需的各种基本服务和功能,如进程管理、文件系统、内存管理、网络协议栈等。
  • shell

    • Shell是用户与Linux内核之间的接口,是一个命令解释器,提供了一种命令行界面供用户进行交互。在Shell中,用户可以输入命令和参数,执行脚本和程序,管理文件和目录等
  • 文件系统

    • 文件系统是Linux操作系统中用于管理文件和目录的机制,是用户与操作系统之间进行文件交互的接口。Linux支持多种文件系统,如ext4、NTFS、FAT32等。它们管理着磁盘上的文件和目录,并提供文件读写、权限控制等基本功能
  • 应用程序

    • 应用程序是运行在Linux操作系统上的各种软件,如文本编辑器、浏览器、视频播放器、编译器等。Linux操作系统拥有众多的应用程序,涵盖了各种领域,可以满足不同用户的需求

Linux体系结构

Linux 的体系结构是一个多层次的体系结构,包括硬件层、内核层、应用程序层和用户层。

用户空间和内核空间

  • 用户空间是指应用程序运行的空间,包括用户应用程序、库、各种进程、服务等。用户空间的特点是受限制的权限,应用程序只能访问自己所拥有的资源,如自己的进程空间、自己的内存、自己的磁盘空间等。同时,用户空间还包括了各种 shell,用户可以通过 shell 进行命令行操作,从而控制整个系统

  • 内核空间是指操作系统内核运行的空间,包括各种驱动程序、系统调用等。内核空间的特点是拥有系统级的权限,可以访问所有资源,包括 CPU、内存、磁盘、网络等。内核空间的代码通常运行在特权级别最高的模式下,可以直接操作硬件,因此内核空间的代码很少出错,一旦出错会导致整个系统崩溃

  • 用户空间和内核空间之间通过系统调用进行通信。应用程序可以通过系统调用请求内核提供服务,如读写文件、网络通信、进程管理等。内核收到系统调用后会根据请求提供相应的服务,并返回结果给应用程序

  • 内核是硬件与软件之间的中间层

  • 内核是一个资源管理程序

  • 内核提供一组面向系统的命令

image.png

  • 像中间层靠着门的企鹅就是在监视着80端口
  • 中间层两个肩扛管道的企鹅说明了,进程(企鹅)之间是允许进行管道通信的
  • FS这个标志楼梯证明进程能够直接访问底层的

Linux系统结构 --进程管理

在Linux中,进程是指正在执行的程序实例。每个进程都拥有自己独立的虚拟地址空间、寄存器集合和打开文件的描述符等资源。进程是Linux中最为重要的概念之一

进程的特点

  • 进程是正在执行的一个程序或命令

  • 进程有自己的地址空间,占用一定的系统资源

  • 一个CPU核同一时间只能运行一个进程

  • 进程由它的进程ID(PID)和它父进程的进程D(PPID)唯一识别 通过/proc文件系统中的相应文件来查看

进程命令

  • 查看启动的Nginx进程:

    • 可以使用 ps 命令查看正在运行的进程,配合 grep 命令可以过滤出含有关键字的进程
ps aux | grep nginx
复制代码
  • 查看某个进程:

    • 可以使用 ps 命令查看某个进程的信息
ps -p <pid>
top -p <pid> 命令查看指定进程的系统资源使用情况
复制代码
  • 关闭指定的进程:

    • 可以使用 kill 命令关闭指定进程。下面命令会向进程 ID 为 的进程发送终止信号,使其退出。
kill <pid>
复制代码
  • 全部进程动态实时视图:

    • 可以使用 top 命令查看所有进程的动态实时信息。会打印出一个实时更新的进程列表,包含 CPU 占用率、内存占用率等信息。可以使用快捷键 q 退出 top 命令
top
复制代码

image.png

  • 创建阶段:进程在创建时,会分配资源并初始化进程控制块(Process Control Block,PCB),包括进程标识、程序计数器、CPU寄存器、内存分配情况等。
  • 就绪阶段:进程在获得了运行所需的资源后,会被放置在就绪队列中等待CPU的分配。此时进程已经准备好运行了,只是还没有得到CPU的资源。
  • 运行阶段:当进程被调度到CPU上运行时,进程的代码被加载到CPU中执行,这时进程进入运行状态。
  • 阻塞阶段:在运行过程中,如果进程需要等待某些事件(如等待I/O操作完成),就会进入阻塞状态,此时进程会释放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而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复

  • 进程执行消耗时间和进程量成正比

进程的系统调用

  • 内核空间(Kernal Space):系统内核运行的空间
  • 用户空间(User Space):应用程序运行的空间

image.png

进程的系统调用是用户程序(用户态)与内核之间的一个接口,可以让用户程序获得内核提供的服务和功能。下面是进程的系统调用的基本流程:

  1. 用户程序发起系统调用,例如调用打开文件的系统调用 open()
  2. 程序经过用户态内核态切换后,进入内核态执行系统调用。
  3. 内核执行系统调用,并返回结果给用户程序,例如返回一个文件句柄。
  4. 程序再次经过内核态用户态切换后,回到用户态执行后续代码。

Linux --文件系统

  • 文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。

    • 不同的文件有不同的类型

image.png

  • Liux文件系统是采用树状的目录结构,

    • 最上层是 /(根)目录

image.png

Linux系统软件包管理器

  • 软件包

    • 通常指的是一个应用程序,它可以是一个GUI应用程序、命令行工具或(其他软件程序需要的)软件库
  • 软件包管理

    • 底层工具:主要用来处理安装和删除软件包文件等任务 上层工具:主要用于数据的搜索任务和依赖解析任务

上层与底层工具的区别

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

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

常见的底层工具包括:

  • DPKG:Debian Linux 系统的底层软件包管理工具;
  • RPM:Red Hat Linux 系统的底层软件包管理工具;
  • yum:基于 RPM 的高级包管理器;
  • apt:基于 dpkg 的高级包管理器。

常见的上层工具包括:

  • Synaptic:适用于 Debian 系统的上层软件包管理工具;
  • Yumex:适用于 Red Hat 系统的上层软件包管理工具;
  • Apper:适用于 KDE 桌面环境的上层软件包管理工具;
  • Gnome-Software:适用于 Gnome 桌面环境的上层软件包管理工具。

参考作者:2002XiaoYu
链接:juejin.cn/post/722186…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。