热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

ch3_2多进程中寄存器的切换

运行中的程序在进行切换时,可以分为以下两类:线程:只涉及指令的切换,硬件资源没有切换;进程:包


运行中的程序在进行切换时, 可以分为以下两类:


  1. 线程: 只涉及指令的切换, 硬件资源没有切换;
  2. 进程: 包含指令的切换,以及硬件资源的切换, 其中映射表便是一种内存资源。
    在这里插入图片描述


1. 进程间的切换示意图

这一讲中, 只会涉及指令的切换,暂不考虑资源的切换。

本质就是 映射表不改变, pc 指针改变


1.用户级线程

1.1 线程 thread

由前面的进程之间的切换可知,

不同的进程之间在进行切换时, 需要切换各自进程所对应的PCB, 以及 各个进程对应的 映射表;

由于不同的进程对应不同的映射表, 切换时,代价较大;

为了避免这种代价, 在切换时, 使得不同的程序之间共享同一张 映射表;

在这里插入图片描述



2. 运行的程序之间 共享资源 , 如内存资源, 数据资源 这些的共享

线程: 保留了程序并发的有点;
减少了进程切换的代价。


1.2 线程的实例

浏览器的使用:


  • 一个线程用来从服务器接受数据

  • 一个线程用来显示文本;

  • 一个线程用来处理图片(如解压缩)

  • 一个线程用来显示图片;

线程之间的资源共享:


  • 将从服务器中接受的数据, 如文本,图片数据 放在缓冲区中, 而其他的进程需要从映射表中读数据;

而如果使用进程完成上述任务,
进程之间,地址是分离的。
由于不同的进程,会有不同的映射表, 那么这些映射表将会存放在内存的不同区域, 这样同一份数据占用了更多的内存,这没有必要。

一个线程在下载数据时, 这个过程中,切换到其他线程, 用来显示文本数据;
当文本数据显示完成之后, 在重新切换到下载进程。


1.3 代码实现

pthread_create() 创建多个线程,

在各个线程执行的过程中,增加一些内容,

Yield () 函数 实现线程之间的切换,







推荐阅读
  • 本文深入探讨了PHP电商网站的开发成本,涵盖从基础建站到高级定制的各种费用因素。 ... [详细]
  • 本文探讨了如何利用 Application 对象在 PHP 应用程序中共享数据,特别是在多用户环境中保持数据的一致性和安全性。文章还介绍了 Application 对象的基本结构、方法和事件,并提供了实际应用示例。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • 时序数据是指按时间顺序排列的数据集。通过时间轴上的数据点连接,可以构建多维度报表,揭示数据的趋势、规律及异常情况。 ... [详细]
  • 使用URLHttpConnection获取并展示图片至ImageView的方法
    本文介绍如何通过URLHttpConnection方式从网络加载图片,并将其显示在Android应用的ImageView组件上。包括布局文件和Java代码的具体实现。 ... [详细]
  • React Native 开发者如何高效替换 Android 图标与布局资源
    针对未接触过 Android 开发的 React Native 开发者,本文提供了详细的指南,帮助他们了解如何轻松替换 Android 应用中的图标和布局资源,包括对 APK 结构的基本认识及多种替换方法。 ... [详细]
  • 探讨了requireJS的domReady插件与window.onload事件在实际应用中的不同表现,特别是在处理页面加载过程中图片资源的影响。 ... [详细]
  • 解决MySQL Administrator 登录失败问题
    本文提供了解决在使用MySQL Administrator时遇到的登录错误的方法,包括启动变量和服务部分禁用的问题。同时,文章还介绍了通过安全配置模式来解决问题的具体步骤。 ... [详细]
  • 浏览器、中间件与服务器的交互机制
    本文详细探讨了浏览器、中间件和服务器之间的交互过程,特别是HTTP请求的完整流程,包括DNS解析、TCP连接建立及数据传输等关键步骤。 ... [详细]
  • 远程访问用户 Kindle通过电子书实现控制
    介绍自2007年以来,亚马逊已售出数千万台Kindle,令人印象深刻。但这也意味着数以千万计的人可能会因为这些Kindle中的软件漏洞而被黑客入侵。他 ... [详细]
  • 本文记录了作者在尝试启用IIS的Gzip压缩功能时遇到的挑战,特别是当企业内部网络使用ISA服务器作为代理时的问题。文章详细描述了问题的发现过程、解决步骤以及最终的解决方案。 ... [详细]
  • 本项目旨在开发一款能够高效转换MODBUS协议至MQTT协议的设备,以适应现代物联网环境下的数据传输需求。通过此装置,可以有效解决不同品牌传感器协议不兼容的问题,简化云端接入流程,提高数据处理效率。 ... [详细]
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 计算机视觉初学者指南:如何顺利入门
    本文旨在为计算机视觉领域的初学者提供一套全面的入门指南,涵盖基础知识、技术工具、学习资源等方面,帮助读者快速掌握计算机视觉的核心概念和技术。 ... [详细]
  • 本文详细解析了Java中流的概念,特别是OutputStream和InputStream的区别,并通过实际案例介绍了如何实现Java对象的序列化。文章不仅解释了流的基本概念,还探讨了序列化的重要性和具体实现步骤。 ... [详细]
author-avatar
少少_LV
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有