操作系统理论知识快速总览

操作系统整体架构

搬出考研时的思维导图
在这里插入图片描述

操作系统主要分为

  • 批处理系统(老古董,基本不用了)
  • 实时操作系统(嵌入式中使用较多,RTOS)
  • 分时操作系统(PC中使用较多,Linux,Windows)

分时操作系统和实时操作系统的使用场景不同,没有高低贵贱之分。
注意,Linux是分时操作系统,RT-Linux是实时操作系统

分时系统根据实现的方法不同又可以分为:

  • 微内核架构(目前业界没有纯粹的微内核,Harmony号称要做微内核系统)
  • 宏/单内核架构
  • 混合内核架构(目前Linux和Window都是混合内核,并不是单纯的宏内核)
  • 外核架构(只停留在学界,发了几篇论文,压根没有实现)
  • 虚拟机架构:在操作系统之下再设一个“操作系统”,这个架构主要使用在云服务上。

分时操作系统的基本组成部分为:

  • 进程管理
  • 内存管理
  • 文件管理
  • 设备驱动

实时操作系统的基本组成部分为:

  • 任务调度
  • 中断管理
  • 资源管理
  • 时钟和定时器

分时操作系统中也有时钟和定时器,也有中断管理等。在计算机的发展中,老的技术往往并不是被淘汰,而是被集成在底层,就像进程调度和任务调度,进程调度是更高端的任务调度,任务调度的思想以及实现方法并没有被淘汰,而是被集成。

操作系统的工作以及理念

操作系统的三个特性:虚拟化,并发,持久

来自操作系统导论,与考研的可能不太一样。

  • 虚拟化,即将底层的硬件进行抽象,提供给软件以虚拟的硬件。例如进程的概念就是对CPU的虚拟化,让每个软件以为自己独占CPU,主要面临的问题是如何在虚拟化的同时不损失过多的性能。
  • 并发:多个软件“同时”运行,主要面临的问题是如何调度,确保每个软件都能正常运行,涉及到调度算法,共享资源等问题。
  • 持久:保持信息不丢失,主要面临的问题是保存在哪里?跟这些设备如何进行通信。

除此三项之外,操作系统还要确保每个软件和硬件的安全,不会被其他软件破坏,这个功能贯穿在三大特性中的任何地方。
解决以上几项问题的程序,组合到一起构成了操作系统这么一个大程序。
在这里插入图片描述
Linux kernel的组成

Linux内核的构成

进程管理

进程管理的主要内容包括:

  • 进程模型 & 进程创建 & 进程销毁
  • 进程调度算法:Linux中进程分为实时进程,非抢占式进程和正常进程,对于最常用的正常进程,使用的是CFS调度方法,
  • 进程间通信 & 进程间共享数据 & 锁

内存管理

主要内容包括:

  • 虚拟地址机制 & 虚拟地址下的读取 and 修改
  • TTL快表的引入以及相匹配的机制
  • 内存分配算法 & 内存管理算法
  • 内存共享 & 内存保护

文件系统

  • 虚拟设备,spooling技术
  • VFS虚拟文件系统
  • IO调度
    请添加图片描述

除了上面谈到的这三大部分以外,Linux还有网络编程部分,字符设备部分
请添加图片描述

向上向下:

操作系统向上,需要提供系统调用,例如fork(),exec(),open(),write()这些API,并提供相应的ABI二进制接口供编程语言调用。
操作系统向下,需要根据ISA提供的一系列信息来实现自己的功能,例如中断功能,就需要根据ISA的规定,将负责中断的CSRs设置为相应的状态,并在相应的中断程序入口地址写上相应的处理代码。简而言之就是将软件状态机转化为硬件状态机。
在这里插入图片描述

ISA是标准,是软件硬件相互的约定,并不是计算机中实际存在的实体。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pytest的时候输出一个F后面跟很多绿色的点解读

使用pytest来测试pyramid和kotti项目,在kotti项目测试的时候,输出一个F后面跟很多绿色的点,是什么意思呢? 原来在使用pytest进行测试时,输出中的“F”代表一个失败的测试(Failed),而…

【Css】table数据为空,以“-“形式展现

解决:class类名 它表示的是在一个名为class类名的元素内部,当该元素为空时,会在该元素的:before伪元素上应用一些样式。 这种写法通常用于在元素内容为空时,添加一些占位符或者提示文字

ObjectiveC-10-OOP面向对象程序设计-分类/类别

类别(Category)是OjectiveC的一个特性,主要目的是让开发者可以以模块的形式向类添加方法(扩展),创建标准化的方法列表供给其他人实现。 有些文档也会翻译成类别,其实是一个意思。 概述 语法说明 类别提供了一个简单的…

无人机倾斜摄影技术在智慧城市中的应用

随着智慧城市的不断发展和完善,新兴热门技术也不断崛起。无人机技术作为其中之一,具有操作简单、应用灵活等优势,受到了各个行业的青睐。现阶段,无人机技术与5G移动通信系统、人工智能系统深度融合,实现了无人机技术的…

