Linux课程报告

一 Linux系统概念模型

  Linux,全称GNU/Linux,是一种免费使用和*传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。

  Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。

如下图所示:

Linux课程报告

 

 

 

二 进程管理

1  进程的描述

  进程管理是linux系统的核心部分,在Linux内核中??个数据结构struct task_struct来描述进程,直接或间接提供了进程相关的所有信息。struct task_struct的结构包括了进程的状态、进程双向链表的管理,以及控制台tty、?件系统fs的描述、进程打开?件的?件描述符files、内存管理的描述mm,还有进程间通信的信号signal的描述等内容。

2 进程的状态

  进程有如下的几种状态:

 

Linux课程报告

 

运行态:当进程正在被 CPU 执行,或已经准备就绪随时可由调度程序执行,则称该进程为处于运行状态。进程可以在内核态运行,也可以在用户态运行;

可中断睡眠状态:当进程处于可中断等待状态时,系统不会调度该进程执行。当系统产生一个中断或者释放了进程正在等待的资源,或者进程收到一个信号,都可以唤醒进程;

可中断睡眠状态:与可中断睡眠状态类似。但处于该状态的进程只有被使用 wake_up() 函数明确唤醒时才能转换到可运行的就绪状态;

暂停状态:当进程收到信号 Sigstop、Sigtstp、Sigttin 或 Sigttou 时就会进入暂停状态;

僵死状态:当进程已停止运行,但其父进程还没有询问其状态时,则称该进程处于僵死状态。

 

3 进程调度

 进程调度有几种常用方法:先来先服务,短作业优先,高优先权优先,高响应比优先

进程的切换大概有两步组成:1.切换页全局目录以安装一个新的地址空间。2.切换内核态堆栈和硬件上下文。 

 

 

三 中断管理

  CPU的指令中有危险的’特权指令‘,这些指令只有在’内核态‘才有权限执行(否则可能造成不可预料的灾难)。中断 就是从用户态进入内核态的主要方式。

中断分为外部中断和内部中断:

  外部中断一般指计算机外设发出的中断。在用户进程执行时,硬件中断信号到来,进入内核态,执行这个中断对应的中断服务例程;

  内部中断是指因为硬件出错或是运算出错所引起的中断。内部中断分为故障和陷阱。系统调用就是利用陷阱这种内部中断方式主动从用户态进入内核态的。

中断执行过程:

确定中断向量,利用idtr找到中断入口地址,确定特权级是否匹配,是否需要变更堆栈段,然后在栈中保存eflags、cs和eip的内容(保存在被中断进程的内核栈中)如果异常产生一个硬件出错码,则将它保存在栈中,然后装载cs和eip寄存器,执行中断处理程序。

中断返回:

用保存在栈中的值装载cs、eip和eflags寄存器。如果一个硬件出错码曾被压入栈中,那么弹出这个硬件出错码,检查中断前是否在内核态,如果不是,从栈中装载ss和esp,回退到用户态。

 

四 文件系统

  在LINUX系统中有一个重要的概念:一切都是文件。 其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

 

五 内存管理

  Linux 采用虚拟内存技术管理系统内存。虚拟内存技术即每个进程都有独立的进程地址空间。当进程要求运行的时,不是将他的全部信息装入内存,而是将其一部分先装入内存,另一部分暂时留在外存,进程在运行过程中,要使用信息不在内存时,发生中断,由操作系统将他们调入内存,以保证进程的正常运行。

Linux 内部的地址的映射过程为根据逻辑地址找到线性地址,再根据线性地址找到对应的物理地址。

Linux 内核通过 task_struct 结构体来管理进程,这个结构体包含了一个进程所需的所有信息。task_struct 中有一个结构体 mm_struct,描述了一个进程的整个虚拟地址空间。每个进程正是因为都有自己的 mm_struct,才使得每个进程都有自己独立的虚拟的地址空间。

六 影响Linux性能的因素

硬件层面:

  硬盘与内存互相读写时,硬盘的持续传输速度,随机小文件(4K)传输速度,延迟等。内存的容量,频率,时序,带宽,延迟等。CPU的频率,IPC(Instruction Per Clock),核心数,缓存等。以及程序可能用到的各种额外计算硬件如GPU,TPU,乃至各种专用集成电路ASIC的性能,延迟等。连接各硬件的PCI总线接口的速度也很可能成为瓶颈。以及网卡的吞吐量,网络的带宽和延迟等。

软件层面:

  操作系统对于各种硬件资源的调度的合理性,各硬件的驱动程序对硬件性能的发挥,在多核心CPU上,实现了多线程运行的程序会比单线程要快,使用的处理器指令集会影响性能表现,程序本身的代码的优化(包括编译器的优化)在数据的组织和计算处理上会影响性能表现。对于一个特定的程序,操作系统给它的优先级不同也会影响性能表现。它的性能瓶颈往往出现在这个程序会大量使用的资源上,比如cpu计算密集,或网络带宽敏感,或硬盘IO密集等

 

七  课程总结

  本学期通过学习这门课程,让我对Linux操作系统有了更深的了解。感谢孟老师和李老师的辛苦付出, 让我们学习到了很多。

Linux课程报告

上一篇:Linux 建立 TCP 连接的超时时间分析


下一篇:网络问题排查:裸金属服务器备机替换后 MAC地址更新后同子网内机器网络不通