计算机硬件
计算机五大基本单元
- 控制器
- 控制器是计算机的“大脑”,用于控制计算机中的各种操作。它接收指令,解码指令,调度指令,并且通过总线将指令发送到其他单元,以控制它们执行指令
- 举例:计算机执行一个打印操作时,控制器会通过运算器进行相关运算,然后将需要打印的数据存储到存储器单元中,最后通过输出单元将数据输出到打印机中
- 运算器
- 运算器是计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。它由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发展简史
- 1969年,Uniⅸ诞生于贝尔实验室
- 1984年,贝尔实验室将Unix商业化
- 1984年,Tanenbaum开发Minix操作系统用于教学并开放源码
- 1984年,Richard M.Stallman发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议
- 1991年,Linus Torvalds:受Minix影响实现初版的Linux内核
- 1992年,Liux内核以GPL协议发行V1.0
Linux版本
- 内核版本
- 发行版本
查看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、内存、磁盘、网络等。内核空间的代码通常运行在特权级别最高的模式下,可以直接操作硬件,因此内核空间的代码很少出错,一旦出错会导致整个系统崩溃
-
用户空间和内核空间之间通过系统调用进行通信。应用程序可以通过系统调用请求内核提供服务,如读写文件、网络通信、进程管理等。内核收到系统调用后会根据请求提供相应的服务,并返回结果给应用程序
-
内核是硬件与软件之间的中间层
-
内核是一个资源管理程序
-
内核提供一组面向系统的命令
- 像中间层靠着门的企鹅就是在监视着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
复制代码
- 创建阶段:进程在创建时,会分配资源并初始化进程控制块(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):应用程序运行的空间
进程的系统调用是用户程序(用户态)与内核之间的一个接口,可以让用户程序获得内核提供的服务和功能。下面是进程的系统调用的基本流程:
- 用户程序发起系统调用,例如调用打开文件的系统调用
open()。 - 程序经过用户态内核态切换后,进入内核态执行系统调用。
- 内核执行系统调用,并返回结果给用户程序,例如返回一个文件句柄。
- 程序再次经过内核态用户态切换后,回到用户态执行后续代码。
Linux --文件系统
-
文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存到磁盘硬件中,持久化的保存文件。
- 不同的文件有不同的类型
-
Liux文件系统是采用树状的目录结构,
- 最上层是 /(根)目录
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…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。