操作系统-《王道 操作系统》

news2025/1/12 15:44:17

概念、功能和目标

概念

什么是操作系统
在这里插入图片描述

功能和目标

  • 作为系统的管理者
  • 向上提供方便简易的服务
  • 作为最接近底层硬件的层次

特征

  • 并发

    在这里插入图片描述

  • 共享

    在这里插入图片描述
    在这里插入图片描述

  • 并发与共享的关系—互为存在条件

    在这里插入图片描述

  • 虚拟

    在这里插入图片描述

  • 异步

    在这里插入图片描述

发展与分类

  • 单道批处理系统
  • 多道批处理系统
    • 优点:多道程序并发执行,共享计算机资源,资源利用率大幅提升
    • 缺点:用户响应时间长,没有人机交互的功能
  • 分时操作系统

    在这里插入图片描述

    • 缺点:不能优先处理紧急任务
  • 实时操作系统

    在这里插入图片描述

  • 其他几种操作系统

运行机制

  • 两种程序
    • 应用程序–只能使用非特权指令
    • 内核程序–可以使用特权指令
  • 两种指令
    • 特权指令
    • 非特权指令
  • 两种处理器状态
    • 内核态
    • 用户态
  • 如何变态?
    • 内核态–>用户态 -------一条修改psw的特权指令
    • 用户态–>内核态 -------由中断引起,硬件自动完成

中断与异常

  • 中断
    • 作用:让操作系统内核夺回cpu使用权的唯一途径
    • 类型:
      • 内中断(异常):与当前执行指令有关,中断信号来自cpu内部
      • 外中断:与当前执行指令无关,中断信号来自cpu外部
    • 基本原理:

      在这里插入图片描述

系统调用

  • 系统调用与库函数的区别

    在这里插入图片描述

  • 什么功能要用到系统调用?

    在这里插入图片描述

  • 过程

    在这里插入图片描述

体系结构

  • 内核

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

操作系统的引导

在这里插入图片描述

虚拟机

在这里插入图片描述

进程管理

概念、组成和特征

  • 概念:
    • 程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合
    • 进程:是动态的,是程序的一次执行过程
  • 组成(进程实体的组成):
    • PCB:进程控制块

      在这里插入图片描述

    • 程序段:包含程序指令
    • 数据段:包含运行过程中产生的各种数据
      总结:PCB、程序段、数据段组成进程实体(进程映像)
      进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
      注意:PCB是进程存在的唯一标志!
  • 特性:
    • 动态性:进程的最基本特性
    • 并发性
    • 独立性:进程是能独立运行、独立获得资源、独立接受调度的基本单位
    • 异步性:各进程以不可预知的速度向前推进,可能导致运行结果的不确定性
    • 结构性

状态与转换、组织

  • 状态
    • 创建态:进程正在被创建,操作系统为进程分配资源、初始化PCB
    • 就绪态:已经具备运行条件,但由于没有空闲CPU,而暂时不能运行
    • 运行态:占有CPU,并在CPU上运行
    • 阻塞态:因等待某一事件而暂时不能运行
    • 终止态:进程正在从系统中撤销,操作系统中撤销,操作系统会回收进程拥有的资源、撤销PCB
  • 状态的转换:

    在这里插入图片描述

  • 组织
    • 链式方式

      在这里插入图片描述

    • 索引方式

      在这里插入图片描述

进程控制

主要功能:对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能
简单理解:反正进程控制就是要实现进程状态转换

  • 如何实现?
    • 用“原语”实现:原语的执行具有“原子性”,一气呵成,期间不允许被中断
      可以使用“关中断指令”和“开中断指令”这两个指令实现原子性
  • 相关原语

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 进程是如何运行的?
    在进程切换时先在PCB中保存这个进程的运行环境(保存一些必要的寄存器信息);当原来的进程再次投入运行时,可以通过PCB恢复它的运行环境

进程通讯

进程间的通讯指的是两个进程之间产生数据交互

  • 为什么进程间的通讯需要操作系统支持
    进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间是相互独立的
    为了安全,一个进程不能直接访问另一个进程的地址空间
  • 共享存储
    • 基于存储区的共享:操作系统在内存中划分一个共享存储区,数据的形式、存放位置都是由通讯进程控制,而不是操作系统。这种共享方式速度很快,是一种高级通信方式
    • 基于数据结构的共享:比如共享区域只存放一个数组。这种共享方式速度慢、限制多,是一种低级通信方式
  • 消息传递
    进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送信息/接受信息”两个原语进行数据交换
    • 直接通信:点名道姓的消息传递
    • 间接通信:以“信箱”作为中间实体进行消息传递
  • 管道通信
    “管道”是一个特殊的共享文件,其实就是开辟一个固定内存大小的内存缓冲区

    在这里插入图片描述

    • 管道只能采用半双工通信,某个时间段内只能实现单向的传输。如果要实现双向传递,需要设置两个管道
    • 各个进程要互斥的访问管道(由操作系统是实现)
    • 当管道写满时,写进程将被堵塞,直到读进程将管道中的数据取走,即可唤醒写进程
    • 当管道读空时,读进程将被堵塞,直到写进程往管道中写入数据,即可唤醒读进程
    • 在这里插入图片描述

    • 在这里插入图片描述

