Linux学习篇(四)———进程以及内核视角检测系统

 

 

以进程及内核视角检视系统



      在完成诸多日常编程任务时,程序员们习惯于以面向进程(process-oiened)的思维方式来考虑编程问题。然而,在研究本书后续所涵盖的各种主题时,读者有必要转换视角,站在内核的角度上来看问题。为突显二者间的差异,本书接下来会分别从进程和内核视角来检视系统。

      一个运行 系统通常会有多个进程并行其中。对进程来说,许多事件的发生都无法预期。

  • 执行中的进程不清楚自己对CPU的占用何时“到期”,系统随之又会调度哪个进程来使用CPU (以及以何种顺序来调度),也不知道自己何时会再次获得对CPU的使用。
  • 信号的传递和进程间通信事件的触发由内核统一协调,对进程而言,随时可能发生。
  • 进程不清楚自己在RAM中的位置,也就是说进程内存空间的某块特定部分如今到底是驻留在内存中还是被保存在交换空间(磁盘空间中的保留区域,作为计算机RAM的补充)里,进程本身并不知晓。
  • 进程也闹不清自己所访问的文件“居于”磁盘驱动器的何处,只是通过名称来引用文件而己。
  • 进程的运作方式堪称“与世隔绝”一进程间彼此 不能直接通信。
  • 进程木身无法创建出新进程,哪怕“自行了断”都不行。
  • 最后还有一点,进程也不能与计算机外接的输入输出设备直接通信。


      相形之下,内核则是运行系统的中枢所在,对于系统的一切无所不知、无所不能,为系统上所有进程的运行提供便利。

  • 由哪个进程来接掌对CPU的使用,何时“接任”,“任期”多久,者由内核说了算。
  • 在内核维护的数据结构中,包含了与所有正在运行的进程有关的信息。
  • 随着进程的创建、状态发生变化或者终结,内核会及时更新这些数据结构。
  • 内核所维护的底层数据结构可将程序使用的文件名转换为磁盘的物理位置。
  • 此外,每个进程的虚拟内存与计算机物理内存及磁盘交换区之间的映射关系,也在内核维护的数据结构之列。进程间的所有通信都要通过内核提供的通信机制来完成。
  • 响应进程发出的请求,内核会创建新的进程,终结现有进程。
  • 最后,由内核(特别是设备驱动程序)来执行与输入输出设备之间的所有直接通信,按需与用户进程交互信息。


      本书后续内容中会出现如下措辞,例如:“某进程可创建另一个进程”、 “某进程可创建管道”、“某进程可将数据写入文件”,以及“调用exit()以终止某进程”。请务必牢记,以上所有动作都是由内核来居中“调停”,上面的说法不过是 “某进程可以请求内核创建另一个进程”的缩略语,以此类推。
 

---------------------------------------------《A Linux and UNIX System Programming Handbook》---------------------------------------------------

猜你喜欢

转载自blog.csdn.net/qq_41899773/article/details/103911057