写在前面
我刚开始以为前端不需要学Linux的,学完这节课才发现这个很重要捏。
(Linux主打一个开源,所以至今为止发展的十分迅速)我很欣赏这种行为!!!
学习Linux 的价值
-
Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
-
公司内部服务(TCE、FaaS、SCM)统一使用DebianLinux系统
-
熟悉Linux基础指令,熟练运维前端常用服务 (Nginx,Node.js)
-
加深对操作系统概念和实现的理解,夯实基础知识
1.计算机硬件
- 控制器
控制器是计算机的“大脑”,用于控制计算机中的各种操作。它接收指令,解码指令,调度指令,并且通过总线将指令发送到其他单元,以控制它们执行指令 举例:计算机执行一个打印操作时,控制器会通过运算器进行相关运算,然后将需要打印的数据存储到存储器单元中,最后通过输出单元将数据输出到打印机中
- 运算器
运算器是计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。它由ALU(算术逻辑单元)和其他寄存器组成 举例:计算机执行加法操作时,将需要计算的两个数存储在寄存器中,运算器会从寄存器中读取这两个数并进行加法运算,将结果存储到另一个寄存器中
- 存储器单元
存储器单元是计算机中的存储单元,用于存储程序和数据。它分为内存和外存两部分,内存一般指主存储器,外存一般指磁盘等外部存储设备 举例:主存储器中存储着当前正在执行的程序和需要处理的数据,而辅助存储器则用于长期存储数据和程序
- 输入单元
输入单元是计算机中的输入设备,用于接收外部数据并将其传输到计算机系统中。例如,键盘、鼠标、扫描仪等都是输入单元 举例:键盘就是一种输入单元,可以将输入的字符或指令送到计算机中进行处理
- 输出单元
输出单元是计算机中的输出设备,用于将计算机系统中的数据传输到外部环境中。例如,显示器、打印机、喇叭等都是输出单元 举例:显示器、打印机等就是一种输出单元,可以将计算机处理后的数据显示出来或者打印出来
##2.计算机操作系统
操作系统层次结构:硬件之上,应用程序之下。 对上是对用户提供服务:(控制角度)
- 用户角度上,操作系统是一个控制软件
- 管理应用程序
- 为应用程序提供服务
- 杀死应用程序
对下(资源分配): - 资源管理
- 管理外设、分配资源
操作系统下的抽象:CPU<->进程,磁盘<->文件,内存<->地址空间
FQA:- 程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?
在计算机启动时,最先被执行的是计算机 BIOS(Basic Input/Output System)或 UEFI(Unified Extensible Firmware Interface),它们是计算机的固件,也就是硬件上的软件。BIOS 或 UEFI 将会执行 POST(Power On Self Test,自检程序)以确认硬件设备是否正常。
接着,BIOS 或 UEFI 会寻找启动盘(通常是硬盘或者 USB 设备),读取启动盘中的引导程序。引导程序是一个小程序,它被放置在启动盘的特定位置,用于启动操作系统。
当引导程序被加载后,它会加载操作系统内核和初始化程序,并将控制权转移到操作系统内核中,启动操作系统的运行。操作系统会根据用户或者系统设置,加载相应的服务和应用程序,提供计算机的各种功能
Linux版本
- 内核版本
- 发行版本
4.Linux系统结构
Linux四个主要部分
-
内核
Linux操作系统的核心部分,它管理计算机硬件的资源,包括CPU、内存、磁盘、网络等。它是操作系统与硬件之间的接口,提供了一个操作系统所需的各种基本服务和功能,如进程管理、文件系统、内存管理、网络协议栈等。
-
shell
Shell是用户与Linux内核之间的接口,是一个命令解释器,提供了一种命令行界面供用户进行交互。在Shell中,用户可以输入命令和参数,执行脚本和程序,管理文件和目录等
-
文件系统
文件系统是Linux操作系统中用于管理文件和目录的机制,是用户与操作系统之间进行文件交互的接口。Linux支持多种文件系统,如ext4、NTFS、FAT32等。它们管理着磁盘上的文件和目录,并提供文件读写、权限控制等基本功能
-
应用程序
应用程序是运行在Linux操作系统上的各种软件,如文本编辑器、浏览器、视频播放器、编译器等。Linux操作系统拥有众多的应用程序,涵盖了各种领域,可以满足不同用户的需求
内核图片
进程管理
进程命令
-
查看启动的Nginx进程:
可以使用 ps 命令查看正在运行的进程,配合 grep 命令可以过滤出含有关键字的进程
ps aux | grep nginx
复制代码
-
查看某个进程:
可以使用 ps 命令查看某个进程的信息
ps -p <pid>
top -p <pid> 命令查看指定进程的系统资源使用情况
复制代码
-
关闭指定的进程:
可以使用 kill 命令关闭指定进程。下面命令会向进程 ID 为 的进程发送终止信号,使其退出。
kill <pid>
复制代码
-
全部进程动态实时视图:
可以使用 top 命令查看所有进程的动态实时信息。会打印出一个实时更新的进程列表,包含 CPU 占用率、内存占用率等信息。可以使用快捷键 q 退出 top 命令
top
进程调度原则
-
一个CPU核同一时间只能运行一个进程
在多道程序设计中,CPU资源是必须被多个进程共享的。因为CPU核心数量是有限的,所以操作系统必须在多个进程之间进行调度,以便将CPU时间均匀地分配给它们。
-
每个进程有近乎相等的执行时间
当进程开始执行时,操作系统会根据进程的优先级和时间片大小进行调度。在进程执行的过程中,操作系统会监测进程的执行时间,并在进程的时间片用尽之前将其挂起,以便为其他进程腾出CPU时间
-
对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
操作系统通过轮询算法来进行进程调度。在轮询算法中,每个进程都被分配一个时间片,在时间片用尽之前,进程将一直运行。如果时间片用尽,则操作系统会将该进程挂起,并将CPU时间分配给下一个进程
-
进程执行消耗时间和进程量成正比
进程的执行时间与进程数量成正比。当系统中有更多的进程需要执行时,操作系统需要更多的时间来进行进程调度。这就导致了更多的上下文切换和调度时间,进而降低了系统的性能
简单命令
文件读取流程