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

计算机操作系统(四) 操作系统的结构与系统调用

计算机操作系统(四) 操作系统的结构与系统调用

  • 前言
  • 一、操作系统的结构
    • 1.1 简单结构
    • 1.2 模块化结构
    • 1.3 分层化结构
    • 1.4 微内核结构
    • 1.5 外核结构
  • 二、系统调用
    • 1.1 系统调用的基本概念
    • 1.2 系统调用的类型
  • 总结(核心概念速记):
    • **知识图谱**
    • **重点提炼**


前言

  • 在上一篇博客中,我们详细探讨了操作系统的特性、运行环境与核心功能
  • 了解这些知识后,我们对操作系统如何协调硬件资源与软件程序的交互有了更深入的认识。
  • 本篇博客将继续深入操作系统的世界,聚焦于操作系统的结构与系统调用这两个重要方面
  • 通过学习这些内容,你会对操作系统的内部运作有更清晰的理解,为后续深入学习操作系统的其他知识打下坚实基础

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482


在这里插入图片描述

一、操作系统的结构

1.1 简单结构

  • 简单结构的操作系统就像是一个“大杂烩”,它没有清晰的结构划分,所有功能都混合在一起
  • 早期的操作系统常采用这种结构,开发起来比较简单直接,代码也相对较少。
  • 但是,随着系统功能不断增加,这种结构的缺点就暴露出来了。

由于代码之间的关系不清晰,修改和维护非常困难,一个小的改动可能会影响到系统的其他部分,就像在一团乱麻里找线头,牵一发而动全身。

  • 比如,早期的一些小型操作系统,为了实现基本的文件管理和进程调度功能,代码可能写得很随意,后期想要优化或者添加新功能,难度极大
    在这里插入图片描述

1.2 模块化结构

在这里插入图片描述

  • 为了解决简单结构的问题,模块化结构应运而生
  • 它把操作系统划分为一个个独立的模块,每个模块负责特定的功能,就好比把一个大工厂分成了不同的车间,每个车间各司其职。
  • 这样做的好处是,模块之间的独立性很强,方便开发和维护。如果某个模块出现问题,只需要修改这个模块就行,不会影响其他模块
  • 例如,在一个模块化结构的操作系统中,文件管理模块和进程管理模块是分开的,当需要优化文件管理功能时,只需要专注于文件管理模块的代码,不用担心对进程管理模块造成影响。
  • 不同模块之间通过接口进行通信,这种方式使得操作系统的结构更加清晰
模块名称主要功能与其他模块接口举例
文件管理模块负责文件的存储、读取、删除等操作提供文件打开、关闭、读写等函数接口给其他模块调用
进程管理模块管理进程的创建、销毁、调度等使用文件管理模块的接口来读取进程相关的配置文件

1.3 分层化结构

在这里插入图片描述

  • 分层化结构则是将操作系统按照功能的层次关系进行划分,形成一个层次分明的结构,有点像盖房子,一层一层往上盖,每一层都依赖于下面的层,同时为上面的层提供服务。

最底层通常是硬件相关的功能,越往上功能越高级。这种结构的优点是层次清晰,易于理解和扩展

  • 当需要添加新功能时,可以在合适的层次添加,不会影响到其他层次
  • 比如,在一个具有分层结构的操作系统中,最底层是硬件驱动层,负责与硬件设备进行交互;中间层是内存管理和进程调度层;

最上层是用户接口层。当需要优化内存管理功能时,只需要在内存管理这一层进行修改,不会影响到硬件驱动层和用户接口层

层次名称功能描述对上一层提供的服务依赖的下层服务
硬件驱动层与硬件设备交互,控制硬件工作提供硬件访问接口,如磁盘读写接口直接操作硬件
内存管理层管理内存的分配、回收等提供内存分配和释放函数调用硬件驱动层的内存访问接口
进程调度层调度进程执行根据进程状态进行调度依赖内存管理层分配内存给进程
用户接口层提供用户与操作系统交互的界面接收用户输入并返回处理结果调用进程调度层执行用户请求

1.4 微内核结构

  • 微内核结构是一种比较先进的操作系统结构。
  • 它把操作系统的核心功能尽量简化,只保留一些最基本、最关键的功能在微内核中
    • 比如进程管理、内存管理的基本部分和通信机制等。而其他功能则以服务器的形式运行在用户空间,通过微内核提供的接口进行交互。

