Linux操作系统应用编程
上QQ阅读APP看书,第一时间看更新

1.5 文件与进程

在Linux操作系统中,所有静态的对象都属于“文件”的范畴,其主要目的是规范和简化上层应用程序的接口;所有动态的对象都属于“进程”的范畴。“文件”和“进程”是Linux操作系统中两个基本概念。

Linux 文件系统中的文件是数据的集合,文件是指文件系统中存储数据的对象。一个文件可以是空文件,但是它仍然为操作系统提供了其他信息。

进程是运行于自己的虚拟地址空间的程序。可以说,任何在Linux操作系统下运行的程序都是进程。进程是可运行程序在内存中的运行实例。进程是动态的,它有自己的生命周期和不同状态。在处理器执行机器代码时进程一直在变化。进程不但包括程序的指令和数据,而且包括程序计数器和CPU的所有寄存器以及存储临时数据的进程堆栈。所以,正在执行的进程包括处理器当前的一切活动。Linux 是一个多进程的操作系统,每个进程都有自己的权限和任务,某一进程的失败一般不会导致其他进程的失败。进程之间可以通过由内核控制的机制相互通信。

在进程的整个运行期间,它将会用到各种系统资源,如会用到CPU运行它的指令、会用到物理内存保存它的数据,它还可能打开和使用各种文件,直接或间接地使用系统中的各种物理设备。所以Linux操作系统内核必须了解进程本身的情况和进程所用到的各种资源,以便在多个进程之间合理地分配系统资源。

系统中最为宝贵的资源是CPU,因为一般情况下一个系统只有一个CPU。Linux是一个多进程的操作系统,所以其他的进程必须等到正在运行的进程释放CPU后才能运行。当正在运行的进程等待其他的系统资源时,Linux内核将取得CPU的控制权,并将CPU分配给其他正在等待的进程。内核中的调度算法决定将CPU分配给哪一个进程。

Linux操作系统中包括下面3种类型的进程。

(1)交互进程:该进程是由 Shell 控制和运行的,它既可以在前台运行,也可以在后台运行。

(2)批处理进程:该进程不属于某个终端,它被提交到一个队列中以便顺序运行。

(3)守护进程:该进程只有在需要时才被唤起并在后台运行,它一般在Linux启动时开始运行。