当前位置: 首页 > news >正文

进程切换-

实验课之前有一些问题

在这里插入图片描述
中断机制
在这里插入图片描述
第一个问题:
interrupt的两个状态源头:
外中断多由随机中断(异步中断)造成,如鼠标点击,键盘输入;
内终端多由故障终端:程序运行异常,硬件异常,系统调用是更高一级的调用,需要进入内核模式,也算是一个异常中断。
在这里插入图片描述

第二个问题:
进程的上下文信息
在这里插入图片描述
进程切换需要保存上下文(context),保存操作系统运行该程序的一些基本信息,保护住此程序的内存区
从cpu的层面就是保存当前系统运行的寄存器内的内容(push入对应堆栈)

一般来说由硬件分辨双模式(dual mode),status=0为内核模式,status=1为用户模式。
在这里插入图片描述一般发生中断时,cpu模式从user mode立刻切换到 kernel mode
在这里插入图片描述对应这张图的判断状态码和处理中断程序阶段
在这里插入图片描述
进程切换
在这里插入图片描述
这里状态队列分为等待状态和就绪状态。

那么一个进程的状态究竟放在什么地方呢?
在这里插入图片描述每个进程都有一个pcb相对应

所以一个进程完整的内存部分(context)包含什么呢?
在这里插入图片描述
但这些部分在内存中并非连续的而是离散的
在这里插入图片描述

猜测这里大概是虚内存,估计后面课程会有讲解,因为我们都知道硬件读取都是顺序的。

状态队列
在这里插入图片描述

不同的i/o设备由不同的等待队列,所以有多个等待队列
运行状态队列是没有的,理论上来说单核cpu只有一个进程处于运行状态
而且我们可以看到,他们查询进程实体时只需要查询链接的pcb即可

就绪队列出列
在这里插入图片描述

进程调度
其实就是调度器将存在的进程在各种状态之间切换
在这里插入图片描述

这里有一个问题下面有两个事件,一个事件是cpu执行分支子进程;一个事件是中断事件发生。这两个事件是主动还是被动?
我目前认为子进程分支执行是父进程调用,所以是主动;中断发生根据前面可以判断这里大概率不是调用i/o设备导致的中断,应该是父进程调用子进程产生的并发,如果是这样估计也是主动,但这里只是我的猜想。后面课程估计会有答案。

http://www.lryc.cn/news/12950.html

相关文章:

  • python--matplotlib(2)
  • 【李忍考研传】五、信心
  • Web 页面之间传递参数的几种方法
  • Android实例仿真之二
  • day47【代码随想录】动态规划之买卖股票的最佳时机III、买卖股票的最佳时机IV、最佳买卖股票时机含冷冻期、买卖股票的最佳时机含手续费
  • 网络数据包接收流程
  • CSAPP学习笔记——虚拟内存(二)
  • 面试sql
  • Python编程自动化办公案例(2)
  • Vulnhub 渗透练习(七)—— FRISTILEAKS: 1.3
  • 阶段二10_面向对象高级_分类分包思想和案例环境搭建
  • 关于打印工具print-js的使用
  • Doxygen使用
  • MySQL数据库调优————表结构设计优化
  • set对象和map对象
  • stream()流的使用
  • C++学习笔记-常量
  • JavaScript系列之实现继承的几种方式
  • java面试准备
  • kafka-6-python单线程操作kafka
  • 【Spring教程】1.Spring概述
  • 设计模式-代理模式
  • DPDK — MALLOC(librte_malloc,Memory Manager,内存管理组件)
  • 【Java开发】Spring 12 :Spring IOC控制反转和依赖注入(解决单接口多实现类调用)
  • 【C++学习】基础语法(三)
  • k8s自动化安装脚本(kubeadm-1.23.7)
  • 面试题记录
  • 链式前向星介绍以及原理
  • jenkins 安装 -适用于在线安装 后续写个离线安装的
  • 【C++】再谈vscode界面调试C++程序(linux) - 知识点目录