一、Linux系统概念模型

  系统内核概念模型可以分为进程管理,中断管理,内存管理,文件系统, 设备管理等模块。

1.进程管理

  进程是程序运行的过程,动态,有生命周期及运行状态。

  进程管理主要工作是:负责进程的创建,执行,终止等管理,当多任务系统中需要按照调度算法分配CPU的时间片。   

  进程的基本状态有:

    创建状态:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。

    就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行。

    执行状态:进程处于就绪状态被调度后,进程进入执行状态。

    阻塞状态:正在执行的进程由于某些事件而暂时无法运行,进程受到阻塞。

    终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。

  进程类型可分为:

    僵尸进程:父进程退出而子进程没有退出,那么这些子进程就没有父进程来管理了。这种进程称之为僵尸进程。

       交互进程:是由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行;

    批量处理进程:这种进程和终端没联系,是个进程序列;

    守护进程:在Linux系统启动时启动的进程,并在后台运行;

  进程调度算法

    1. 先来先去服务 2.短作业优先调度算法SJF  3.  轮转法 4. 多级反馈队列算法等

 

2.中断管理

  中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。中断又可分为四类:中断、故障、陷阱、终止。

 

3.内存管理

  内存管理主要工作是:实现虚拟内存和物理内存的映射,分配和回收内存。

  虚拟内存的管理:这是介于应用程序请求与物理内存之间的一个逻辑层。内核虚拟内存的管理/内核内存分配器,这是一个用来满足对内存的请求的组件。这种对内存的请求可能来自于内核,也可能来自于用户。

  物理内存管理(页管理):Linux内核管理物理内存是通过分页机制实现的。将整个内存划分成无数个4k大小的页,从而分配和回收内存的基本单位便是内存页了。

 

4.文件系统

  文件系统主要工作是:硬盘的扇区组织成文件系统,实现文件的读写等操作。

  文件系统是操作系统中负责存取和管理信息的程序模块,它用统一的方法管理用户和数据信息的存储、检索、更新、共享和保护,并为用户提供方便有效的文件使用和操作方法。 

 

5.设备管理

  设备管理主要工作是:寻址,访问,读,写设备配置信息和数据。

  Linux设备管理都把设备统一当作文件来处理,只要安装了驱动程序,任何用户都可以像使用文件一样来使用这些设备,而不必知道它们的具体存在形式。Linux把外部设备当作文件来处理,并根据数据交换的特性将外部设备分为三类:字符设备、块设备和网络设备。

 

例子-读写文件

  假设文件原本是存储在U盘中的二进制数据,Linux通过设备管理将U盘中的数据传输到内存中,内存管理将文件放到一个个内存页里面去,并在内存创建相应的映射表,当使用到虚拟内存管理时,也可以只读取部分数据进入内存,其它按照相应规则对应U盘。当读取到内存后,继续在内存管理下将部分需要的数据读入到cache里面。而相应的程序在进程管理下,运行对应的进程并进行相应的计算。假如,中途遇到更高优先级的程序需要CPU时,或者处理键盘信号时,就需要中断管理来保留现场,进程管理将进程从运行态切换到阻塞态在切换到就绪态,当优先级运行完成,或者完成键盘信息的读取后,进程管理继续运行程序。在完成运行后,就要按照内存管理从cache写回内存,再写回U盘。如果不在运行程序还需要进程管理终止进程,内存管理回收资源。

 

二、该系统模型中系统性的梳理影响应用程序性能表现的因素

代码到可执行代码的过程

    预处理:主要是编译器对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等;
    编译:把作为中间结果的汇编代码翻译成了机器代码,即目标代码,不过它还不可以运行;
    链接:链接是处理可重定位文件,把它们的各种符号引用和符号定义转换为可执行文件中的合适信息的过程。链接又分为静态链接和动态链接,

      静态链接:在程序的编译期完成的链接。是程序开发阶段程序员用静态链接器手动链接的过程

      动态链接:动态链接在程序的运行期完成的链接。动态链接分为可执行程序装载时动态链接和运行时动态链接。

 

可执行代码到程序运行的过程

    当运行一个应用程序时,首先系统要将程序代码从外存读取到内存:内核将程序读入内存,拷贝一个文件的段到一个虚拟的内存段。进程管理为新进程创建PCB。新进程为就绪态后,需要进程管理管理安排CPU按照规则在多个进程队列中运行程序。

 

影响应用程序性能表现的因素 

从上面的过程可以知道,影响应用程序性能表现的因素可以从以下几个层面分析:

  •   代码设计层面:代码优化,减少不必要的资源浪费。应该尽量按照硬件读取的策略使用内存。
  •   硬件层面:磁盘的转速,CPU的频率,内存频率,cache大小等。
  •   linux系统层面:linux的进程调度策略,内存的读取顺序,存储策略。

 

三、总结

  感谢孟老师和李老师辛苦的付出。通过这门课,让我很好的了解了Linux操作系统,让我可以不仅在微观层面,而且是在宏观层面认识Linux操作系统。这样使得我对Linux不仅知其然,也知其所以然。