码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 操作系统学习-2. 进程和多线程


    文章目录

      • 1. 认识进程
        • 1.1 什么是程序
        • 1.3 什么是进程
        • 1.3 进程拥有的状态
      • 2. 进程的三状和中断响应过程
        • 2.1 进程的三种状态
        • 2.2 进程的中断
      • 3. 多核和多道程序-CPU利用率
      • 4. 认识线程
        • 4.1 为何需要线程
        • 4.2 线程定义
        • 4.3 线程切换过程
      • 5. 线程的竞争条件和临界区
        • 5.1 临界区和竞争条件
        • 5.1 互斥算法案例
        • 5.3 硬件实现TSL指令互斥
        • 5.4 信号量和互斥量
      • 6. CAS和QAS
        • 6.1 CAS
        • 6.2 AQS

    慕课网操作系统教程

    1. 认识进程

    1.1 什么是程序

    在这里插入图片描述

    1.3 什么是进程

    在这里插入图片描述

    • 进程是正在运行程序的抽象
    • 也是软件执行在内存中副本
    • 进程是资源分配的最小单位,线程是执行计算最小单位

    1.3 进程拥有的状态

    在这里插入图片描述

    • 扩展:JVM虚拟机中每个线程私有的程序计数器作用:
      在这里插入图片描述
    • 进程因为其有状态,其实是一个数据结构,一个表,对操作系统来说,是一种描述,操作系统知道如何跑这个表,通过这个表,知道寄存器指向哪个地址,将地址的指令load到程序指针上去,知道要找哪个内存。。。
      在这里插入图片描述
      在这里插入图片描述
    • fock()创建线程实例
      在这里插入图片描述
      在这里插入图片描述

    2. 进程的三状和中断响应过程

    2.1 进程的三种状态

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

    • 答案:均不可

    2.2 进程的中断

    在这里插入图片描述

    • step1:保存当前进程状态:SP栈指针,PC指针
    • 保证进程可恢复
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

    3. 多核和多道程序-CPU利用率

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

    4. 认识线程

    4.1 为何需要线程

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

    4.2 线程定义

    在这里插入图片描述

    • 1是因为进程切换成本很高
    • 2是进程内部又分很多工作要做,因此,在进程中创建一种更加轻量的执行单位-线程
      在这里插入图片描述
      在这里插入图片描述
    • 例如Java创建线程跑在JVM虚拟机上,无需操作系统感知

    4.3 线程切换过程

    在这里插入图片描述

    5. 线程的竞争条件和临界区

    5.1 临界区和竞争条件

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

    5.1 互斥算法案例

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

    5.3 硬件实现TSL指令互斥

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

    5.4 信号量和互斥量

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

    6. CAS和QAS

    在这里插入图片描述

    6.1 CAS

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

    6.2 AQS

    在这里插入图片描述

  • 相关阅读:
    k8s实战案例之部署redis单机和redis cluster
    HTML做一个简单漂亮的宠物网页(纯html代码)
    牛客前端宝典——刷题 ##Day8
    List 模拟实现
    java可以跨平台的原因是什么?
    RabbitMQ: Routing结构
    Blender点操作
    java计算机毕业设计家教平台系统源码+mysql数据库+系统+lw文档+部署
    C语言-指针初阶(6)
    1000 mil = 2.54 cm , 板子导电速度约为 1.5x10^8 m/s
  • 原文地址:https://blog.csdn.net/xingzhes_/article/details/126089262
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号