首页 > 其他分享 >计算机操作系统秋招学习第一轮(四)

计算机操作系统秋招学习第一轮(四)

时间:2022-08-15 01:13:54浏览次数:56  
标签:第一轮 操作系统 队列 阻塞 PCB 秋招 上下文 进程 CPU

# 

主要参考书籍:《CSAPP》、《图解操作系统》、《MOS现代操作系统》

上一篇主要就是进程概念的阐述与拓展

本篇我们来学习一下:  如何控制进程



控制进程,即控制进程的相关操作,创建什么的...



## 进程的控制结构

操作系统用**进程控制块(PCB)**对进程进行控制
PCB中包含了很多进程的相关控制信息

从代码的层面来看:
PCB就是一个含有很多与进程相关成员的**结构体**或者是**类对象**
抽象来看:
PCB就是**一张表**,上面填满了进程上的信息,或者是**一个块**(存储空间),块(存储空间)里堆放着进程的信息

```c++

  • PCB是进程存在的唯一标识,有进程,肯定有PCB。

具体含有什么信息

  1. 进程描述信息
    • 进程标识符(PID):记录你是哪一个进程咯 相当于是进程的名字
    • 用户标识符(UID):记录进程归属于哪些用户使用
  2. 进程控制和管理信息
    • 进程当前状态:之前提到的那些状态
    • 进程优先级:进程抢占CPU的优先级别
  3. 资源分配清单
    • 内存地址空间
    • 虚拟地址空间
    • 已打开的文件列表
    • 所使用的IO设备列表
  4. CPU相关信息
    • CPU中寄存器的值

上下文

CPU上下文切换

CPU在执行程序的时候,需要有特定的程序计数器和CPU寄存器(让CPU知道程序任务在哪里加载,又从哪里开始运行)
这些都是CPU执行程序时所需的环境,这个环境就称为上下文。

进程上下文切换

进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。

而能让进程上下文切换实现的就是PCB表中的数据

PCB之间如何组织在一块

链表

最基本就是用链表组织在一块

如何管理

对进程进行控制

进程的创建

创建进程:

  • 为新的进程分配一个唯一的进程标识符,并且申请一个PCB,内存空间是有限的,如果PCB申请失败则无法创建。
  • 为进程分配资源,此处如果资源不够,那么进程就会进入等待状态。
  • 初始化PCB
  • 如果进程的调度队列能够接收新的进程,那就将进程插入到就绪队列中,等待被调度。

进程的阻塞

进程需要等待一件事情(或者一个、一些条件)时,可以通过调用阻塞语句来使自己进入阻塞状态,而唤醒阻塞进程需要另一个进程

阻塞进程的详细过程:

  • 找到将要被阻塞的对应进程的PID的PCB
  • 如果该进程处于运行状态,就保护现场,然后将该进程转成阻塞状态,并停止其运行
  • 将该PCB插入到阻塞队列当中去

进程的唤醒

处于阻塞的进程绝不可能唤醒自己

阻塞进程在等待一个唤醒IO事件,需要由别的进程发消息给它

唤醒过程如下:

  • 在事件的阻塞队列中找到对应唤醒进程的PCB
  • 将其设为就绪状态,并从阻塞队列中移除
  • 将进程PCB插入到就绪队列中,等待调度程序调度

进程的终止

终止进程:三种方式

正常结束

异常结束

外部干预

终止流程:

进程的上下文切换(详细)

什么情况会引起进程的上下文切换

这个常考

哪些场景?

标签:第一轮,操作系统,队列,阻塞,PCB,秋招,上下文,进程,CPU
From: https://www.cnblogs.com/black-worrior-2000/p/16586849.html

相关文章

  • 计算机操作系统秋招学习第一轮(三)
    主要参考书籍:《CSAPP》、《图解操作系统》、《MOS现代操作系统》本篇着重学习线程与进程进程小林coding对进程的解释:代码以二进制的文件形式存储到内存当中,CPU读取并执......
  • c++xx 秋招学习STL库(三)
    主要参考:本篇学习无序关联式容器无序关联式容器种类无序容器功能unordered_map存储键值对<key,value>类型的元素,其中各个键值对键的值不允许重复,且该......
  • c++xx 秋招学习STL库(二)
    Map、Set、Unordered_map类与数据结构中所描述的一致,数组作为顺序型ADT,在STL库中vector也被称为序列式容器同时还存在着一些无序型容器我们本节主要就学习这类无序......
  • c++xx 秋招学习STL库 (一)【vector】
    c++xx秋招学习STL库(一)vector类主要针对一些编程时使用发现的一些问题与思考进行记录Vector的初始化一维数组//usingnamespacestd;vector<int>int_vec;vector<......
  • 周回顾并发编程与数据库08.14:UDP协议、操作系统发展史、相关名词、进程、线程、验证py
    目录UDP协议操作系统发展史相关名词进程线程锁信号量event事件池协程数据库MySQLSQL与NoSQL内容UDP协议Internet协议集支持一个无连接的传输协议,该协议......
  • vmware下 安装 最新版 ubuntu server 操作系统(二)
    1.vmware安装Linux配置完成 VMware中操作步骤:https://www.cnblogs.com/sunbenbao/p/16558584.html2.点击启动虚拟机后操作:默认选中“TryorInstallUbuntu......
  • 操作系统
    操作系统什么是操作系统操作系统是计算机系统中最基本的系统软件。操作系统能够管理计算机硬件与软件的资源,合理组织、调度计算机工作与资源的分配,进而为用户和其他软件......