这就好比一个公司,核心管理层只负责最重要的决策,其他具体业务交给各个部门去做。微内核结构的优点是系统的扩展性和灵活性非常强,当需要添加新功能或者修改某个功能时,只需要在相应的服务器中进行调整,不需要修改微内核本身。

同时,由于微内核很小,安全性也相对较高。例如,在一些嵌入式操作系统中,微内核结构能够很好地适应不同的硬件环境,方便开发者根据需求定制系统功能

1.5 外核结构

在这里插入图片描述

  • 外核结构与前面几种结构有所不同,它的设计理念是将硬件资源以一种更灵活的方式呈现给上层软件。
  • 外核并不像传统操作系统那样对硬件资源进行过多的管理和抽象,而是让上层软件根据自己的需求去直接管理硬件资源。
  • 这就好比把一间毛坯房交给住户,住户可以按照自己的想法去装修和布置。外核结构适用于一些对性能要求极高、对资源管理有特殊需求的场景,比如高性能计算领域
  • 在这种结构下,上层软件可以根据具体的应用场景,优化对硬件资源的利用,提高系统的整体性能。

二、系统调用

1.1 系统调用的基本概念

  • 系统调用是操作系统提供给应用程序的接口,它就像是一扇通往操作系统内部功能的大门
  • 应用程序通过系统调用请求操作系统提供服务,比如读取文件、创建进程等。为什么应用程序不能直接访问硬件资源呢?
  • 这是因为操作系统需要对硬件资源进行统一管理,保证系统的稳定性和安全性。如果每个应用程序都可以随意访问硬件,那么系统很容易出现混乱。

当应用程序发起系统调用时,CPU会从用户态切换到内核态,然后操作系统根据系统调用的类型执行相应的操作

  • 操作完成后,再把结果返回给应用程序,CPU又从内核态切换回用户态。
  • 例如,当你在一个文本编辑软件中保存文件时,软件会调用操作系统的文件保存系统调用,操作系统接收到这个请求后,会在磁盘上找到合适的位置存储文件内容,最后把保存成功或者失败的信息返回给文本编辑软件

1.2 系统调用的类型

系统调用的类型有很多,常见的包括以下几类:

系统调用类型功能描述举例
进程管理创建、销毁进程,进程调度等fork()函数用于创建一个新进程
文件管理文件的打开、关闭、读写、删除等open()函数用于打开一个文件,read()函数用于读取文件内容
内存管理内存的分配、回收等malloc()函数用于在堆内存中分配指定大小的内存空间
设备管理对硬件设备的控制和操作write()函数用于向设备(如打印机)输出数据
信息维护获取和设置系统信息,如时间、日期等time()函数用于获取当前系统时间

这些系统调用为应用程序提供了丰富的功能支持,使得开发者可以专注于应用程序的业务逻辑,而不用过多地关注底层硬件的细节

总结(核心概念速记):

核心概念速记
操作系统结构与系统调用 = 多样结构演进 + 丰富调用体系 + 性能与应用关联

  • 操作系统结构演进
    • 简单结构(早期“大杂烩”)→ 模块化结构(功能分模块)→ 分层化结构(功能分层)→ 微内核结构(核心精简)→ 外核结构(灵活资源管理)。
    • 简单结构易开发难维护微内核结构扩展性与安全性高外核结构适合高性能场景
  • 系统调用体系
    • 系统调用是应用与系统交互接口CPU在用户态与内核态切换完成调用
    • 常见调用类型:进程管理(fork())、文件管理(open()read())、内存管理(malloc())、设备管理(write())、信息维护(time())。
  • 性能与应用关联
    • 不同结构影响系统性能与扩展性,如分层化结构便于功能扩展微内核结构可定制性强
    • 系统调用支撑应用功能实现,开发者通过调用专注业务逻辑,提升开发效率。

操作系统结构对比

结构类型特点优点缺点适用场景
简单结构功能混合,无清晰划分开发简单,代码量少维护困难,牵一发而动全身早期小型系统、简单功能场景
模块化结构功能分模块,模块独立方便开发维护,模块问题不影响其他模块接口设计复杂中等规模系统,功能相对独立场景
分层化结构功能分层,上层依赖下层层次清晰,易于理解扩展,修改一层不影响其他层层间交互可能有性能损耗大型系统,功能层次分明场景
微内核结构核心功能精简,其他功能以服务器形式在用户空间运行扩展性灵活性强,安全性高微内核与服务器通信开销嵌入式系统、对安全性扩展性要求高场景
外核结构硬件资源灵活呈现给上层软件,上层直接管理资源适应特殊资源管理需求,性能高上层软件开发难度大高性能计算等对资源管理有特殊需求场景