线程

线程是一个基本的CPU执行单元,也是程序执行流的最小单元

  • 用户级线程(多对一模型)

    在这里插入图片描述

  • 内核级线程(一对一模型)

    在这里插入图片描述

  • 多对多模型

    在这里插入图片描述

状态与转换

在这里插入图片描述

  • 组织与控制

    在这里插入图片描述

调度

基本概念

当有一堆任务要处理,但是由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题

调度的三个层次

  • 高级调度
    • 作业概念:一个具体的任务(用户让操作系统启动一个程序来执行具体任务)
    • 介绍:高级调度。按照一定的原则从外存的作业后备队列中挑选一个作业调入内存,并创建进程。每个作业只能调入一次,调出一次。作业调入时创建PCB,调出时撤销PCB
  • 低级调度
    • 介绍:(进程调度/处理机调度)按照某种策略从就绪队列中选取一个进程,将处理机分配给它
    • 是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度
    • 进程调度的频率很高,一般几十毫秒一次
  • 中级调度
    • 挂起概念:内存不够时,可以将某些进程的数据调出外存。等内存空闲或者进程需要运行时再重新调入内存。暂时调到外存等待的进程状态为挂起状态。被挂起的进程的PCB会被组织成挂起队列

      在这里插入图片描述

    • 介绍:(内存调度)按照某种策略决定将哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高

进程调度

按照一定的算法从就绪队列中选择一个进程为其分配处理机

在这里插入图片描述
进程在操作系统内核程序临界区中不能进行调度与切换

  • 临界资源:一个时间段内只允许一个进程使用的资源。各进程需要互斥地访问临界资源
    内核程序临界区一般是用来访问某种内核数据结构的,比如进程的就绪队列(由各就绪进程的PCB组成)
  • 切换与过程

    在这里插入图片描述

调度算法评价指标

  • CPU利用率:指CPU“忙碌”的时间占总时间的比例
    利用率=忙碌时间/总时间

  • 系统吞吐量:单位时间内,完成作业的数量

  • 周转时间:指作业被提交给系统开始,到作业完成为止的这段时间间隔

    在这里插入图片描述

  • 等待时间:指进程处于等待处理机状态时间之和

  • 响应时间:从用户提交申请到首次产生响应所用时间

调度算法

先来先服务

在这里插入图片描述

短作业优先

在这里插入图片描述
在这里插入图片描述

高响应比优先

相应比=(等待时间+要求服务时间)/要求服务时间

在这里插入图片描述

时间片轮转调度算法

在这里插入图片描述

优先级调度算法

  • 系统进程优先级高于用户进程
  • 前台进程优先级高于后台进程
  • 操作系统更遍好I/O型进程

在这里插入图片描述

多级反馈队列调度算法

在这里插入图片描述

持续更新中

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

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

相关文章

Java笔记六(面向对象:类与对象)

面向对象编程的本质:以类的方式组织代码,以对象的组织(封装)数据 抽象 三大特征:封装 继承 多态 从认识角度考虑是先有对象后有类。对象,是具体的事物。类,是抽象的,是对对象的抽…

【JVM】 类加载机制、类加载器、双亲委派模型详解

文章目录 前言一、类加载机制二、类加载器三、双亲委派模型总结 前言 📕各位读者好, 我是小陈, 这是我的个人主页 📗小陈还在持续努力学习编程, 努力通过博客输出所学知识 📘如果本篇对你有帮助, 烦请点赞关注支持一波, 感激不尽 &#x1f4d…

Foxit PDF

Foxit PDF 福昕PDF 软件,可以很好的编辑PDF文档。 调整PDF页面大小 PDF文档中,一个页面大,一个页面小 面对这种情况,打开Foxit PDF 右键单击需要调整的页面,然后选择"调整页面大小". 可以选择…

【网络安全-sql注入(5)】sqlmap以及几款自动化sql注入工具的详细使用过程

一,sqlmap 工具的详细使用 kali系统自带这个工具,无需安装直接sqlmap 后面接参数使用 Windows上参照以下方法安装即可 1-1 工具下载 1-1-1 sqlmap下载 sqlmap 工具下载地址: GitHub - sqlmapproject/sqlmap: Automatic SQL injection a…

【C语言】【动态内存管理】malloc,free,calloc,realloc

1.malloc函数 void* malloc(size_t size)功能&#xff1a;向内存申请字节为 size大小的空间 使用时要包含头文件&#xff1a;<stdlib.h> 开辟成功&#xff1a;返回开辟好的空间初始地址的指针 开辟失败&#xff1a;返回空指针 NULL 使用举例&#xff1a; (malloc和free…

Win10系统中GPU深度学习环境配置记录

运行环境 系统&#xff1a;Win10 处理器 Intel(R) Core(TM) i7-9700K CPU 3.60GHz 3.60 GHz 机带 RAM 16.0 GB 设备 ID A18D4ED3-8CA1-4DC6-A6EF-04A33043A5EF 产品 ID 00342-35285-64508-AAOEM 系统类型 64 位操作系统, 基于 x64 的处理器 显卡&#xff1a;NVIDIA GeF…

