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

内核、进程和线程---操作系统

操作系统

操作系统位于用户程序和硬件之间,通过系统调用提供接口可以让应用程序去使用硬件,但是硬件资源的管理和安全控制由操作系统负责
在这里插入图片描述

用户空间和内存空间

在计算机系统中,内存可以分为两大区域:内核空间(Kernel Space)和用户空间(User Space)。
在这里插入图片描述

  • 内核空间,是 操作系统内核代码及其运行时数据结构所在的内存区域,拥有对系统所有资源的完全访问权限,如进程管理、内存管理、文件系统、网络堆栈等。
  • ⽤户空间,是 操作系统为应用程序(如用户运行的进程)分配的内存区域,用户空间中的进程不能直接访问硬件或内核数据结构,只能通过系统调用与内核通信。
  • 当程序 使⽤⽤户空间 时,我们常说该程序在 ⽤户态 执⾏,⽽当程序 使内核空间 时,程序则在 内核态 执⾏。
  • 内核态(Kernel Mode):在内核态下,CPU可以执行所有的指令和访问所有的硬件资源。这种模式下的操作具有更高的权限,主要用于操作系统内核的运行。
  • 用户态(User Mode):在用户态下,CPU只能执行部分指令集,无法直接访问硬件资源。这种模式下的操作权限较低,主要用于运行用户程序。

进程和线程

进程上下文切换

上下文切换是操作系统在多任务处理环境中,将 CPU 从一个进程切换到另一个进程的过程。
在这里插入图片描述

  • 保存当前进程的上下文:操作系统保存当前进程的 CPU 寄存器,程序状态等关键信息。
    • 程序计数器(PC):保存当前指令的地址,比如指向 Fibonacci 计算的下一条指令(假设是 ADD R1, R2)。
    • 栈指针(SP):记录进程 A 的栈顶位置,可能指向保存局部变量的内存地址。
    • 通用寄存器(R0, R1, R2 等):比如 R1 保存当前计算的 Fibonacci 值(如 13),R2 保存前一个值(如 8)。
    • 状态寄存器(PSR):记录 CPU 的状态(如是否溢出、当前特权级别等)。
  • 除了寄存器,操作系统还会保存其他关键信息到 PCB
    • 进程 A 的状态(从“运行”变为“就绪”)。
    • 当前使用的内存页表地址(确保恢复时能访问正确的内存)。
    • 打开的文件描述符(如果有)。

进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源

进程调度算法

多个进程竞争 CPU,CPU怎么分配?
在这里插入图片描述

进程之间的通信

进程是独立的执行实体,拥有独立的地址空间,因此进程间通信需要通过操作系统提供的机制跨越地址空间的隔离。

常见方式包括:

在这里插入图片描述

用户线程和内核线程

  • 用户线程:由用户态的线程库(如 POSIX Pthreads 的某些实现)管理,操作系统内核并不直接感知这些线程。
  • 内核线程:内核直接管理,拥有独立的线程控制块(TCB),可以被内核调度。
  • 用户线程和内核线程的映射:1:1,N:1;N:M。因为多核 CPU现在Linux和Windows采用 1:1 模型。

线程切换

线程切换比进程切换快是因为线程共享同一进程的地址空间和资源,线程切换时只需切换堆栈和程序计数器等少量信息,而不需要切换地址空间,避免了进程切换时需要切换内存映射表等大量资源的开销,从而节省了时间和系统资源

线程通信

线程通信—java

死锁四个条件

  • 互斥
  • 持有并等待
  • 不可剥夺
  • 环路等待

破除死锁只需要消灭一个条件
在这里插入图片描述

银行家算法分配资源

银行家算法的核心思想,就是在分配给进程资源前,首先判断这个进程的安全性,也就是预执行,判断分配后是否产生死锁现象。
就是看 一套流程下来是不是都能满足“剩余需求是不是小于可用资源”

相关文章:

  • Audacity Nyquist插件开发:插件标头详解
  • pnpm node_modules 高效删除
  • BAPLIE船图文件:EDI 核心字段与应用场景解析
  • 一维码与二维码的全面区别及选择指南:详解优劣势与应用
  • HCIP VRRP MSTP 交换综合实验
  • 小测验——合并多个网格文件调用相机参数进行适配
  • Baklib企业CMS的核心组成是什么?
  • 第J8周:Inception v1算法实战与解析
  • 【强化学习】基于深度强化学习的微能源网能量管理与优化策略研究【Python】
  • 2019 CCF CSP-S2.Emiya 家今天的饭
  • [识记]Mysql8 远程授权
  • Spring Boot 实战:MD5 密码加密应用全解析
  • Docker Desktop 界面功能介绍
  • Numpy用法(二)
  • 大语言模型(LLM)应用开篇 | RAG方法论概述 | 构建知识库探索
  • 【环路补偿】环路补偿的九种类型-mathcad计算书免费下载
  • 怎么对asp.web api进行单元测试?
  • LLM模型微调方法
  • 高压NPN
  • 【大模型基础_毛玉仁】5.2 模型编辑经典方法
  • 外交部驻港公署正告美政客:威胁恫吓撼动不了中方维护国家安全的决心
  • 美国考虑让移民上真人秀竞逐公民权,制片人称非现实版《饥饿游戏》
  • 陕西省市监局通报5批次不合格食品,涉添加剂超标、微生物污染等问题
  • 上海虹桥国际咖啡文化节开幕,推出茶咖文化特色街区、宝妈咖啡师培训
  • 混乱的5天:俄乌和谈如何从充满希望走向“卡壳”
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”