系统调用分类与功能关系

调用分类 → 功能领域 → 典型调用函数 → 应用场景  ↓          ↓           ↓            ↓  进程管理 → 进程操作 → `fork()` → 创建新进程  文件管理 → 文件操作 → `open()`、`read()` → 读写文件  

知识图谱

计算机操作系统(四) 操作系统的结构与系统调用  
├─ 操作系统结构  
│  ├─ 简单结构(早期“大杂烩”)  
│  ├─ 模块化结构(功能分模块)  
│  ├─ 分层化结构(功能分层)  
│  ├─ 微内核结构(核心精简)  
│  └─ 外核结构(灵活资源管理)  
├─ 系统调用体系  
│  ├─ 基本概念(应用与系统交互接口)  
│  ├─ 调用类型(进程/文件/内存/设备/信息维护)  
│  ├─ 调用流程(用户态到内核态切换)  
│  └─ 应用场景(支撑应用功能实现)  
├─ 关键术语  
│  ├─ 进程管理、文件管理、内存管理  
│  ├─ 用户态、内核态、系统调用接口  
│  └─ 模块化、分层化、微内核、外核  
└─ 性能与应用  ├─ 结构对性能扩展性影响  ├─ 系统调用对应用开发作用  └─ 不同场景下结构与调用选择  

重点提炼

  1. 操作系统结构特色

    • 简单结构向复杂结构演进,满足不同规模与功能需求。
    • 微内核结构和外核结构代表先进设计理念,适应特殊场景需求。
  2. 系统调用核心逻辑

    • 系统调用是应用获取系统服务关键途径,保证系统安全稳定。
    • 熟悉常见系统调用类型,有助于高效开发应用程序。
  3. 结构与调用实践意义

    • 根据应用场景选择合适操作系统结构,优化系统性能。
    • 合理使用系统调用,避免过度或不当调用影响系统效率。
  4. 技术演进趋势

    • 单一结构设计混合结构融合,提升系统综合性能。
    • 系统调用接口标准化与简化,降低开发门槛。

操作系统结构性能对比表

指标简单结构模块化结构分层化结构微内核结构外核结构
开发难度中等较高较高
维护难度中等
扩展性很好好(特定场景)
安全性中等中等中等(依赖上层软件)
性能开销低(无额外开销)中等(接口调用开销)中等(层间交互开销)较高(通信开销)低(直接管理资源)

操作系统技术演进脉络

技术演进 —— 简单结构(早期) → 模块化结构(功能分治) → 分层化结构(层次管理) → 微内核/外核结构(先进设计)  ↓         ↓               ↓               ↓  
应用升级 —— 简单功能实现 → 中等规模应用 → 大型复杂系统 → 特殊场景定制系统  

以上就是对本次关于操作系统博客内容的总结,后续我们将深入探讨操作系统更多知识。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的操作系统博客专栏
https://blog.csdn.net/2402_83322742/category_12916780.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

相关文章:

计算机操作系统(四) 操作系统的结构与系统调用

计算机操作系统(四) 操作系统的结构与系统调用 前言一、操作系统的结构1.1 简单结构1.2 模块化结构1.3 分层化结构1.4 微内核结构1.5 外核结构 二、系统调用1.1 系统调用的基本概念1.2 系统调用的类型 总结(核心概念速记)&#xf…...

Docker安装,并pullMySQL和redis

卸载原Docker 您的 Linux 发行版可能提供非官方的 Docker 软件包,这可能与 Docker 提供的官方软件包冲突。在安装 Docker Engine 正式版之前,您必须先卸载这些软件包。 sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common…...

第三天 开始Unity Shader的学习之旅之第二天的补充

Unity Shader的学习笔记 第三天 开始Unity Shader的学习之旅之第二天的补充 文章目录 Unity Shader的学习笔记前言一、Unity 提供的内置文件和变量1. 内置的包含文件2. UnityCG.cginc中的常用结构体 二、Unity 提供的Cg/HLSL语义1. 从应用阶段传递模型数据给顶点着色器时Unity…...

DeepSeek技术架构解析:MoE混合专家模型

一、前言 2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不…...

【正点原子】AI人工智能深度学习(RV1126/RK3568/RK3588)-第1期 准备篇

