程序和进程介绍
#程序介绍 程序是一组计算机能够识别和执行的指令集合,通常以文件的形式存储在计算机的存储设备中。它是静态的,是计算机完成特定任务的一系列步骤的描述。例如,一个用 C 语言编写的计算两个整数之和的代码,经过编译后生成的可执行文件就是一个程序。 程序规定了计算机系统执行特定任务的逻辑和步骤。它定义了数据的处理方式、操作的顺序以及与用户或其他系统组件的交互方式。通过运行程序,计算机能够完成各种不同的任务,从简单的文本编辑到复杂的图形渲染、数据处理等。程序文件在存储设备上可以长期保存,直到被用户或系统删除。当满足一定条件时,程序可以被加载到计算机的内存中并由处理器执行。程序可以方便地在不同的存储介质之间复制,也可以在网络上进行传输,以实现软件的分发和共享。 #程序获取方式 1.通过安装程序安装 安装过程相对简单,通常只需要双击安装程序,然后按照提示逐步进行操作即可完成安装。安装程序会自动处理文件的复制、系统设置的修改、注册表的更新等一系列复杂的操作,用户无需手动干预。同时,安装程序还可以进行软件的卸载操作,方便用户在不需要软件时将其从系统中彻底删除。 2.直接下载不用安装的绿色软件 绿色软件通常是经过特殊处理的软件,它们不需要进行安装过程,直接下载解压后就可以运行。这类软件通常不会在系统注册表中写入大量信息,也不会对系统的其他设置进行修改,因此具有较好的可移植性,用户可以将其复制到不同的计算机上运行,而无需再次安装。 有些程序可以独立运行,有些程序运行需要依赖于操作系统中的函数库,绿色软件为了克服这种对系统环境的依赖,将程序运行所必需的函数库以及其他相关组件都打包在同一个文件夹中。这样一来,无论将这个绿色软件文件夹复制到哪一台计算机上,只要计算机的操作系统兼容该软件,用户直接找到软件的可执行文件,即可运行,无需像普通软件那样进行繁琐的安装步骤,也不用担心因为目标系统缺少某些函数库而无法使用。不过,也并不是所有绿色软件都能完全不依赖操作系统的函数库,一些基本的系统功能调用还是无法避免的,只是相对来说它减少了对额外安装的特定函数库等组件的依赖 ,从而提升了可移植性。 3.下载源码自己编译 需要用户具备一定的编程知识和编译环境的配置能力。下载源码后,用户需要根据软件的要求安装相应的编译工具和依赖库,然后按照特定的编译步骤将源码编译成可执行文件。这种方式的优点是用户可以根据自己的需求对源码进行修改和定制,同时也能更好地了解软件的内部结构和工作原理。 #进程介绍 1.进程的定义 进程是指计算机中正在运行的程序的实例,是操作系统进行资源分配和调度的基本单位。当一个程序被加载到内存中并开始执行时,它就成为了一个进程。 2.进程的属性 (1)进程的拥有人 进程拥有人是指创建该进程的用户。在大多数操作系统中,每个用户都有一个唯一的标识符(UID),进程拥有人的 UID 会被记录在进程的相关信息中,用于标识该进程属于哪个用户。进程拥有人决定了进程对系统资源的访问权限。不同用户在系统中具有不同的权限级别,例如,超级用户(通常具有 UID 为 0)具有最高的权限,可以执行系统中的任何操作,如修改系统配置文件、管理其他用户等;而普通用户则只能在其权限范围内进行操作,如访问自己的文件、运行自己有权限执行的程序等。进程以其拥有人的权限来访问系统资源,这有助于保证系统的安全性和稳定性,防止用户越权访问或修改其他用户的资源。 (2)进程的所属组 进程所属组是指进程所属的用户组。在操作系统中,用户可以被划分到不同的组中,每个组也有一个唯一的标识符(GID)。进程所属组的 GID 也会被记录在进程的相关信息中。一个用户可以属于多个组,但进程通常只会属于一个主要的组。进程所属组主要用于更精细地控制进程对资源的访问权限。除了根据进程拥有人的权限来控制访问外,还可以根据进程所属组的权限来进一步限制或开放对某些资源的访问。例如,在一个多用户的系统中,可能有一组用户需要共同访问某个特定的文件或目录,这时可以将这些用户加入到同一个组中,并为该组设置相应的权限,使得属于该组的进程可以按照组的权限来访问这些共享资源。 (3)进程标识符(PID) 是系统为每个进程分配的唯一数字标识,用于区分不同的进程。操作系统通过 PID 对进程进行各种操作,如发送信号、查询进程状态等。 (4)父进程标识符(PPID) 标识该进程的父进程的 PID。通过 PPID 可以构建进程的父子关系树,了解进程的创建层次结构。 (5)进程状态 反映进程当前所处的运行状态,常见的状态有运行(正在 CPU 上执行)、就绪(准备好运行,等待 CPU 分配时间片)、休眠(因等待某个事件而暂停执行,如等待 I/O 操作完成、等待信号等)、停止(被暂停,通常由外部信号或调试器引起)和僵死态(进程已经终止,但父进程尚未回收其资源,处于一种特殊的等待清理状态)。 (6)优先级 表示进程相对于其他进程的重要性和执行顺序的优先级。优先级高的进程通常会优先获得 CPU 时间片,以提高其执行效率。不同的操作系统有不同的优先级调度算法和优先级表示方式。 (7)内存使用信息 包括进程占用的虚拟内存大小、物理内存大小、内存页面的分配情况等。这些信息对于监控进程的内存使用情况、判断是否存在内存泄漏或内存不足等问题非常重要。 (8)打开文件描述符 进程在运行过程中可能会打开各种文件、网络套接字、管道等资源,这些资源通过文件描述符来标识和访问。进程的文件描述符表记录了它所打开的所有文件描述符及其对应的文件或资源的相关信息。 (9)信号处理方式 进程可以定义对各种信号的处理方式,如忽略信号、捕捉信号并执行特定的信号处理函数、采用默认的信号处理动作等。信号是操作系统用于通知进程发生特定事件的机制,进程根据自身的信号处理方式来响应不同的信号。 (10)资源限制 操作系统可以为进程设置各种资源限制,如 CPU 时间限制、内存使用限制、文件大小限制、进程数限制等,以防止进程过度占用系统资源,影响系统的稳定性和其他进程的正常运行。 (11)创建时间 记录进程创建的时间戳,用于了解进程的运行时长和系统的运行历史。 (12)上下文信息 包含了进程运行时的各种环境信息,如当前工作目录、环境变量等。这些信息对于进程的执行和资源访问有重要影响,例如,进程在加载配置文件或访问其他文件时,可能会根据当前工作目录和环境变量来确定文件的路径和其他相关参数。 3.Linux系统进程的状态 R(Running):正在运行或可运行(就绪)。 S(Sleeping):休眠(等待事件,如 I/O)。 D(Uninterruptible Sleep):不可中断休眠(通常等待硬件 I/O)。 T(Stopped):被信号(如 SIGSTOP)暂停。 Z(Zombie):僵尸进程(已终止但未被父进程回收)。 X(Dead):完全终止(不会在 ps 中显示)。