Linux基础(二)| 青训营笔记

168 阅读6分钟

1 课程目标

  • Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
  • 公司内部服务(TCE、FaaS、SCM)统一使用DebianLinux系统
  • 熟悉Linux基础指令,熟练运维前端常用服务 (Nginx,Node.js)
  • 加深对操作系统概念和实现的理解,夯实基础知识

2 Linux系统结构

Linux四个主要部分

  • 内核

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

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

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

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

Linux体系结构

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

image.png

Linux 的体系结构含义
应用程序层是构建在内核之上的各种应用程序,如图形用户界面、Web 服务器、数据库、邮件服务器等
用户层是用户与系统交互的界面,包括 shell、图形用户界面、命令行工具等。用户可以通过这些界面来与系统交互、操作文件和程序
内核层是 Linux 的核心,负责管理硬件和提供系统服务。它包括系统调用、设备驱动程序、网络协议栈、虚拟文件系统等
硬件层包括计算机硬件设备,如 CPU、内存、磁盘、网络等

用户空间和内核空间

  • 用户空间

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

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

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

    • 内核是硬件与软件之间的中间层
    • 内核是一个资源管理程序
    • 内核提供一组面向系统的命令
  • 应用程序发起 IO 请求的过程:

    1. 应用程序通过系统调用向内核发起 IO 请求。
    2. 内核收到请求后,检查请求是否合法。如果请求不合法,则内核会向应用程序返回错误码。
    3. 如果请求合法,内核会将请求加入到等待队列中,并将控制权返还给应用程序。
    4. 当 IO 设备完成请求后,会产生一个中断信号通知内核。
    5. 内核在中断处理程序中检查等待队列,将完成的请求从队列中移除,并将数据从内核空间复制到应用程序空间。如果有多个请求等待处理,内核会按照一定的策略进行调度,以确保公平性和效率。
    6. 当请求处理完成后,内核会向应用程序发送一个信号,通知请求已经完成。
    7. 应用程序收到信号后,继续执行自己的逻辑,处理已经完成的 IO 请求。
  • 系统调用过程定义

    • 系统调用(system call)是操作系统向用户程序提供服务的接口,是操作系统的核心组成部分之一。它可以被视为用户程序与操作系统之间的桥梁,用户程序通过调用系统调用来向操作系统请求服务。
  • 系统调用的过程

    1. 用户程序通过编写代码调用系统调用,指定调用的系统调用类型和参数。
    2. 系统调用会将控制权转移到操作系统内核,即从用户态切换到内核态。
    3. 在内核态中,操作系统会执行相应的系统调用,并根据调用的类型和参数进行相应的处理。
    4. 处理完成后,操作系统将返回结果给用户程序,即从内核态切换回用户态。

在这个过程中,由于切换操作的开销比较大,因此系统调用的执行速度相对比较慢,因此在设计程序时应尽量避免频繁的系统调用操作。

整体架构图

image.png

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

6 总结

  • Linux命令是更不熟悉的点,还需要自己多多学习
  • 对于Linux整体架构进行复习,印象更深刻
  • 很开心自己的学习有所产出,以后复习时候也可以拿自己文章来复习

参考