操作系统之进程

进程

概念:正在运行中的程序,是系统进行资源分配和调度的基本单位,一个进程包含多个线程。

进程的状态

五状态模型:
创建状态、就绪状态、运行状态、阻塞状态、结束状态

七状态模型:
创建状态、就绪挂起状态、就绪状态、运行状态、阻塞状态、阻塞挂起状态、结束状态

进程的控制结构

在操作系统中,管理进程的数据结构叫做进程控制块(PCB),包含了进程管理、存储管理和文件管理,PCB是进程存在的唯一标识,生命周期跟进程一样。
PCB的组织方式有两种:链表和索引。由于进程状态是易改变的,所以大部分采用链表的方式。

进程的切换

当一个正在运行中的进程被中断,操作系统指定另一个就绪态的进程进入运行态,这个过程就是进程切换,也叫做上下文切换。
进程切换过程:
1.保存处理器上下文环境:将CPU程序计数器和寄存器的值保存到当前进程的私有堆栈里
2.更新当前进程的PCB(包括状态变更)
3.将当前进程移到就绪队列或者阻塞队列
4.根据调度算法,选择就绪队列中一个合适的新进程,将其改为运行态
5.更新内存管理的数据结构
6.新进程内对堆栈所保存的上下文信息载入到CPU的寄存器和程序计数器,占用CPU
进程切换场景:时间片用完时、申请资源时、sleep睡眠函数调用时、执行优先级更高的进程时、硬件中断时。

线程

线程是能够独立运行的最小基本单位,是进程当中的一条执行流程,也是CPU调度的基本单位,同一进程内多个线程之间共享代码段、数据段、打开的文件等资源,但每个线程各自都有一套独立的寄存器和栈。
线程切换:
不同进程:切换过程跟进程上下文切换一样
同一个进程:虚拟内存等共享资源不变,只切换线程内部的私有数据、寄存器等不共享数据

进程调度

当进程改变状态时发生进程调度切换进程。
调度原则:CPU利用率、系统吞吐量、周转时间、等待时间、相应时间
调度算法:先来先服务、时间片轮转调度、最短作业优先、最短剩余时间优先、优先级调度、多级反馈队列调度。

进程之间的通信方式

每个进程的用户地址空间都是独立的,进程之间需要共享数据时通过内核空间(进程共享的)进行通信。
通信方式:
1.管道(单向传输)
匿名管道:通信范围是存在父子关系的进程,通过fork复制父进程fd文件描述符达到通信目的。
命名管道:通信范围是任意进程。
效率比较低,不适合进程间频繁交换数据,生命周期随进程。
2.消息队列(单双向传输)
由各个进程创建,存放在内核空间中的消息链表,生命周期随内核,存在用户态与内核态之间的数据拷贝开销。
3.共享内存(单双向传输)
现在操作系统对于内存管理采用虚拟内存技术,每个进程都有自己独立的虚拟内存空间,不同进程的虚拟内存映射到不同的物理内存中,共享内存的机制是每个进程拿出一块虚拟地址空间映射到相同的物理内存。当多个进程往共享内存中拷贝数据时会造成覆盖问题。
4.信号量(单双向传输)
是一个整型的计数器,用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据。
信号量表示资源的数量,控制信号量的方式有两种原子操作:
P操作把信号量-1,当信号量<0时,表明资源已被占用,进程需要阻塞等待,当信号量>=0时,表明资源可以使用,进程正常继续执行。
V操作把信号量+1,当信号量<=0时,表明当前有阻塞的进程,于是会唤醒该进程,当信号量>0时,表明没有阻塞的进程。
5.信号(单向传输)
信号进程间通信机制中唯一的异步通信,用于一些异常情况下的进程间通信,进程需要为信号设置对应的监听处理。例如kill -l。
6.Socket(单双向传输)
用于跨网络与不同主机上的进程之间的通信。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值