Linux基础 3 | 青训营笔记

51 阅读2分钟

进程调度

  • 进程调度原则

    1. 一个CPU核统一时间只能运行一个进程
    2. 每个进程有近乎相等的执行时间
    3. 对于逻辑CPU来说进程调度采用轮询的方式执行,当轮询完成则回到第一个进程返复
    4. 进程执行消耗的时间和进程量成正比

操作系统在管理进程时,会创建一些对列,进程会依次放入到队列中。当CPU进行进程调度时,会从队列中依次的获取,当对列中的进程都被执行了,一次轮询结束并会再次回到开始的进程,进行下一轮调度。

轮询方式的好处是能保证所有的进程都能得到执行,不会因为某个进程的低优先级而一直得不到执行。

  • 进程的系统调用

image-20230425200229372.png

文件系统

文件系统是操作系统中负责管理持久数据的子系统,负责把用户的文件存储到磁盘硬件中,持久化的保存文件

image-20230425200801061.png

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

image-20230425201131947.png

虚拟文件系统(VFS)

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

image-20230425201631175.png

虚拟文件系统的存在抹平了不同文件类别之间的差异

文件读取流程

image-20230425202019209.png

当应用程序接收到用户的请求时,首先会从用户缓冲区中读取,查看缓冲区中之前是否命中过相同的文件是否存在数据缓存,如果存在则直接读取该文件数据。

如果不存在则需要发起一次系统调用,应用程序会从用户态切换到内核态,然后查看内核缓冲区中是否存在数据缓存,如果存在则会通过CPU把数据copy到用户缓冲区进行读取。如果依旧不存在则会通过DMA直接向磁盘发起读取文件的请求,然后通过DMA把文件数据copy到内核缓冲区,然后在通过CPU把数据copy到用户缓冲区。

应用程序获取数据后开始写入操作,通过CPU把数据copy到Socket缓冲区,然后在通过DMA把数据copy到网卡发送给用户。

实际上文件的读取流程还存在许多缓冲区,这些缓冲区的作用主要是减少对系统的调用次数,提高性能。