Linux基础 | 青训营笔记

63 阅读8分钟

Linux基础 | 青训营笔记

课程介绍

为什么要学习Linux?

  1. Linux是现代化应用程序交付的首选呕吐,无论是部署在裸机、虚拟化还是容器化环境
  2. 字节内部服务(TCE、FaaS、SCM)统一使用Debian Linux系统
  3. 熟悉Linux基础指令有助于熟悉运维前端常用服务(Nginx,Node.js)
  4. 加深对操作系统概念和实现的理解,夯实基础知识

计算机硬件

计算机的五大功能部件:输入设备、输出设备、存储器、运算器、控制器

image.png 冯诺依曼结构特点:

  • 计算机由如图5部分组成
  • 运算器为中心
  • 指令和数据以同等地位存储在存储器,可按址寻访,CPU通过指令周期的不同阶段区分指令和数据
  • 指令和数据以二进制表示
  • 指令由地址码[ Ad(IR) ]和操作码[ Op(IR) ]组成
  • 首次提出“存储程序”的概念,基本工作方式是控制流驱动方式
  • 运算器成为“瓶颈”
  • 不具有层次结构

现代计算机

随着微电子技术的进步,同时计算机需要处理的信息也越来越多,大量I/O设备的速度和CPU的速度差距悬殊,因此需要更新换代计算机的组织结构以适应新的需求。计算机发展为了以存储器为中心,使I/O设备尽可能的绕过CPU,直接在I/O设备与存储器之间完成操作,以提高整体效率。其结构如下图所示:

image.png

计算机操作系统

操作系统功能:管理和控制计算机系统中的硬件与软件资源,用于用户与系统硬件之间传递信息 image.png

操作系统启动流程

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

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

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

Linux操作系统概览

Linux版本

Linux内核 + 常用软件 = Linux发行版本

image.png

相关命令

查看Linux系统内核版本:uname -a / cat /proc/version

查看Linux系统版本: cat /etc/os-release

Linux系统应用领域

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

Linux系统结构

Linux基本组成

  • Linux内核: Linux操作系统的核心代码,是Linux系统的最底层,提供了系统的核心功能并允许进程以一种有序的方式访问硬件。
  • Shell命令:Shell是一个命令行解释器,它使得用户能够与操作系统进行交互,负责接收用户命令,然后调用相应的应用程序,并根据用户输入的指令来反馈给用户指定的信息。
  • 文件系统:通常指称管理磁盘数据的系统,可将数据以目录或文件的型式存储。每个文件系统都有自己的特殊格式与功能。
  • 应用软件:包含桌面系统和基础的软件操作工具等。

Linux体系结构

Linux 的体系结构是一个多层次的体系结构,包括硬件层、内核层、应用程序层和用户层。 image.png 内核是硬件与软件之间的中间层,是一个资源管理重新,提供一组面向系统的命令

image.png

进程管理

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

进程相关命令:

  1. 查看启动的nginx进程:ps -ef | grep nginx
  2. 查看某个进程:top -p 93824(PID)
  3. 关闭指定进程:kill 93824(PID)
  4. 全部进程动态实时试图 top

进程调度

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

  1. 创建阶段:进程在创建时,会分配资源并初始化进程控制块(Process Control Block,PCB),包括进程标识、程序计数器、CPU寄存器、内存分配情况等。
  2. 就绪阶段:进程在获得了运行所需的资源后,会被放置在就绪队列中等待CPU的分配。此时进程已经准备好运行了,只是还没有得到CPU的资源。
  3. 运行阶段:当进程被调度到CPU上运行时,进程的代码被加载到CPU中执行,这时进程进入运行状态。
  4. 阻塞阶段:在运行过程中,如果进程需要等待某些事件(如等待I/O操作完成),就会进入阻塞状态,此时进程会释放CPU资源,直到等待的事件完成。
  5. 结束阶段:当进程完成了它的任务或发生错误时,就会进入终止(僵死)状态。此时系统会回收该进程所占用的资源,并从进程表中删除该进程,也说明了这个进程结束了

image.png 进程状态

  1. R(TASK_RUNNING):可执行状态
  2. S(TASK_INTERRUPTIBLE):可中断的睡眠状态
  3. D(TASK_UNINTERRUPTIBLE):不可中断的睡眠状态
  4. T(TASK_STOPPED/TASK_TRACED):暂停状态或跟踪状态
  5. Z(TASK_DEAD-EXIT_ZOMBIE):退出状态,进程成为僵尸进程
  6. X(TASK_DEAD-EXIT_DEAD):退出状态,进程即将被销毁

调度原则

  1. 一个CPU核同一时间只能运行一个进程
  2. 每个进程执行时间近乎相等
  3. 对于逻辑CPU而言,进程调度使用轮询方式进行
  4. 进程执行消耗时间和进程量成正比

进程的系统调用

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

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

  1. 用户程序发起系统调用。
  2. 程序经过用户态内核态切换后,进入内核态执行系统调用。
  3. 内核执行系统调用,并返回结果给用户程序。
  4. 程序再次经过内核态用户态切换后,回到用户态执行后续代码。

Linux文件系统

Linux一切皆文件,文件系统负责管理持久化数据的子系统,负责吧用户的文件存到磁盘硬件中。 Liux文件系统是采用树状的目录结构,最上层是 /(根)目录

image.png

虚拟文件系统VFS

功能:为应用层提供一个标准的文件操作接口,为文件系统提供一个标准的文件接入接口

image.png

文件系统相关命令:

  1. 报告文件系统磁盘空间利用率:df -T
  2. 挂载文件系统,不带任何参数运行会打印包含文件系统类型在内的磁盘分区信息:mount
  3. 查看文件夹下内容:ls
  4. 创建文件夹:mkdir demo
  5. 移动demo文件到/home下:mv demo /home
  6. 删除demo文件夹:rm -r demo
  7. 创建空文件:touch file.txt
  8. 复制文件:cp file.txt file_bak.txt

文件读取流程

image.png

用户权限

用户账号

  • 用户账号

普通用户账户:在系统中进行普通作业

超级用户账户:在系统中对普通用户和整个系统进行管理

  • 组账户

标准组:可以容纳多个用户

私有组:只有用户自己

文件权限

文件权限关于用户有三个概念:

  • 所有者:文件的所有者
  • 所在组:文件的所有者所在的组
  • 其他人:除文件所有者及所在组外的其他人

每个用户对于文件都有不同权限,包括读(R)、写(W)、执行(X)

image.png

用户权限相关命令:

  1. 查看当前登录用户信息:w
  2. 查看当前用户所属组:groups
  3. 查看用户的uid信息:id XXX image.png

Liunx软件包管理

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

  • 软件包管理

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

软件包管理工具

image.png