操作系统-进程与线程

进程的概念、组成、特征

概念

程序:是静态的,就是存放在磁盘里的可执行文件,如:QQ.exe。

线程:是动态的,是程序的一次执行过程,如:可同时启动多次QQ程序。

组成

进程由PCB、程序段、数据段组成。PCB是给操作系统用的,程序段、数据段是给进程自己用的

PCB

PCB是进程存在的唯一标志,当进程被创建时,操作系统为其创建PCB,当进程结束时,会回收其PCB。PCB由进程描述信息、进程控制和管理信息、资源分配清单、处理机相关信息组成。

进程描述信息包括进程标识符PID、用户标识符UID。

进程控制和管理信息包括CPU、磁盘、网络流量使用情况统计...、进程当前状态:就绪态/阻塞态/运行态...

资源分配清单包括正在使用哪些文件、正在使用哪些内存区域、正在使用哪些I/O设备。

 处理机相关信息包括如PSW、PC等等各种寄存器的值(用于实现进程切换)

程序段

程序段顾名思义就是程序的代码(指令序列)

数据段

数据段是运行过程中产生的各种数据(如:程序中定义的变量)

小知识-程序是如何运行的?不废话直接上图

 进程是进程实体的运行过程,是系统进行资源分配调度(指操作系统决定让这个进程在CPU上运行)的一个独立单位。

进程的特征

动态性(进程最基本的特征)——进程是程序的一次执行过程,是动态地产生、变化和消亡的。

并发性——内存中有多个进程实体,各进程可并发执行

独立性——进程是能独立运行、独立获得资源、独立接收调度的基本单位

异步性——各进程按各自独立的、不可预知的速度向前推进,操作系统要提供"进程同步机制"来解决异步问题

结构性——每个进程都会配置一个PCB。从结构上看,进程由程序段、数据段、PCB组成。

进程的状态与转化

先来了解一下进程的几个状态

 创建态——进程正在被创建,它的状态是"创建态",在这个阶段操作系统会为进程分配资源、初始化PCB。

就绪态——当进程被创建完成后,便进入”就绪态“处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行。

运行态——如果一个进程此时在CPU上运行,那么这个进程处于"运行态"。CPU会执行该进程对应的程序(执行指令序列)

阻塞态——当进程运行的过程中,可能会请求等待某个事件的发生(如等待某种资源的分配,获证等待其他进程的响应)。在这个事情发生之前,进程无法继续往下执行,此时操作系统会让这个进程下CPU,并让它进入"阻塞态',这时CPU空闲下来了,又去选择了另一个"就绪态"的进程上CPU运行。

终止态——一个进程可以执行exit系统调用,请求操作系统终止该进程。此时该进程会进入"终止态",操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB。当终止进程的工作完成之后,这个进程就彻底消失了。

运行态、就绪态、阻塞态为进程的三个基本状态。

进程状态的转换

直接上图一清二楚

 进程PCB中,会有一个变量state来表示进程的当前状态。如:1表示创建态、2表示就绪态....

进程的组织

链接方式

按照进程状态将PCB分为多个队列,操作系统持有指向各个队列的指针。

索引方式

 根据进程状态的不同,建立几张索引表,操作系统持有指向各个索引表的指针。

进程通信

进程间的通信(IPC)是指两个进程之间产生数据交互。

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立

为了保证安全,一个进程不同直接访问另一个进程的地址空间,所以有了操作系统支持了进程通信

共享存储

共享存储是在内存中开辟了一个共享内存区域,并映射到进程的虚拟地址空间。各个进程对共享空间的访问互斥的。

注:通过"增加页表项/段表项'即可将同一片共享内存区映射到各个进程的地址空间中。

基于数据结构的共享:比如共享空间里只能放一个长度为10的数组,这种共享方式速度慢、限制多,是一种低级通信方式。

基于存储区的共享:操作系统在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是操作系统,这种共享方式速度很快,是一种高级通信方式。

 消息传递

进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的"发送消息/接收消息"两个原语进行数据交换。

 直接通信方式

在这种直接通信方式中发送进程要指明接收进程的ID。

 间接通信方式

间接通信方式,以"信箱'作为中间实体进行消息传递。

 管道通信

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大磊程序员(“hello world”)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值