码迷,mamicode.com
首页 > 其他好文 > 详细

课程学习总结报告

时间:2020-07-09 15:24:02      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:alt   执行   切换   系统调用   src   如何   code   buffer   用户   

一、Linux系统模型

技术图片

 

 其中最重要的部分是内核,向上为系统调用和应用程序提供支持,向下对硬件资源和驱动程序进行管理。

 

二、传统I/O操作读写流程

  1.用户进程向 CPU 发起 read 系统调用读取数据,由用户态切换为内核态,然后一直阻塞等待数据的返回。
  2.CPU 在接收到指令以后对 DMA 磁盘控制器发起调度指令。
  3.DMA 磁盘控制器对磁盘发起 I/O 请求,将磁盘数据先放入磁盘控制器缓冲区,CPU 全程不参与此过程。
  4.数据读取完成后,DMA 磁盘控制器会接受到磁盘的通知,将数据从磁盘控制器缓冲区拷贝到内核缓冲区。
  5.DMA 磁盘控制器向 CPU 发出数据读完的信号,由 CPU 负责将数据从内核缓冲区拷贝到用户缓冲区。
  6.用户进程由内核态切换回用户态,解除阻塞状态,然后等待 CPU 的下一个执行时间钟。

  技术图片

 

 

三、标准文件I/O流程

  技术图片

 

 

  从磁盘读取文件 

  1.文件系统从disk上读取内容到FS Cache(文件系统缓冲)的bufferCache中

  2.通过VFS(虚拟文件系统)从FS Cache的Page cache中获取数据---FS Cache 把Buffer Cache组装成PageCache(即一个PageCache包含多个bufferCache)。

  3.当PageCache的内容进入到物理内存Page,进程通过调用操作系统函数Read即可以获取Page数据。

 

  写数据到磁盘

  1.进程开始写数据的时候通过页表拿到可写的Page开始写数据

  2.通过VFS将数据写入到PageCache。

  3.调用文件系统的函数将PageCache数据写入到Disk

 

四、对课程的认识 

  通过本课程的学习,更深入的了解了linux系统是如何运作的,经过几次实际上手跟踪调试,加深了对于linux下程序的运行流程的了解。

 在这里要感谢孟宁老师和李春杰老师的辛苦备课,即使是因为疫情导致无法面对面授课的情况下,依然能产出这样优质的网课,让我学到了很多。

课程学习总结报告

标签:alt   执行   切换   系统调用   src   如何   code   buffer   用户   

原文地址:https://www.cnblogs.com/baozhw/p/13273574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!