作业调度和程序装入内存

作业调度

我们知道,磁盘上的可执行程序只有装入内存,成为进程才可以运行。在磁盘上有许多的可执行程序等待被操作系统唤入内存执行,我们把可执行程序在磁盘上的调度称之为作业调度

注意:这种说法听起来好像是作业在磁盘上的调度而非内存中,这里是一个误区,实际上作业调度是指调度注册到内存中的JCB,然后选择一个JCB将对应的可执行程序唤入内存的过程。

作业调度和进程调度的区别:

  • 作业调度也被称为长程调度,由作业调度器(各种调度算法的软件组件)来执行。
  • 进程调度也被称为短程调度,由进程调度器来执行。
  • 作业调度的主要目标是选择磁盘上合适的可执行程序调入内存,成为进程。
  • 进程调度的主要目标是选择合适的进程在CPU上执行。

如何设计?

操作系统的管理方式:先描述,再组织。 

作业控制块(JCB):在用户双击一个可执行程序时,操作系统会先为这个作业创建的描述信息。

JCB中具有:作业标识、用户名称、作业类型(CPU繁忙型/IO繁忙型)、作业状态、优先级、作业运行时间、资源需求等。

JCB创建之后,操作系统会将JCB放入后备队列中,使用作业调度器调度内存中的各个作业JCB,当某个JCB将要被调度时,操作系统将唤入对应的可执行程序,创建进程,转为进程调度

注意:作业调度和进程调度都是在内存中进行的,只需要调度他们的控制块即可。

总结

作业调度是筛选磁盘上合适的可执行程序调入内存,进程调度是筛选内存中合适的进程放到CPU上。这两种调度相辅相成,当进程调度时发现CPU繁忙时,可以减少CPU密集型作业的调入,二者相互协调,最大的发挥出机器的性能。

我们上面大概叙述了什么是作业调度,作业调度和进程调度的区别,具体的调度策略由各种算法实现。


程序的装入和链接

程序是如何装入内存的,操作系统在中间是如何设计的呢?

程序的装入分为以下三步:

  1. 编译:将源代码编译形成若干组目标模块。
  2. 链接:将若干组目标模块和库函数链接到一起,形成装入模块。
  3. 装入:将装入模块装入物理内存。

具体来说,装入模块是如何装入内存的呢?

  1. 绝对装入方式:这种方式只适用于单道批处理系统,即内存中同时只有一个进程,此时可以将用户程序编译后产生的地址看作是物理地址直接装入对应的内存区域。
  2. 可重定位装入方式:在多道处理系统中,由于内存中同时会存在多个进程,如果按照绝对装入方式,物理地址是在编译期间确定的,那势必多个进程会产生内存冲突。可重定位装入方式是将每个作业根据内存的具体情况装入适当的位置(操作系统来完成)。这种方式显然就是将编译器生成的作业地址空间作为整体,偏移到内存的某块区域上,对用到地址的指令进行物理地址变换(加上偏移量)。因为这里地址变换是装入时一次性完成的,所以也叫做静态重定位。
  3. 动态运行时装入方式:在具有虚拟存储器的操作系统中,支持进程的对换,一个进程可能被会被来回换入换出,每次换入的位置是不确定的,不可采用静态重定位的方式。动态运行时装入指的是程序加载到内存中的合适区域后,对使用地址的指令不进行修改,而是在运行时再进行地址变换。需要使用重定位寄存器,每次装入时,将装入位置的物理首地址存入寄存器,每执行一条指令时,用到的地址为作业空间地址+物理首地址

程序的链接

源代码在经过编译后形成的若干个目标模块后,需要将这些目标模块和库函数链接形成装入模块,链接指的是什么?如何链接呢?

链接指的是将编译形成的若干个二进制文件和库文件合并。

合并后,再修改每个模块内的相对地址,以及修改每个模块内指令使用的地址为合并后的地址。

链接方式:

  1. 静态链接:一次性将所有模块和库合并,形成可执行文件。
  2. 动态链接:将所有模块装入后,运行时需要调用外部模块,才产生链接。

下篇介绍:站在操作系统的视角,有程序要装入时,我该如何把自己的内存资源合理分配出去呢?

相关技术:内存分配方式、虚拟地址空间、页表、段表等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/10995.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

广义布里渊区方程推导过程中一个公式的理解