快速上手Apache POI

哈喽~大家好&#xff0c;这篇我们来看看快速上手Apache POI。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【日常学习上的分享】 &#x1f949;与这篇相关的文章&#xff1a; Red…

你写过的最蠢的代码是?——一起探讨编程的奇葩时刻

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页: &#x1f405;&#x1f43e;猫头虎的博客&#x1f390;《面试题大全专栏》 &#x1f995; 文章图文并茂&#x1f996…

常见web信息泄露

一、源码(备份文件)泄露 1、git泄露 Git是一个开源的分布式版本控制系统&#xff0c;在执行git init初始化目录的时候&#xff0c;会在当前目录下自动创建一个.git目录&#xff0c;用来记录代码的变更记录等。发布代码的时候&#xff0c;如果没有把.git这个目录删除&#xff…

CCF CSP认证 历年题目自练 Day20

题目一 试题编号&#xff1a; 201903-1 试题名称&#xff1a; 小中大 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 题目分析&#xff08;个人理解&#xff09; 常规题目&#xff0c;先看输入&#xff0c;第一行输入n表示有多少数字&am…

Rabbitmq安装-docker版

1.简介 2.安装消息队列 下载地址https://www.rabbitmq.com/download.html 使用docker方式安装 需要先下载docker&#xff0c;参考文章https://blog.csdn.net/weixin_43917045/article/details/104747341?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22arti…

基于SSM在线医疗服务系统+jsp【附开题|万字文档(LW)和搭建文档】

主要功能 前台登录&#xff1a; 注册用户&#xff1a;用户名、密码、姓名、联系电话 注册医生&#xff1a;医生工号、密码、医生姓名、职称、联系电话、邮箱 用户&#xff1a; ①首页、药品推荐、新闻资讯、健康资讯展示 ②医生坐诊、个人介绍、评价、预约挂号、点我收藏、药品…

实现map和set

map和set的底层就是红黑树&#xff0c;所以只要实现了红黑树&#xff0c;就可以考虑封装出map和set。所以本文会重点介绍我是如何一步步封装map和set&#xff0c;就不会再介绍红黑树的实现&#xff0c;实现可看我上篇博客&#xff0c;个人觉得封装中最麻烦的就是模板参数和迭代…

linux系统的启动流程

目录 简述linux的启动流程 git简介 Linux文件 Ubuntu文件汇总 linux文件属性 Linux命令行 更换软件源 简述linux的启动流程 韦东山课程学习路线&#xff1a;APP应用--DEV驱动--项目。 百问网官网 git资料&#xff1a;https://e.coding.net/weiongshan/01_all_series_qu…

来看看这个JS题输出什么?教你通过断电调试一步步看原因

&#x1f3b6;让我们调试看看这段代码 var foo { n: 1 };(function (foo) {console.log(foo.n) foo.n 3var foo { n: 2 }foo.n 4console.log(foo.n)})(foo)console.log(foo.n);&#x1f367;输出结果 &#x1f3a1;调试解析 &#x1f389;第一步 &#x1f38f;第二步 ✨第…

新一代网络框架UringNet,基于最新的异步I/O

介绍 在去年的一篇文章中&#xff0c;笔者曾经提到了最新一代的网络I/O框架UringNet。具体内容可以参考Rings’ Power,性能“世界第一”的Web I/O框架。这是基于最新Linux内核的异步I/O组件io_uring开发的网络框架。由于采用了最新的异步框架&#xff0c;因此在同等硬件配置条件…

五款可替代163邮箱的电子邮件服务

在众多邮箱品牌中&#xff0c;163邮箱作为中国最早的邮箱服务提供商之一&#xff0c;其出海之路并不顺利。本文将探讨163邮箱出海的劣势&#xff0c;并介绍一些替代品&#xff0c;以帮助用户更好地选择适合自己的邮箱服务。 “163邮箱的替代品有哪些&#xff1f;外贸行业适合选…

指针详解第二部分

目录 1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. ⼆级指针 6. 指针数组 7. 指针数组模拟⼆维数组 1. 数组名的理解 首先先看一个代码 #include <stdio.h> int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };printf("&a…

Java8 Lambda.stream.sorted() 方法使用浅析分享

文章目录 Java8 Lambda.stream.sorted() 方法使用浅析分享sorted() 重载方法一升序降序 sorted() 重载方法二升序降序多字段排序 mock代码 Java8 Lambda.stream.sorted() 方法使用浅析分享 本文主要分享运用 Java8 中的 Lambda.stream.sorted方法排序的使用&#xff01; sorted…

UE 4.27.2 和 UE 5.3.1 自定义模块出现的问题

目录 UE4.27.2 和 UE5.3.1 自定义模块的区别无法打开 uproject&#xff0c;无法使用 uproject 右键菜单重建 vs 项目时&#xff0c;怎么重建 vs 项目创建 Module 需要注意的地方为什么是 Modules/ModuleManager.h为什么 UE 5.3.1 报错找不到 Modules/ModuleManager.h怎么验证自…