Linux基础|青训营笔记

81 阅读7分钟

写在前面

我刚开始以为前端不需要学Linux的,学完这节课才发现这个很重要捏。

(Linux主打一个开源,所以至今为止发展的十分迅速)我很欣赏这种行为!!!

学习Linux 的价值

  • Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境

  • 公司内部服务(TCE、FaaS、SCM)统一使用DebianLinux系统

  • 熟悉Linux基础指令,熟练运维前端常用服务 (Nginx,Node.js)

  • 加深对操作系统概念和实现的理解,夯实基础知识

1.计算机硬件

41f9d64c2eaf039cb9edfd94198304f.png

  • 控制器

控制器是计算机的“大脑”,用于控制计算机中的各种操作。它接收指令,解码指令,调度指令,并且通过总线将指令发送到其他单元,以控制它们执行指令 举例:计算机执行一个打印操作时,控制器会通过运算器进行相关运算,然后将需要打印的数据存储到存储器单元中,最后通过输出单元将数据输出到打印机中

  • 运算器

运算器是计算机中的算术和逻辑单元,用于执行各种算术和逻辑运算。它由ALU(算术逻辑单元)和其他寄存器组成 举例:计算机执行加法操作时,将需要计算的两个数存储在寄存器中,运算器会从寄存器中读取这两个数并进行加法运算,将结果存储到另一个寄存器中

  • 存储器单元

存储器单元是计算机中的存储单元,用于存储程序和数据。它分为内存和外存两部分,内存一般指主存储器,外存一般指磁盘等外部存储设备 举例:主存储器中存储着当前正在执行的程序和需要处理的数据,而辅助存储器则用于长期存储数据和程序

  • 输入单元

输入单元是计算机中的输入设备,用于接收外部数据并将其传输到计算机系统中。例如,键盘、鼠标、扫描仪等都是输入单元 举例:键盘就是一种输入单元,可以将输入的字符或指令送到计算机中进行处理

  • 输出单元

输出单元是计算机中的输出设备,用于将计算机系统中的数据传输到外部环境中。例如,显示器、打印机、喇叭等都是输出单元 举例:显示器、打印机等就是一种输出单元,可以将计算机处理后的数据显示出来或者打印出来

##2.计算机操作系统

1683773694813.png

操作系统层次结构:硬件之上,应用程序之下。 对上是对用户提供服务:(控制角度)

  • 用户角度上,操作系统是一个控制软件
  • 管理应用程序
  • 为应用程序提供服务
  • 杀死应用程序
    对下(资源分配):
  • 资源管理
  • 管理外设、分配资源

操作系统下的抽象:CPU<->进程,磁盘<->文件,内存<->地址空间

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

image.png

在计算机启动时,最先被执行的是计算机 BIOS(Basic Input/Output System)或 UEFI(Unified Extensible Firmware Interface),它们是计算机的固件,也就是硬件上的软件。BIOS 或 UEFI 将会执行 POST(Power On Self Test,自检程序)以确认硬件设备是否正常。

接着,BIOS 或 UEFI 会寻找启动盘(通常是硬盘或者 USB 设备),读取启动盘中的引导程序。引导程序是一个小程序,它被放置在启动盘的特定位置,用于启动操作系统。

当引导程序被加载后,它会加载操作系统内核和初始化程序,并将控制权转移到操作系统内核中,启动操作系统的运行。操作系统会根据用户或者系统设置,加载相应的服务和应用程序,提供计算机的各种功能

Linux版本

  • 内核版本
  • 发行版本

image.png

4.Linux系统结构

Linux四个主要部分

image.png

  • 内核

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

  • shell

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

  • 文件系统

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

  • 应用程序

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

内核图片 image.png

进程管理

image.png

进程命令

  • 查看启动的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

进程调度原则

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

    在多道程序设计中,CPU资源是必须被多个进程共享的。因为CPU核心数量是有限的,所以操作系统必须在多个进程之间进行调度,以便将CPU时间均匀地分配给它们。

  • 每个进程有近乎相等的执行时间

    当进程开始执行时,操作系统会根据进程的优先级和时间片大小进行调度。在进程执行的过程中,操作系统会监测进程的执行时间,并在进程的时间片用尽之前将其挂起,以便为其他进程腾出CPU时间

  • 对于逻辑CPU而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复

    操作系统通过轮询算法来进行进程调度。在轮询算法中,每个进程都被分配一个时间片,在时间片用尽之前,进程将一直运行。如果时间片用尽,则操作系统会将该进程挂起,并将CPU时间分配给下一个进程

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

    进程的执行时间与进程数量成正比。当系统中有更多的进程需要执行时,操作系统需要更多的时间来进行进程调度。这就导致了更多的上下文切换和调度时间,进而降低了系统的性能

简单命令

image.png

文件读取流程

image.png