LInux总结

Posted 还差一点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LInux总结相关的知识,希望对你有一定的参考价值。

一. 精简的Linux系统概念模型

  1. 冯诺依曼体系结构:运算器、存储器、控制器、输入设备和输出设备。

  

 

 

  2. Linux系统概念模型主要由:进程管理、内存管理、中断和异常、文件系统等几部分组成

    2.1 进程管理:进程的创建、进程的初始化、fork系统调用、进程的切换

      2.1.1 进程的初始化和创建:

        start_kernel中的0号进程的初始化(硬编码),1号进程和2号进程的初始化。别的进程通过1号和2号进程调用_do_fork来完成。

      2.1.2 fork系统调用

      2.1.3 进程上下文的切换

 

 

    2.2 内存管理: 

      2.2.1 虚拟内存

        虚拟内存抽象了应用程序物理内存的细节,只允许物理内存保存所需的信息(按需分页),并提供了一种保护和控制进程间数据共享数据的机制。

      有了虚拟内存机制之后,每次访问可以使用更易理解的虚拟地址,让CPU转换成实际的物理地址访问内存,降低了直接使用、管理物理内存的门槛。

      2.2.2 段页机制:

        段页机制是操作系统管理内存的一种方式,简单的来说,就是如何管理、组织系统中的内存。要理解这种机制,需要了解一下内存寻址的发展历程。

    2.3 中断和异常

      2.3.1 中断信号的作用和中断信号的一般处理流程

      2.3.2 IO设备如何引起CPU中断

      2.3.3 CPU在硬件级处理中断

      2.3.4 Linux 内核软件级中断处理

      2.3.5 软中断、tasklet

    2.4 文件系统

      2.4.1 文件的逻辑结构,物理结构,目录等实现

      2.4.2 文件的存储空间管理,文件的系统调用

      2.4.3 虚拟文件系统VFS

      2.4.4 安装文件系统

      

 

 

 

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

  1. 进程管理

    进程的调度算法是否合理,进程之间的切换消耗是否过大。要根据不同的实际情况采用不同的调度算法,比如说IO繁忙型和CPU繁忙型都要采用不同的方式来进行调度。

  2. 内存管理

    内存主要是容量限制,Linux系统采用了物理内存和虚拟内存两种方式,虚拟内存虽然可以缓解物理内存的不足,但是占用过多的虚拟内存,应用程序的性能将明显下降,

    要保证应用程序的高性能运行,要保证足够的物理内存,避免占用虚拟内存过多的情况

    同时,采用页表机制和虚拟内存,根据局部性原理的cache命中率也对性能影响很大。

  3. 中断和异常

    中断处理是优先级最高的任务之一。中断通常由I/O设备产生,例如网络接口卡、键盘、磁盘控制器、串行适配器等等。中断处理器通过一个事件通知内核(例如,键盘输入、以太网帧到达等等)。

        它让内核中断进程的执行,并尽可能快地执行中断处理,因为一些设备需要快速的响应。它是系统稳定的关键。当一个中断信号到达内核,内核必须切换当前的进程到一个新的中断处理进程。

            这意味着中断引 起了上下文切换,因此大量的中断将会引起性能的下降。

  4. 文件系统

    Linux标准文件系统呈现出多种风格。如果我们没有特殊的需要,就可以直接使用普通的Ext2文件系统。如果我们想避免系统崩溃后冗长的文件系统检测,就可以切换到Ext3文件系统。

    如果我们不得不处理许多的小文件,ReiserFS是最好的选择。

    不同的文件系统同样会影响程序的性能。

  5. 程序本身

    程序本身设计的缺陷和代码的编写规范同样也会对程序性能造成很大的损害。

三. 致谢

  通过对本门课程的学习,我对Linux内核的工作机制和工作原理有了更加深入的理解,完成的几个实验也让我收益良多,让我对linux的强大之处了解的更多,同时也明白自己对linux了解的不足之处。

  最后,感谢孟宁老师和李春杰老师这一学期的辛勤教学。

以上是关于LInux总结的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习总结(80)—— 开发人员最常用的 Linux 命令总结

Linux学习总结(80)—— 开发人员最常用的 Linux 命令总结

Linux 学习总结(88)—— Linux 系统中的 Swap 交换分区总结

Linux 学习总结(83)—— Linux 环境变量总结

Linux 学习总结(83)—— Linux 环境变量总结

Linux阶段总结