1.1SDK编译后的目录 1、真正的根文件系统镜像存放目录 2、非必须,负责系统升级等,kerneldtbramdisk组成的根文件系统 1.2文件系统分区 1.3开机自启动 1.6设置静态ip地址 1.8RKMedia框架/编译测试SDK自带RKMedia例程 出厂系统以下内容都是默认…...

PCB沉金和镀金的区别

本文通过多方面角度对比两者的区别。 一.成本和工艺复杂度 沉金:成本较高,制作过程中消耗的金盐多。工艺的参数控制上较严格,需防止“黑盘效应”。 黑盘效应:是指在PCB(印刷电路板)的化学镀镍金&#xf…...

靶场(十五)---小白心得思路分析---LaVita

启程: 扫描端口,发现开放22,80端口,发现ws.css可能存在exp,经查发现无可利用的exp PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.4p1 Debian 5deb11u2 (protocol 2.0) | ssh-hostkey: | 3072 c9…...

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...

Pi型隶属函数(Π-shaped Membership Function)的详细介绍及python示例

我们前文已经深度解读了三角形、梯形、高斯、S型和Z型隶属函数,现在转向Pi型。当然我们先简要回顾不同隶属函数的特点和曲线效果。了解每种隶属函数的特性是为了更好的应用。 一、回顾五种隶属函数的特点 1.从每种隶属函数的结构和特点角度对比。三角形隶属函数&am…...

MySQL 入门大全:常用函数

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

轻量级TLS反向代理工具TLS-reverse-proxy:打造安全通信桥梁

在数字化浪潮席卷全球的今天,数据隐私与传输安全已成为企业及个人的核心关切。TLS(传输层安全协议)作为互联网通信的"隐形卫士",承担着保护数据在传输过程中不被窃取或篡改的重要使命。然而,对于许多传统服务…...

SpringBoot3实战(SpringBoot3+Vue3基本增删改查、前后端通信交互、配置后端跨域请求、数据批量删除(超详细))(3)

目录 一、从0快速搭建SpringBoot3工程、SpringBoot3集成MyBatis、PageHelper分页查询的详细教程。(博客链接) 二、实现前端与后端通信对接数据。(axios工具) &#xff08;1&#xff09;安装axios。(vue工程目录) &#xff08;2&#xff09;封装请求工具类。(request.js) <1&…...

AF3 Rotation 类解读

Rotation 类(rigid_utils 模块)是 AlphaFold3 中用于 3D旋转 的核心组件,支持两种旋转表示: 1️⃣ 旋转矩阵 (3x3) 2️⃣ 四元数 (quaternion, 4元向量) 👉 设计目标: 允许灵活选择 旋转矩阵 或 四元数 封装了常用的 旋转操作(组合、逆旋转、应用到点上等) 像 torch.…...

JVM垃圾回收笔记02-垃圾回收器

文章目录 前言1.串行(Serial 收集器/Serial Old 收集器)Serial 收集器Serial Old 收集器相关参数-XX:UseSerialGC 2.吞吐量优先(Parallel Scavenge 收集器/Parallel Old 收集器)Parallel Scavenge 收集器Parallel Old 收集器相关参数-XX:UseParallelGC ~ -XX:UseParallelOldGC-…...

Linux上位机开发实战(编写API库)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们自己编写linux上位机软件的时候&#xff0c;尽量都是通过框架库的形式来开发。这就是所谓的低耦合&#xff0c;高内聚。相似的功能、模块和算法…...

深入浅出JVM性能优化:从理论到实践

一、JVM架构与内存模型深度解析 1.1 JVM运行时数据区全景图 方法区&#xff08;元空间&#xff09;&#xff1a;存储类信息、常量池等元数据堆内存&#xff1a;对象实例存储核心区域 Young Generation&#xff08;新生代&#xff09; Eden区&#xff08;对象诞生地&#xff0…...

Redis Sentinel 详解

Redis Sentinel 详解 1. 什么是 Redis Sentinel&#xff1f;有什么用&#xff1f; Redis Sentinel&#xff08;哨兵&#xff09; 是 Redis 官方提供的高可用性解决方案&#xff0c;主要用于监控、通知和自动故障转移。当 Redis 主节点&#xff08;master&#xff09;发生故障…...

器件功耗模型原理

器件功耗模型原理 谷歌提供了一套通用的器件耗电模型和配置方案&#xff0c;先对器件进行耗电因子拆解&#xff0c;建立器件功耗模型&#xff0c;得到一个器件耗电的计算公式。通过运行时统计器件的使用数据&#xff0c;代入功耗模型&#xff0c;就可以计算出器件的功耗。例如…...

