linux进程管理代码分析

linux进程管理代码分析

ID:13289599

大小:161.50 KB

页数:26页

时间:2018-07-21

linux进程管理代码分析_第1页
linux进程管理代码分析_第2页
linux进程管理代码分析_第3页
linux进程管理代码分析_第4页
linux进程管理代码分析_第5页
资源描述:

《linux进程管理代码分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux进程管理代码分析概念:进程执行操作系统的任务。程序是存放在磁盘上的包括一系列机器代码指令和数据的可执行的映像,因此是一个被动的实体。进程可以看作是一个执行中的计算机程序。它是动态的实体,在处理机执行机器代码时不断改变。进程包括处理程序的指令和数据,以及程序计数器、其他CPU的寄存器和包括临时数据(例如:例程参数、返回地址和保存的变量)的堆栈。当前执行的程序,或者说进程,包括微处理器中所有的当前活动。进程是操作系统的最小调度单位。LINUX系统是分时多用户系统,它有多进程系统的特点,CPU按时间片分配给各个用户使用,而在实质上应该说CPU按时间片分配给各个进程使用,每个进程都有自

2、己的运行环境以使得在CPU做进程切换时保存该进程已计算了一半的状态。进程的切换包括三个层次:(1)用户数据的保存:包括正文段(TEXT),数据段(DATA,BSS),栈段(STACK),共享内存段(SHAREDMEMORY)的保存。(2)寄存器数据的保存:包括PC(programcounter,指向下一条要执行的指令的地址),PSW(processorstatusword,处理机状态字),SP(stackpointer,栈指针),PCBP(pointerofprocesscontrolblock,进程控制块指针),FP(framepointer,指向栈中一个函数的local变量的首地址)

3、,AP(augumentpointer,指向栈中函数调用的实参位置),ISP(interruptstackpointer,中断栈指针),以及其他的通用寄存器等。(3)系统层次的保存:包括proc,u,虚拟存储空间管理表格,中断处理栈。以便于该进程再一次得到CPU时间片时能正常运行下去。多进程系统的一些突出的特点:l并行化一件复杂的事件是可以分解成若干个简单事件来解决的,这在程序员的大脑中早就形成了这种概念,首先将问题分解成一个个小问题,将小问题再细分,最后在一个合适的规模上做成一个函数。在软件工程中也是这么说的。如果我们以图的方式来思考,一些小问题的计算是可以互不干扰的,可以同时处理,而

4、在关键点则需要统一在一个地方来处理,这样程序的运行就是并行的,至少从人的时间观念上来说是这样的。而每个小问题的计算又是较简单的。l简单有序这样的程序对程序员来说不亚于管理一班人,程序员为每个进程设计好相应的功能,并通过一定的通讯机制将它们有机地结合在一起,对每个进程的设计是简单的,只在总控部分小心应付(其实也是蛮简单的),就可完成整个程序的施工。l互不干扰这个特点是操作系统的特点,各个进程是独立的,不会串位。l事务化比如在一个数据电话查询系统中,将程序设计成一个进程只处理一次查询即可,即完成一个事务。当电话查询开始时,产生这样一个进程对付这次查询;另一个电话进来时,主控程序又产生一个这样

5、的进程对付,每个进程完成查询任务后消失.这样的编程多简单,第26页共26页只要做一次查询的程序就可以了。Linux是一个多进程的操作系统,进程是分离的任务,拥有各自的权利和责任。如果一个进程崩溃,它不应该让系统的另一个进程崩溃。每一个独立的进程运行在自己的虚拟地址空间,除了通过安全的核心管理的机制之外无法影响其他的进程。在一个进程的生命周期中,进程会使用许多系统资源。比如利用系统的CPU执行它的指令,用系统的物理内存来存储它和它的数据。它会打开和使用文件系统中的文件,会直接或者间接使用系统的物理设备。如果一个进程独占了系统的大部分物理内存和CPU,对于其他进程就是不公平的。所以Linux

6、必须跟踪进程本身和它使用的系统资源以便公平地管理系统中的进程。系统最宝贵的资源就是CPU。通常系统只有一个CPU。Linux作为一个多进程的操作系统,它的目标就是让进程在系统的CPU上运行,充分利用CPU。如果进程数多于CPU(一般情况都是这样),其他的进程就必须等到CPU被释放才能运行。多进程的思想就是:一个进程一直运行,直到它必须等待,通常是等待一些系统资源,等拥有了资源,它才可以继续运行。在一个单进程的系统中,比如DOS,CPU被简单地设为空闲,这样等待资源的时间就会被浪费。而在一个多进程的系统中,同一时刻许多进程在内存中,当一个进程必须等待时,操作系统将CPU从这个进程切换到另一

7、个更需要的进程。我们组分析的是Linux进程的状态转换以及标志位的作用,它没有具体对应某个系统调用,而是分布在各个系统调用中。所以我们详细而广泛地分析了大量的原码,对进程状态转换的原因、方式和结果进行了分析,大致总结了整个Linux系统对进程状态管理的实现机制。Linux中,每个进程用一个task_struct的数据结构来表示,用来管理系统中的进程。Task向量表是指向系统中每一个task_struct数据结构的指针的数组。这意味着

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。