基于微信小程序的实验室预约系统的设计与开发

个人介绍 hello hello~ ,这里是 code袁~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 🦁作者简介:一名喜欢分享和记录学习的…

C++第十五弹---string基本介绍(一)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、什么是STL 2、STL的版本 3、STL的六大组件 4、STL的重要性 5、如何学习STL 6、STL的缺陷 7、为什么学习string类 7.1、C语言中的字符串…

(python)空值处理

前言 空值(缺失值)在数据中出现的背景通常是数据采集、存储、处理或转换过程中的各种情况和因素. 场景 空值在数据中出现的背景是多种多样的. 数据采集和输入:在数据采集阶段,可能由于人为错误、设备故障、传感器故障或信号丢失等…

上传应用程序到苹果应用商店的工具和要点

引言 在今天的移动应用市场中,将应用程序上传到苹果应用商店(App Store)是许多开发者的首要任务之一。然而,不同操作系统下的开发者可能需要使用不同的工具和遵循不同的要求来完成这一任务。本文将介绍在 macOS、Windows 和 Linu…

可编程网关:如何助力智慧工厂实现智能化管理

一个具体的实际案例,详细说明可编程网关在某汽车零部件智慧工厂中的应用细节: 案例背景: 某大型汽车零部件制造企业,致力于提升生产效率、降低运营成本、确保产品质量,决定对其传统工厂进行全面数字化改造&#xff0…

[C语言]——动态内存管理

目录 一.为什么要有动态内存分配 二.malloc和free 1.malloc 2.free 三.calloc和realloc 1.calloc 2.realloc 3.空间的释放​编辑 四.常见的动态内存的错误 1.对NULL指针的解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放⼀块…

SpringBoot自动装配原理之@Import注解解析

文章目录 1. 概述2. 使用2.1 导入普通Bean2.2 导入配置类2.3 导入 ImportSelector 实现类2.4 导入 ImportBeanDefinitionRegistrar 实现类 3. 区别 1. 概述 当谈及现代Java开发领域中的框架选择时,SpringBoot无疑是无与伦比的热门之选。其简化了开发流程&#xff0…

深澜计费管理系统 任意文件读取漏洞复现

0x01 产品简介 深澜计费管理系统是是一套完善的领先的具有复杂生物型特征的弹性认证计费系统。系统主要由 AAA 认证计费平台、系统运营维护管理平台、用户及策略管理平台、用户自助服务平台、智能客户端模块、消息推送模块、数据统计模块组成。目前在全球为超过 2500 家客户提…

Github上传大文件(>25MB)教程

0.在github中创建新的项目(已创建可忽略这一步) 如上图所示,点击New repository 进入如下页面: 1.下载Git LFS 下载git 2.打开gitbash 3.上传文件,代码如下: cd upload #进入名为upload的文件夹,提前…

Vue3跟Vue2比,性能真的有所提升吗?

答案是肯定的。 说起Vue3的改进,很多人都会说出响应式的改变,与Vue2相比,Vue3采用了proxy的方式对响应式做了重写,而Vue2则是采用defineProperty的方式将对象的属性进行深度遍历,而这种方式想要实现响应式的前与后&am…

【C语言】扫雷【附源码】

一、扫雷游戏规则 尽快找到雷区中的所有不是地雷的格子,而不许踩到地雷。点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果挖开的是地雷,则会输掉游戏。 二、代码思路: 宏定义: Row 和 Col 定义了棋盘的行数和…

VR在线招聘会在企业与毕业生间搭建沟通新平台

在数字化转型的浪潮中,VR在线招聘会作为一种创新的招聘方式,正逐步成为连接企业、学校和毕业生的重要桥梁。 一、VR在线招聘会的实际意义及其优势 VR技术的应用,让在线招聘会超越了传统线上招聘的局限,提供了更为生动、互动的招聘…

【Redis系列】Spring Boot 集成 Redis 实现缓存功能

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

京东详情API接口请求代码源码(java)

京东详情API接口是用于获取京东商品详细信息的接口,它允许开发者通过发送请求,获取商品的描述、价格、评价等信息。下面是一个关于京东详情API接口的示例文档,包括接口地址、请求参数、响应参数等内容。 京东详情API接口文档 接口地址&#x…

机器学习知识点

1鸢尾花分类 鸢尾花分类问题是一个经典的机器学习问题,旨在根据鸢尾花的花萼长度、花萼宽度、花瓣长度和花瓣宽度等特征,将鸢尾花分成三个品种:山鸢尾(setosa)、变色鸢尾(versicolor)和维吉尼亚…

使用 Go-Ora 连接到 Oracle 数据库

前文 《 一鍵啓動 Oracle 23c Free 》 介绍了如何使用容器技术快速拉起 Oracle 23c 数据库。 这个开发者版本可以很便捷的拉起、测试、销毁,对开发者是非常友好的。 本文将介绍如何使用 Go 语言构建项目,并连接到 Oracle 数据库。 Go 环境配置 本文使用的…