操作系统笔记:2.1.1——2.1.4进程相关知识

进程的概念:

进程是进程实体的运行过程,是操作系统进行资源分配和调度的一个独立单位。
进程实体是由程序段(程序代码),数据段(存放程序运行中的各种数据),PCB控制块三部分组成的。
创建进程:指的是创建进程实体中的PCB,PCB控制块是由操作系统创建,管理进程的一种数据结构。

PCB构成

一个PCB控制块包含

  1. 进程描述信息(进程标识符(唯一的)PID,用户标识符(进程归属于那个用户)UID,用户组标识符(GID)),
  2. 进程调度信息(进程当前的状态和优先级)
  3. 进程控制信息(程序数据的地址,虚拟地址空间的信息,进程通信机制(管道,信号量,消息队列等),文件信息,信号处理信息)
  4. CPU相关信息(CPU中各个寄存器的值,进程发生切换的时候,CPU的状态信息会被保存在相应的PCB中,从而进程重新执行的时候,可以从断点处开始运行)等信息。
    参见本篇博文,清晰易懂

虚拟地址空间的构成
虚拟地址的构成

进程之间的组织方式

包含两者组织方式,一般选择链表,因为其可以更加灵活的插入和删除。
1.链表方式进行组织,将相同状态的进程链接在一起,组成各种队列,如下图所示:
操作系统会根据进程的状态将PCB分为多个队列,将所有就绪状态的进程链接在一起,称为就绪队列;将所有阻塞状态的进程链接在一起称为阻塞队列。执行队列的指针只能指向1个PCB控制块。
链表方式
2.索引表方式进行组织:将同一个状态的进程组织在一个索引表中,索引表项指向对应的PCB,不同状态对应不同的索引表。如下图所示:
索引表方式

进程的特征

1.动态性:它是程序的一次执行过程,是动态的产生,变化和消亡的。
2.并发性:内存中包含多个进程,可以并发运行。
3.独立性:进程之间是独立运行,独立获得资源。
4.异步性:各个进程以某种不可预知的速度向前推进,因此操作系统提供同步机制来解决异步问题。
5.结构性:使用PCB控制块来管理进程

进程的状态

进程的状态主要分为五状态和七状态,下面分别进行叙述。
其中就绪状态,运行状态,阻塞状态是进程最基本的三种状态。
创建状态:又称为new,它指的是操作系统会完成创建进程的一系列工作,例如:操作系统为进程分配资源,初始化PCB
终止状态:又称为terminated,指的是进程运行结束(运行中出现了bug),操作系统需要回收进程相关的资源,完成进程PCB的撤销等工作。
就绪状态:又称为ready,指的是进程已经具备运行的条件,但是没有空闲CPU,所以暂时不可以运行。
运行状态:又称为running,指的是进程已经拿到CPU,可以被处理。
阻塞状态:又称为blocked,指的是进程此时还不具备运行的条件,例如它等待系统分配打印机资源,因为需要等待某一个事件的完成所以暂时不可以运行。
进程的切换过程如下图所示:
进程被创建完毕之后,会进入到就绪状态,等待CPU分配时间,从而在某个时间片内会拿到CPU的使用权,从而进入到运行状态。运行结束之后,操作系统会撤销进程,即进入终止状态。
需要注意的是,不能直接从阻塞状态转换为运行状态,也不能由就绪状态转为阻塞状态,因为进入阻塞状态的进程是进程主动发生请求的,必然要在进程运行时才可以发出这种请求。
此外,从运行状态到阻塞状态是进程主动采取的行为,而从阻塞到就绪状态却是进程被动采取的行为,不是它自身控制的。
在就绪状态时的进程并没有被执行,可以理解成它万事俱备,只欠CPU。
在这里插入图片描述

进程控制

进程控制就是用来实现进程状态的切换,它是用原语来实现的:利用中断技术实现,中间的过程是一气呵成,不可以被打断的。
常见的原语有:进程的创建,终止,阻塞,唤醒,切换。具体内容参考marginnote2.1.3中的笔记。
在这里插入图片描述

进程通信的方式

包括管道,消息队列,共享内存,信号量,信号,socket等方式。可以写一篇文章了呢
其中管道:半双工通信,某一时间段内只能单向传输,如果想要双向传输的话,需要设置两个管道。
此外,各个进程要互斥的访问该管道,当管道写满之后,写进程的write将阻塞,除非读进程将数据读走。同理,当读进程把数据全部取走之后,管道会变空,read会陷入阻塞,除非写进程向管道中写入数据。
如果没有写完,就不允许读,如果没有读空,就不允许写。

进程的调度(七状态法)

在这里插入图片描述
这里的挂起状态指的是:为了提高资源的利用率和系统的吞吐量,暂时没有被执行的进程会被调用到外存中,从而变成了挂起状态,等内存有空闲的时候,再重新调入内存。
需要注意的是被挂起的进程的PCB控制块依旧保存在内存中,操作系统通过内存中的PCB来对进程进行监控和管理,被挂起的PCB将会被放到挂起队列中。
挂起状态又可以进一步分为就绪挂起状态和阻塞挂起状态。
挂起的时候,进程会被加载到外存中去,而阻塞的时候,进程还依旧在内存当中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值