是对DOI: 10.1103/PhysRevLett.123.066404补充材料公式(S25)的理解 clear;clc;close all q2; N1;Mq*N; syms LMatsym(zeros(2*M,2*M));for ii1:MTp[];for jj1:2*M%eval([syms , f,num2str(ii),num2str(jj)]);eval([syms ,f,num2str(ii),_beta,num2str(jj),_ES])%eval([temp,f,…

嵌入式linux中HDMI驱动操作方法

大家好,今天主要给大家分享一下,linux系统里面的HDMI驱动实现方法。 第一:HDMI基本简介 HDMI 全称为 High Definition Multimedia Interface,也就是高清多媒体接口,是一个纯数字的音视频传输接口,通过一根线同时发送音视频数据。目前在电视、显示器、电脑、机顶盒等领域得…

边缘的检测

边缘检测效果,是一种用于突出图像中的边缘,使物体的轮廓更加明显的图像处理技术,边缘检测的主要目的是找到图像中亮度变化显著的区域,这些区域通常对应于物体的边界,边缘检测相当于利用 Shader 代码自动给屏幕图像进行…

架构篇(05理解架构的服务演化)

目录 学习前言 一、服务演化简介 二、方向一:架构服务化 单体分层架构 面向服务架构 - SOA 微服务架构 - Microservices 云原生架构 - Cloud Native 三、方向二:部署容器编排化 虚拟机 容器 Kubernetes 与编排 四、参考文献 学习前言 Kubern…

娶老婆花了30万彩礼,结婚2个月,她前夫给我20万,让我老婆和他生孩子!

我叫李志强,今年32岁,在一家物流公司当经理。去年我娶了我老婆张美玲,为了这场婚礼,我花了30万彩礼。美玲比我小3岁,是个护士,长得漂亮又温柔,我觉得自己找到了真爱。 结婚前,美玲就…

基于SpringBoot的国风服装商城系统+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(用户管理、商品管理、分类管理、订单管理、系统管理、在线客服等),普通用户(登录注册、个人中心、评价管理、收藏管理、订单管理等、咨询服务等&…

GB/T 43206—2023信息安全技术信息系统密码应用测评要求(五)

文章目录 附录AA.1 概述A.2 密钥产生A.3 密钥分发A.4 密钥存储A.5 密钥使用A.6 密钥更新A.7 密钥归档A. 8 密钥撤销A.9 密钥备份A.10 密钥恢复A.11 密钥销毁 附录B附录C 附录A A.1 概述 密钥管理对于保证密钥全生存周期的安全性至关重要 ,可以保证密钥(除公开密钥外) 不被非授…

jmeter常用配置元件介绍总结之前置处理器、测试片段

系列文章目录 安装jmeter jmeter常用配置元件介绍总结之前置处理器、测试片段 6.前置处理器6.1用户参数6.2取样器超时6.3.测试片段6.4JSR223 PreProcessor6.5.JDBC PreProcessor 6.前置处理器 在取样器请求之前执行的操作,优先级比取样器高,用来处理一些…

【IT人物系列】之Java之父

前言 当今世界由无数的人构成,其中有些人做了一些改变世界的事情,比如:乔布斯缔造了Apple帝国,‌詹姆斯高斯林创造了Java语言等。正是这些优秀的人做的这些优秀的事情,让这个世界更加美好。因此他们值得铭记。 从今天…

鸿蒙开发基础入门

一、熟悉目录结构 二、ArkTS语法介绍 ArkTS是为构建高性能应用设计的编程语言,语法继承TypeScript,并进行了优化,拥有更强的类型约束ArkTS提供了声明式UI范式,符合移动开发的最新趋势 ArkTS摒弃了部分影响运行时的性能的语法&…

大数据机器学习算法和计算机视觉应用01:博弈论基础

Game Theory 2-player Zero Sum GameMinimax Optimal StrategiesVon Neumann’s Minimax TheoremLower Bounds for Randomized AlgorithmsGeneral sum games, Nash quilibria (p.s:该系列是国际交流学术公开课的笔记,主讲人是Carnegie Melon University的终身教授…

如何安装和配置JDK17

教程目录 零、引言1、新特性概览2、性能优化3、安全性增强4、其他改进5、总结 一、下载安装二、环境配置三、测试验证 零、引言 JDK 17(Java Development Kit 17)是Java平台的一个重要版本,它带来了许多新特性和改进,进一步提升了…

【C++进阶】智能指针的使用及原理(1)

1. 智能指针的使用场景分析 下面程序中我们可以看到,new了以后,我们也delete了,但是因为抛异常导,后面的delete没有得到执行,所以就内存泄漏了,所以我们需要new以后捕获异常,捕获到异常后delete…

计算机课程管理:Spring Boot实现的工程认证路径

摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足,创建了一个计算机管理基于工程教育认…

【人工智能训练师】综合案例 HBase与Hive的集成

9.1 HBase与Hive 任务目的 简单回顾了解hive 了解hive与hbase的区别 任务清单 任务1:hive简介 任务2:hbase与hive的区别 任务步骤 任务1:hive简介   什么是Hive呢? Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。 构…

基于STM32的图像处理监控系统

1. 引言 随着物联网和智能家居的普及,图像处理和监控系统在安全防范、家庭监控等方面应用越来越广泛。本项目旨在使用STM32开发板和OV7670摄像头模块搭建一个简单的图像处理监控系统。系统能够捕获图像并进行基本的处理与展示。 2. 环境准备2.1 硬件需求 - STM32开…

QML-简单项目实战一

一、简介 使用QML创建一个简单的登录界面,代码内容来源于bilibili中的视频。 实现效果图如下: 二、实现步骤 1. 核心控件和布局管理和登录事件处理 import QtQuick 2.12 import QtQuick.Controls 2.12 import QtQuick.Window 2.12 /*1. 核心控件和布局…

字节青训-小F的永久代币卡回本计划、

目录 一、小F的永久代币卡回本计划 问题描述 测试样例 解题思路: 问题理解: 数学公式: 代码实现: 最终代码: 运行结果: 二、构造特定数组的逆序拼接 问题描述 测试样例 解题思路:…

[ Linux 命令基础 4 ] Linux 命令详解-文本处理命令

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

06:(寄存器开发)对上电/复位的SystemInit函数进行分析

SystemInit函数分析 通过第5章的时钟树的学习,基本了解了SystemClock总线,AHB总线,APB1总线,APB2总线的时钟频率。那么单片机一上电或者按下复位时,这些总线的时钟频率是如何变化的喃? 这和STM32的启动文件…