2、操作系统之软件基础

devtools/2025/3/18 9:12:50/

一、硬件支持系统 ,系统管理硬件

  • 操作系统核心功能可以分为:
    • 守护者:对硬件和软件资源的管理
    • 协调者:通过机制,将各种各样的硬件资源适配给软件使用。
  • 所以为了更好的管理硬件,操作系统引进了软件。其中3大核心部分是:
    • 文件【我们需要知道怎么用文件来访问磁盘和I/O设备】
    • 虚拟内存【虚拟内存是虚拟的,为应用程序提供远大于物理内存限制的虚拟地址空间。】
    • 进程【真正用来访问资源的部分】
      在这里插入图片描述

二、进程(process)

1、理解

进程就是一个正在执行的程序实例

进程的结构

  • 每个进程里都有一个独立的地址空间
    • 这个空间一开始是0 ,不断的运行,就成了连续的存储空间。在这个空间,不仅程序能运行起来,还能调用各种数据,等等。
  • 每个进程都有相关的资源
    • 这些资源有PS , PC寄存器等等。

简而言之:进程就是一个被封装的容器,它有运行资源的一切信息。

  • 如果 我开了QQ,又开了微信。那我的进程就有2个,它要如何合理地获得CPU资源

    • 操作系统通过时间片轮转等调度策略周期性地挂起一个进程并启动另一个,确保所有进程都能公平地获得CPU资源。
    • 当进程被暂时挂起,就必须保存状态了。以便未来某个时候可以继续使用。状态下的信息【比如寄存器,地址空间,上下文等等】都会被存储在进程表中。
      • 进程表用于跟踪系统中所有进程的状态信息
  • shell和进程

    • 用户可以使用shell来控制进程。让一个进程产生更多进程(这些由进程产生的进程就是子进程)【可能有些抽象,可以这样理解,如下:】。
      • 在这里插入图片描述
      • 我在shell使用ls 命令,这个命令展现了当前路径有的文件件。我本来是在运行shell的linux环境虚拟机【当前一个主进程】,我想看文件夹,我为了看文件夹,使用了ls命令,在执行这个ls命令的过程就是子进程
    • 所以进程就有树的样子了-----进程树
    • 在这里插入图片描述
  • 进程该如何通信

    • 当进程间协同工作完后,使用机制来交换信息,也就是进程间通信(IPC) 机制。
    • 除了进程间通信(IPC)外,操作系统还使用一系列的系统调用来管理进程资源。
  • 进程接收信息,如果信息经常不能准时到达

    • 为了确保可靠传输,进程会采用定时器。【这种行为也就是异步】
      • 比如:进程在外部信息发送出去的第4秒还没有接收到。就发一个通知提醒,就可能重新发送了。

异步行为【分为软件异步、硬件异步】:
异步行为是指任务可以并发执行,不需要等待前一个任务完成。异步操作不会阻塞当前线程,任务完成后通过回调、Promise 或事件通知。

在这里插入图片描述

  • 那么事件1发生什么事情?
    • 事件1作用:保护现场
    • 保护的内容有
      • PC值----由CPU保护
      • PSW寄存器—操作系统软件保护
      • 基础寄存器—操作系统软件保护
      • 不过在现代有可以都用CPU保护的了。CortexM芯片等等。
  • 事件2发生什么事情?
    • 事件2作用:确定中断入口在哪里
    • 硬件CPU来准备—操作系统OS和CPU都能来提供中断向量表【中断处理函数的数组空间】
  • 事件3发生什么事情?
    • 事件3作用:中断处理函数
    • 操作系统来准备。
  • 事件4发生什么事情?
    • 事件4作用:中断返回【普通函数返回】
    • 软件实现,编译器来实现。
    • 特定的汇编写,不能c语言。
      • 普通函数
        • PC值—>硬件保护
        • PSW寄存器—>不需要保护。
        • 基础寄存器—>编译器保护

同步行为
同步行为是指任务按顺序执行,前一个任务完成后,才能开始下一个任务。同步操作会阻塞当前线程,直到任务完成。

三、虚拟内存

在这里插入图片描述
从下往上看,分为进程代码和数据区、堆数据区、共享库区、堆栈区、内核内存区。

这部分的基础先了解这个图片就行了。

常驻内存是指一直都在,不能删掉。