拥抱成长型思维:解锁持续进步的人生密码

我强烈推荐4本可以改变命运的经典著作&#xff1a; 《寿康宝鉴》在线阅读白话文《欲海回狂》在线阅读白话文《阴律无情》在线阅读白话文《了凡四训》在线阅读白话文 一、什么是成长型思维&#xff1f; 成长型思维&#xff08;Growth Mindset&#xff09;由斯坦福大学心理学家卡…...

Ubuntu上查看GPU使用情况并释放内存

先用nvidia-smi查看GPU当前使用情况 再用fuser 命令查找对应显卡上占用 GPU 的进程 最后查到了用kill -9强制杀掉进程&#xff08;PID&#xff09;即可...

解决思科交换机无法访问局域网外设备

问题背景 有时&#xff0c;我们需要远程连接来管理一台思科交换机&#xff0c;例如使用SSH协议。然而交换机运作在链路层&#xff0c;这就需要交换机有一个网络层地址&#xff0c;来接纳基于IP协议的远程访问请求。于是&#xff0c;我们依靠设置一个带有IP地址的交换机虚拟接口…...

Unity Shader编程】之透明物体渲染

以下是针对您提出的关于 Unity Shader 渲染 Pass 的查看方法、多个 Pass 的影响、Pass 的含义&#xff0c;以及 Unity 渲染物体的流程和处理多个透明/半透明/不透明物体的详细解答。 1. Unity Shader 渲染 Pass 的查看方法 查看 Pass 的方法 通过 Shader 代码&#xff1a; 打开…...

fopen和open 等区别是什么?文件描述符与文件描述指针区别

FILE *fp fopen(path, "w"); int fd open(path,) 1.区别 函数定义所属库返回类型fopen高级文件操作函数&#xff0c;提供缓冲机制标准 C 库 (stdio.h)FILE*&#xff08;文件指针&#xff09;open低级文件操作函数&#xff0c;直接调用系统接口Unix/Linux 系统调用…...

什么是张量计算

以下是对张量计算的详细介绍&#xff0c;结合数学、物理学及计算机科学等多领域视角&#xff1a; 一、张量的基本定义与性质 1. 张量的数学定义 张量是向量空间及其对偶空间的笛卡尔积上的多重线性映射&#xff0c;可视为多维数组或几何对象。其核心特征在于&#xff1a; 坐…...

【1】Java 零基础入门学习(小白专用)

【1】Java 零基础入门学习 &#x1f4da;博客主页&#xff1a;代码探秘者 ✨专栏&#xff1a;《JavaSe从入门到精通》 其他更新ing… ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;作者水…...

[c语言日寄]枚举类型

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

替代-UX设计师

初创公司如何在没有设计师的情况下 打造实用的用户体验 一个常见的捷径是使用预构建的组件库&#xff0c;如谷歌的 Material UI它们为你提供了构建块&#xff0c;但它们并没有为你考虑整个用户流程你仍然需要弄清楚所有这些是如何组合在一起的但是&#xff0c;很多时候&#x…...

【氧化镓】​​​​掺杂在β-Ga2O3材料中引入的深能级缺陷

1. 引言 1.1 β-Ga2O3材料的特性与应用前景 β-Ga2O3作为一种新型的宽禁带半导体材料,具有约4.6-4.8 eV的宽带隙、高击穿场强(约8 MV/cm)和优异的热稳定性,适用于高功率和射频电子器件。其独特的物理特性使其在高电压、高频率以及高功率应用场景中具有巨大的潜力。例如,…...

:ref 和 this.$refs 的区别及 $ 的作用

:ref 在 Vue 模板中&#xff0c;:ref 这种写法是使用了 Vue 的动态绑定语法&#xff08;: 是 v-bind: 的缩写&#xff09;。ref 是一个特殊的属性&#xff0c;用于给元素或组件注册引用信息。当你使用 :ref 时&#xff0c;通常是在动态地为元素或组件设置引用名称&#xff0c;…...

分库分表后,跨库查询和分布式事务解决方案

分库分表主要是为了解决单库单表的性能瓶颈,但拆分后数据分散在不同库和表中,这就导致了跨库查询和分布式事务的问题。 以下是实际项目中应对这些问题的核心策略与技术实现: 一、跨库查询解决方案 1. 全局表(广播表) 适用场景:基础数据表(如地区表、配置表)数据量小且…...