Linux学习05——进程管理与控制

本文详细介绍了Linux中的进程管理与控制,包括进程的概念、状态转换、PCB组织、进程创建、多进程并发执行、进程终止、信号机制以及守护进程等内容。通过实例分析了进程的创建、终止、调度以及信号的发送与接收,强调了进程与程序的区别,展示了如何编写多进程并发程序。此外,还探讨了守护进程的创建步骤和系统调用在进程管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

学习目标:

  • 理解逻辑流、并发流基本概念
  • 理解进程概念、结构与描述
  • 理解进程基本状态及状态转换关系图,了解进程PCB组织,分辨进程与程序的区别与联系
  • 掌握利用进程创建、程序加载、进程终止、进程撤销进行多进程并发编程基本方法
  • 理解多进程并发执行特征,掌握程序并发运行的基本分析方法
  • 理解信号机制与应用,掌握利用信号机制编程基本框架
  • 理解守护进程概念,了解应用编程方法
  • 进程基本概念(属性、结构、组织、基本状态与转换)
  • 进程创建与程序加载
  • 多进程并发特征
  • 进程等待、终止、回收 非本地跳转与应用
  • 信号机制及应用
  • 守护进程编程

5.1 逻辑控制流和并发流

逻辑控制流

  • 逻辑流:在多进程运行环境下,一个程序(或进程)按程序员意图,从main函数开始,一个一个语句,一条一条指令执行,执行轨迹为一系列程序计数器(PC)的值,给人一种每个程序都独占处理器的假象,而一般整个系统可能仅有一个CPU,各进程轮流执行,我们称进程为一个逻辑流
  • 实际上,每个进程的执行过程是不连续的,它们交替使用处理器
  • 处理器在不同进程间切换有两种原因:
  1. 主动放弃CPU:如进程执行耗时的I/O操作时(比如执行C语言的scanf语句)
  2. 进程被动放弃CPU:比如本次分配给进程的时间配额已经用完,或有紧迫程度更高的任务要执行,操作系统强行夺走CPU
  • CPU控制发生转移的时机:一般都在中断响应之时,因为只有这个节骨眼操作系统能介入控制,中断有外部中断、时钟中断等
  • 逻辑流示例:进程、中断(异常)处理程序、信号处理程序、线程和Java进程。

并发概念

  •  并发:指多个活动在同一时间段内同时进行。
  1. 日常生活中并发:日常生活中普遍存在,也是操作系统最基本的特征。
  2. 计算机系统中并发:体现为多任务、多进程、多线程的并发执行
  • 并发有何用途
  1. 操作系统的多任务管理能力,使我们能够很好地驾驭对并发活动的复杂管理,开发出各种功能强大的信息管理系统、网络应用、购物平台;
  2. 充分发挥计算机硬件系统强大的处理能力,满足信息查询、网络购物等应用需求

并发流及相关概念

  • 并发流:一个逻辑流的执行在时间上与另一个流存在重叠情况,这两个流被称为并发地运行,生命周期存在重叠的2个进程是并发流,或称并发进程。
  • 并发(concurrency):多个流并发地执行的一般现象
  • 多任务(multitasking):一个进程和其他进程轮流运行的概念
  • 时间片(time slice) :每次分配给一个进程的执行时间称之为时间片(time slice),进程也因此划分为多个时间分片(time slicing)。
  • 判断方法:某种可能的执行模式在时间上存在重叠,它们就是并发流。

并发与并行

  •  并发流:如果两个流在时间上重叠,那么它们就是并发的,即使它们是运行在同一个处理器上的。
  • 并行流:如果两个流同一时刻运行在不同的处理器核或者计算机上,那么我们称它们为并行流(parallel flow),并行流在某段时间内同时执行。
  • 并行流是并发流的一个真子集。

5.2 进程的概念

5.2.1 进程概念、结构与描述

进程

  • 不严格的定义:进程是正在执行中的程序
  • 较为严格的定义:进程是程序在一个独立数据集上的执行过程。
  • 示例: Shell窗口、Linux 命令执行过程
  • Linux系统进程家庭: Linux允许多个用户同时登录系统。每个用户可以同时运行许多个程序,或者同时运行同一个程序的许多个实例,每个程序运行实例都是一个进程。系统本身也运行着一些管理系统资源和控制用户访问的程序

进程结构

作为程序执行过程的进程,至少需包含三项内容:程序代码、数据集和进程控制块(PCB, Process Control Block)

  • 程序代码:一般是一个包括main函数的可执行程序,程序装载到内存,进程才能启动
  • 数据集:进程的处理对象,可认为是变量内容,保存初始化信息、环境变量、命令行参数和文件的数据
  • PCB:保存程序代码、数据变量地址、进程其他属性,PCB是进程存在的唯一标志,以后操作系统就通过PCB来对进程实施管理和控制

进程属性(保持在PCB中)

 (1)进程描述信息:        

  • 进程号(PID)        
  • 用户标识          
  • 用户组标识          
  • 进程族亲信息:父进程标识、兄弟进程标识

(2)进程控制信息          

  • 进程状态          
  • 调度信息:优先级、剩余时间片和调度策略          
  • 记时信息:CPU使用时间等          
  • 通信信息:未处理信号、管道、信号量、消息队列、共享内存等

(3)进程资源信息        

  • 存储器地址        
  • 打开文件的信息

(4)CPU现场信息        

  • 当前进程CPU寄存器副本:程序计数器PC、通用寄存器、                                              
  • 标识寄存器FLAGS

PCB实例(Linux任务结构体:task_struct)

5.2.2 进程的基本状态及状态转换

一般根据CPU对资源拥有情况,定义三种基本状态:

  • 就绪状态(ready state)。进程已分配到除CPU以外的所有必要资源,只要获得CPU,便可立即执行,该状态为就绪状态
  • 运行状态(也称执行状态, running state):进程已包括CPU在内的所有运行所需资源,正在执行中
  • 阻塞状态(blocked state):正在执行的进程因请求资源、等待事件发生、等待I/O等原因,而暂时无法继续执行时,进入阻塞状态

实际操作系统设计中,往往还需增加2个状态:

  • 创建状态:正在创建且尚未完成创建过程的进程(处于胎儿期)所处的状态称为创建状态
  • 终止状态:进程终止后并不立即将其清理,而是让其进入终止状态。

5.2.3 对进程PCB进行组织

Linux系统以双向链表、树形链表等多种形式进行组织:

(1)双向链表队列

  • 根据进程状态将进程PCB按双向链表组织成多个双向链表,
  • Linux用prev_task和next_task两个指针来构建进程队列
  • 可设置一个就绪队列和多个阻塞队列,每种等待事件设置一个等待队列
  • 好处:方便快速取得队列中第一个进程PCB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值