四、并发和并行

  • 并发是指多个任务在同一时间段内交替执行但在任意时刻可能只有一个任务在运行。并发通过任务切换(上下文切换)实现,给人一种多个任务同时运行的错觉。
  • 如图:同一时间段内
时间轴: |----任务A----|----任务B----|----任务A----|----任务B----|
  • 并行是指多个任务在同一时刻同时执行。并行需要多核 CPU 或多个处理器,每个任务运行在不同的核心上。
  • 如图:同一时刻内
时间轴: |----任务A----||----任务B----||----任务C----|

五、系统调用【超重点】

在这里插入图片描述

通过上图能明白,硬件不能直接让用户使用它。
所以提出了系统调用

  • 系统调用

    • 定义:系统调用是操作系统内核(Kernel)为应用程序提供的一组接口,允许用户程序(运行在用户态)请求内核(运行在内核态)代为执行特权操作(如文件读写、进程创建等)。
    • 系统调用依赖硬件和OS(操作系统)
  • 系统调用的工作原理

  • (1) 调用流程

    • 用户程序触发调用
      • 通过特定函数(如C标准库中的 printf() → 底层调用 write())或直接代码触发
    • 用户态 → 内核态切换
      • 通过软中断(如 int 0x80)或专用指令(如 syscall)进入内核态
    • 执行内核服务
      • 内核根据系统调用号(如 Linux 的 read 对应 0 号)调用对应的内核函数。
    • 返回结果
      • 内核将结果传递给用户程序,回到用户态继续执行。
  • (2) 系统调用号(syscall number)

    • 每个系统调用对应唯一编号,通过寄存器传递(如 x86-64 Linux 中,rax 存放系统调用号)。
    • 示例:Linux 的 sys_write 在 x86-64 中的调用号是 1,可通过命令 grep __NR_write /usr/include/asm/unistd_64.h 查看。
  • (3) 参数传递

    • 寄存器传递参数:参数按顺序放入 rdi, rsi, rdx, r10, r8, r9(x86-64 架构)。
      在这里插入图片描述

http://www.ppmy.cn/devtools/167752.html

相关文章

基于django+vue的购物商城系统

开发语言:Python框架:djangoPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…

56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 登录模块开发教程(十):总结与展望 文章目录 HarmonyOS NEXT 登录模块开发教程(十&a…

解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题

问题背景 今天在做 电脑串流ipad pro 的时候发现了2个问题: 1.ipadpro 接上鼠标后,滚轮上下反转,这个是苹果自己的模拟造成的问题,在设置里选择“触控板与鼠标”。 关闭“自然滚动”,就可以让鼠标滚轮正向滚动。 2. ipadpro 分…

css实现报警特效

报警特效通常包括闪烁、颜色变化或者动态的警示框。 这里我优先使用纯CSS和原生JavaScript,避免使用框架。同时,注意浏览器的兼容性,比如使用浏览器前缀或者替代属性。 CSS报警特效实现方法 报警特效通常需要结合颜色渐变、闪烁动画、动态…

python实现接口自动化

代码实现自动化相关理论 代码编写脚本和工具实现脚本区别是啥? 代码: 优点:代码灵活方便缺点:学习成本高 工具: 优点:易上手缺点:灵活度低,有局限性。 总结: 功能脚本:工…

【后端】【django】Django 自带的用户系统与 RBAC 机制

Django 自带的用户系统与 RBAC 机制 Django 自带的用户系统(django.contrib.auth)提供了 身份验证(Authentication) 和 权限管理(Authorization),能够快速实现 用户管理、权限控制、管理员后台…

机器学习周报--文献阅读

文章目录 摘要Abstract 1 文章内容1.1 模型结构1.1.1 LSTMAT的结构设置1.1.2 AWPSO算法优化模型 1.2 实验与结果讨论1.2.1 处理缺失数据1.2.2 模型评估指标1.2.3 比较实验1.2.4 消融实验(ABLATION EXPERIMENTS) 2相关知识2.1 自适应权重粒子群优化&#…

C++(14)—类和对象(中) ④赋值运算符重载

文章目录 一、运算符重载的基本概念1.1 什么是运算符重载?1.2 运算符重载的限制 二、运算符重载的实现方式2.1 成员函数重载2.2 全局函数重载 三、赋值运算符重载3.1 赋值运算符重载的作用3.2 赋值运算符重载的特点 四、深拷贝与浅拷贝4.1 浅拷贝的问题4.2 深拷贝的…