日期:2014-05-16  浏览次数:20542 次

[linux]进程管理,内存管理,文件系统,系统管理,网络操作概述

进程/线程?

???进程概念:进程/线程是计算机中最小的执行单元,是实现分时多用户操作系统的基础;那么一个进程在linux中是如何实现的呢?如果熟悉内核就知道内核就是一堆的数据结构,一个进程的所有状态就包含在task_struck这个结构中:存放进程的状态,文件/socket描述符,程序地址(stask/heap);时间片;ddl地址;权限信息等等信息;如下图:展示了进程在内存中的表示:

????????????????

?

?

?

? linux中的进程就是一个链表;进程和子进程有父子关系,进程号为1的进程为init; 进程创建子进程是运用:写时复制的原则;

?? 线程概念:?一个进程可以包含许多线程;一个进程的各线程可以方便共享内存;线程创建时只创建一个属于本线程的栈空间;

?? 命令: ps -ef ; ps -eLf ;pstree; pidstat;

?? 进程的状态:running;stopped,uninterruptible; interruptitble; sleeping;zombie;

?? 进程的销毁:进程销毁时会释放所有的数据结构(释放文件/socket句柄,内存等等),释放完后会发送一个信号给父进程,此时子进程为僵尸状态;父进程回应此信号,子进程才彻底销毁;如果父进程没有响应此信号,子进程状态会变成僵尸状态;

? ? 进程的调度: linux 是抢占式的调度策略,即正在cpu上运行的进程是随时可以被其他进程抢占的。 那么linux是如何调度进程是非常重要的;linux内核依据进程的优先级(实时优先级)和进程是属于cpu敏感还是I/O敏感型的分配不同长短的时间片; 可以说进程的调度策略是动态智能化的;进程调度的算法时间复杂度是O(1),通过为进程的不同的优先级创建对应的数组,即一个优先级对应一个数组;相同的优先级用队列存储,并有一个二进制位图来常量时间从数组中查找到将要调度的优先级队列。巧妙的用空间换取时间,最大的提高调度性能。

上下文切换

是指进程/线程的上下文切换(context switch) ; 上下文切换由linux内核完成将当前正在运行的进程上下文信息从寄存器中卸载下来到进程堆栈中暂存,然后Load新的进程到寄存器,高速缓存中开始执行。所以说上下文切换频繁是最影响程序的性能的因素之一。?如下图:

??????????????


?
?

?

降低上下文切换频率是提高进程性能的关键; 对于我们的网络服务器来说,大量的客户请求随时都大量涌入服务器,cpu频繁响应网络中断会对我们的应用程序性能产生极大的影响。 如何避免频繁的上下文切换呢? 除了提高进程的优先级外; smp内核提供了亲和度这一技术,将网络中断亲和到一个CPU上去。 这样频繁的中断就不会干扰其他CPU上的应用进程的执行;