操作系统里的进程

进程

1.进程概念

1.1概念

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;同时,在操作系统内部,进程又是操作系统进行资源分配的基本单位

(强调程序本身不是进程,程序只是被动实体,如存储在磁盘上包含一系列指令的文件(经常称为可执行文件);进程是活动实体,具有一个程序计数器用于表示下个执行命令和一组相关资源,当一个可执行文件被加载到内存时,这个程序就成为进程)

1.2进程状态 (五个状态)

新的(new):进程正在创建
运行(running):指令正在执行
等待(waiting):进程等待发生某个事情(如I/O完成或收到信号)
就绪(ready):进程等待分配器处理
终止(terminated):进程已经完成执行

在这里插入图片描述

1.3进程控制块

操作系统内的每个进程表示,采用进程控制块(PCB),也成为任务控制块,它包含了许多与某个特定进程相关信息:进程状态,程序计数器,CPU寄存器,CPU调度信息,内存管理信息,记账信息,I/O状态信息。

在Java语言中,我们可以通过类/对象来描述这一特征:

// 以下代码是 Java 代码的伪码形式,重在说明,无法直接运行
class PCB {
    // 进程的唯一标识 —— pid;
    // 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
   // 分配给该资源使用的各个资源
    // 进度调度信息
}

这样,每一个 PCB 对象,就代表着一个实实在在运行着的程序,也就是进程。
操作系统再通过这种数据结构,例如线性表、搜索树等将 PCB 对象组织起来,方便管理时进行增删查改的操作。

2.进程调度

多道程序设计的目标是,无论何时都有进程运行,从而最大化CPU利用率。分时系统的目的是在进程之间快速切换CPU,以便用户在程序运行时能与其交互。为了满足这些目标,进程调度器选择一个可用进程(可能从多个可用进程集合中)到CPU上执行。

2.1调度队列

进程在进入系统时,会被加到作业队列,这个队列包括系统内的所有进程。
驻留在内存中的,就绪的,等待运行的进程会保存在就绪队列,当然系统不止这两个队列,还有其他队列,主要列举这两个。

2.2调度程序

进程选择通过适当调度器调度程序来执行。主要分为长期调度程序(long-term-scheduler)或作业调度程序(job schedule):从缓冲池中选择进程,加到内存,方便执行,进入ready状态;短期调度程序(short-term-schedule)或CPU调度程序(CPU schedule):从准备执行的进程中选择进程,并分配CPU,从ready状态进入running状态,这两种调度程序主要区别是执行频率。

2.3上下文切换

当系统操作发生中断的时候,系统需要保存当前在CPU上的进程的上下文,以便在处理后能够恢复上下文,即先挂起进程,再恢复进程。进程上下文采用进程PCB表示,包括CPU寄存器的值,进程状态和内存管理信息等。通过执行状态保存,保存CPU当前状态(包括内核模式和用户模式);之后状态修复重新开始运行。

切换CPU到另一个进程需要保存当前进程状态和恢复另一个进程状态,这个任务称为上下文切换,当进行上下文切换时,内核会将旧程序状态保存在其PCB中,然后加载经调度而要执行的新进程的上下文。上下文切换的时间是纯粹的开销,因为在切换时系统并没有做任何有用工作。

3.进程间通信

进程是操作系统进行资源分配的最小单位,这意味着各个进程互相之间是无法感受到对方存在的,这就是操作系统抽象出进程这一概念的初衷,这样便带来了进程之间互相具备”隔离性(Isolation)“。

但现代的应用,要完成一个复杂的业务需求,往往无法通过一个进程独立完成,总是需要进程和进程进行配合地达到应用的目的,如此,进程之间就需要有进行“信息交换“的需求。进程间通信的需求就应运而生。

目前,主流操作系统提供的进程通信机制有如下:1. 管道 2. 共享内存 3. 文件4. 网络 5. 信号量 6. 信号,其中,网络是一种相对特殊的 IPC 机制,它除了支持同主机两个进程间通信,还支持同一网络内部非同一主机上的进程间进行通信。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值