Linux基础 | 青训营笔记

94 阅读3分钟

Linux:

Date: April 14, 2023


Linux 系统概览

Linux系统结构

Linux 系统一般有4个主要部分:内核、shell、文件系统、应用程序

内核是硬件与软件之间的中间层、内核是一个资源管理程序、内核提供一组面向系统的命令



进程管理

进程是正在执行的一个程序或命令

进程有自己的地址空间,占用一定的系统资源

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

进程由它的进程 ID (PID)和它父进程的进程 DD(PPID)唯一识别

image.png

如图liunx启动后,会有一个pid 0,即创世进程。之后,运行的其他进程都是它的子进程。

查看进程信息:

image.png

注:这里可以了解一波进程的信息。

问题思考:

系统中运行的程序远远大于 CPU 的核数,那 Linux 系统是如何实现同时运行这么多程序的?

通过进程调度来实现


进程调度:

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

image.png

image.png

对应上图中的S

  • R (TASK_ RUNNING),可执行状态
  • S(TASK_ INTERRUPTIBLE),可中断的睡眠状态
  • D(TASK_UNINTERRUPTIBLE),不可中断的睡眠状态
  • TTASK_STOPPED Or TASK_TRACED),暂停状态或跟踪状态
  • Z (TASK_DEAD- EXIT_ZOMBIE),退出状态,进程成为僵尸进程
  • × (TASK_DEAD-EXIT_DEAD),退出状态,进程即将被销毁

进程调度原则:

  • 一个CPU核同一时间只能运行一个进程
  • 每个进程有近乎相等的执行时间
  • 对于逻辑 CPU 而言进程调度使用轮询的方式执行,当轮询完成则回到第一个进程反复
  • 进程执行消耗时间和进程量成正比

进程的系统调用:

内核空间 (Kernal Space):系统内核运行的空间

用户空间 (User Space):应用程序运行的空间

image.png

理解:当某一个应用程序运行在运行空间的时候,它处于用户态。当它处于内核空间的时候,它处于内核态

比如ngix运行时,默认处于用户态, 当它需要调取页面文件时,就会发起IO请求,这IO请求我们称为一次系统的调用。之后,应用就会切换到内核态,从而有权限去读取硬件中存储的资源,然后会把相应资源返回给用户态的应用程序,然后应用程序就会从内核态再次转变为用户态,从而把页面文件传给调取应用的用户。

总结:

应用程序会频繁在用户态和内核态切换,从而读取硬件资源来完成相应任务。




文件系统:

Linux文件系统采用树状的目录结构,最上层是/目录

image.png

问题思考:

Linux 有这么多不同的文件系统,如何实现对用户提供统一调用接口的?

虚拟文件系统


虚拟文件系统(VFS)

  • 对应用层提供一个标准的文件操作接口
  • 对文件系统提供一个标准的文件接入接口

image.png

image.png

文件读取流程:

image.png

读取数据:

当ngix需要读取文件时,它先回去用户缓冲区中读取文件,若有缓存则会直接读取,如没有,

则ngix会发起一次系统IO时,nigx进程就会从用户态切换为内核态,内核进程会从内核缓冲区中读取

缓存,如果有那就通过CPU拷贝的方式拷回来,若没有,则会通过DMA拷贝的方式拷回数据。

缓冲区的作用:

减少对系统的调用次数,集中调用,提高系统的性能