手机是如何实现多个应用程序同时运行的?

想要理解这个问题,我们要先了解一下操作系统以及进程相关的知识:

操作系统的功能有很多,

例如:

  • 进程管理(Process Management)

    • 功能:创建和终止进程,进程调度,进程同步与通信,进程状态管理。
    • 作用:确保CPU资源被有效利用,实现多任务处理。
  • 内存管理(Memory Management)

    • 功能:内存分配与释放,内存保护,虚拟内存管理(分页和分段),内存交换。
    • 作用:保证进程之间的内存隔离和高效利用系统内存。
  • 文件系统管理(File System Management)

    • 功能:文件和目录的创建、删除,文件读写和访问控制,存储设备的管理。
    • 作用:提供一个方便和高效的文件存储和访问机制。
  • 设备管理(Device Management)

    • 功能:设备驱动程序管理,设备分配与回收,I/O设备的访问控制。
    • 作用:实现对各种硬件设备的控制和管理,为用户和应用程序提供一致的设备访问接口。

注意:

操作系统不会直接操作硬件设备,而是通过硬件厂商提供的驱动程序间接操作硬件设备

操作系统的功能还有很多,这里就不细说了,不过大致可以概括为

1.高效使用和管理硬件设备。

2.为程序提供一个高效、安全的运行环境。

一、什么是进程?

大家都知道后缀为.exe的是一个应用程序

如果不启动它,实际上就是硬盘上的一个文件

如果启动这个程序,那么他就是一个进程(或者多个):

进程具有一些关键特性,比如

  • 独立性:每个进程有自己独立的地址空间,不同进程之间的地址空间是隔离的。这意味着一个进程不能直接访问另一个进程的内存区域,提供了进程间的隔离性和安全性。

  • 资源拥有者:进程拥有自己的一组资源,例如打开的文件、网络连接、CPU时间片和内存区域。这些资源是进程独立运行所必需的。

  • 状态信息:进程有自己的状态信息,包括寄存器状态、程序计数器、堆栈指针等。这些状态信息使得进程在被中断时能够被暂停和恢复,从而实现多任务处理。

进程的状态有很多种,比如:

正常情况下,ABC随叫随到。

此时,ABC的状态就是——“就绪状态

又比如:

ABC这个月要出差没有时间,不能“随叫随到”

这是,ABC成为——“等待状态

例如一个程序,进行硬盘IO(需要读取数据才能运行)

二、什么是PCB?

当今的操作系统都是“多任务系统”——支持运行多个进程。

比如说:

Windows系列、Unix系列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等等。

当系统运行的进程多了,就需要对进程进行有效的管理,而管理的核心就是:

PCBProcess Control Block,进程控制块)——操作系统用来存储进程信息的重要数据结构

可以把PCB简单的理解成一个结构体,对就是C语言中学过的结构体。

每一个进程都有一个对应的结构体存储关于进程的信息

这些结构体,串联成一个链表(实际上不止是一个链表,而是一个很复杂的数据结构)

创建一个新的进程(双击exe文件),就创建一个节点,插入链表

销毁进程,就遍历这个链表,找到对应节点,然后删除

那么PCB里面存储了那些信息呢

这里列举了一些比较重要的信息(一定要掌握):

1. 进程标识信息

  • 进程ID (PID,Process identifier,进程标识符): 每个进程都有一个唯一的进程标识符,用于区分不同的进程。

2. 内存指针(一组)

  • 描述进程以来的指令和数据在内存的那个区域
  • 操作系统运行exe,就会读取exe中的指令和数据,加载到内存中。

3. 进程调度信息

  • 进程的状态: 记录进程的当前状态(如刚才所讲的就绪、等待、运行等)
  • 进程的优先级: 用于进程调度,决定那个进程先执行,那个进程后执行
  • 进程的上下文: 很好理解,一个进程暂时停止时,需要记录好当前的运行信息,以便于下一次快速运行此进程
  • 进程的会计信息:用于优化资源管理,操作系统可以通过会计信息,查看进程的资源占用情况,优化进程调度方式,防止资源滥用,导致某一个进程运行崩溃(程序崩溃)

4. 资源分配信息

  • 打开的文件列表: 记录进程当前打开的文件及其相关信息。
  • I/O设备信息: 记录进程使用的输入输出设备信息。

三、操作系统如何实现多个进程同时运行?

要想在一台点脑(或者手机)上同时运行多个程序,其实底层是比较复杂的。

上一节我们介绍了PCB(进程控制模块),操作系统会读取每一个进程对应的PCB内的内容(进程状态、进程的会计信息、进程优先级....),然后调度器依据各种进程调度策略、算法动态调整硬件资源的分配情况。

CPU、内存、磁盘、网络就是硬件资源。

具体运行逻辑就是“分时复用”/“并发执行

1)分时复用

我们知道CPU运算速度非常快。

某一时刻,CPU一会儿运行进程a,

一会儿运行进程b,

一会儿运行进程c,它的切换速度非常快,快到人类根本感知不到。

虽然这种分时复用方式,算不上严格的同时执行多个进程,但是宏观上(人的角度)我们仍然叫他“并发执行”!

2)并行执行

当今CPU的结构及大部分都是多核心的。

甚至支持超线程(因特尔发明的技术,实现每个物理核心当作两个逻辑核心使用,简称”一个顶俩“)

不了解也不要紧。

总之,CPU的这种属性,就极大的支持了并发执行

实现了在微观层面硬件级别)严格意义上的多个进程同时执行!——这我们称之为”并行执行“。

对应的编程手法我们称为——”并发编程“。


回到标题的问题:手机是如何实现多个应用程序同时运行的?

其实答案已经在第三大点了。

每种手机都有对应的操作系统,比如IOS、Android、HarmonyOS等。

这些手机的操作系统实现多进程管理和运行的方式和电脑的操作系统,如:

windows、Linux、MacOS(和IOS完全是两个系统)等的方式一样:

通过各种设计(PCB方式管理多个进程、采用各种进程调度策略/算法,保证硬件资源的充分利用、CPU的算力支持,如”分时复用“、”并发执行“等)实现多进程运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/27503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 连续区间和(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 连续区间和(100分) 🌍 评测功能需要订阅专栏后私信联系清隆…

海豚调度异常处理: 使用 arthas 在内存中删除启动失败的工作流

💡 本系列文章是 DolphinScheduler 由浅入深的教程,涵盖搭建、二开迭代、核心原理解读、运维和管理等一系列内容。适用于想对 DolphinScheduler了解或想要加深理解的读者。祝开卷有益。大数据学习指南 大家好,我是小陶,DolphinSch…

明天二战六级

明天二战六级,各位程序员们,加油

八股文系列Spark

为什么Spark 比 MapReduce 更快 DAG相比hadoop的mapreduce在大多数情况下可以减少磁盘I/O次数 mapreduce通常需要将计算的中间结果写入磁盘,然后还要再读取磁盘,从而导致了频繁的磁盘IO。 spark通常不需要将计算的中间结果写入磁盘,只有shuf…

【C++ | const成员】一文了解类的 const数据成员、const成员函数、const对象、mutable 数据成员

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰:2024-06-14 2…

新一代大核卷积反超ViT和ConvNet!同参数量下性能、精度、速度完胜

大核卷积网络是CNN的一种变体,也是深度学习领域的一种重要技术,它使用较大的卷积核来处理图像数据,以提高模型对视觉信息的理解和处理能力。 这种类型的网络能够捕捉到更多的空间信息,因为它的大步长和大感受野可以一次性覆盖图像…

C++语法08 数据类型之间的强制转换

目录 强制类型转换 强制类型转换格式 整型转换成浮点型 整型转换成浮点型其他写法 训练:糖果奖励 糖果奖励参考代码 浮点型转换成整型 浮点型转换成整型其他写法 训练:分离小数 分离小数参考代码 强制类型转换 强制类型转换,就是把…

如何应对生活中的不确定性:仁者安仁,知者利仁。

有较高自尊水平的人,接近于孔子说的:仁者。 ——— 有着稳定的高自尊,无论外在环境如何变化,对其影响都不大,他能够愉快地生活。 相反:一个人处于低自尊状态,就会活得很痛苦,对自己…

基于MCU平台的HMI开发的性能优化与实战(上)

随着汽车座舱智能化的不断演进,车内显示设备的数量显著增加,从传统的仪表盘和中控屏扩展至空调控制、扶手、副驾驶区域以及抬头显示(HUD)等多样化的显示单元。为了有效支持这些功能单元,同时控制整车成本,越…

手机在网状态-手机在网状态查询-手机在网站状态接口

查询手机号在网状态,返回正常使用、停机、未启用/在网但不可用、不在网(销号/未启用/异常)、预销户等多种状态 直连三大运营商,实时更新,可查询实时在网状态 高准确率-实时更新,准确率99.99% 接口地址&…

54.Python-web框架-Django-免费模板django-datta-able

1.Datta Able Django介绍 Detta Able Djiango是什么 Datta Able Django 是一个由AppSeed提供的开源Django管理面板,基于现代设计,为开发者提供了一流的功能和优雅的界面。它源自CodedThemes的高风格化Bootstrap 4模板——Datta Able Bootstrap Lite&…

python-基础篇-文件和异常

文章目录 文件和异常读写文本文件读写二进制文件读写JSON文件 文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识&#…

什么是快乐?

什么是快乐? What is Happiness? 1. 快乐不是追求外在的物质,而是内心的平静与满足。当我们学会感恩,懂得珍惜眼前的一切,心中自然会充满喜悦。快乐并非来自拥有更多,而是感受到已经拥有的足够。每一天都怀抱感激之情…

qt如何在linux平台上设置编译生成windows程序文件,跨平台?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「qt的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!QT本来目标就是跨平台&#xf…

Commons-Collections篇-CC4链分析

前言 因为 CommonsCollections4 除 4.0 的其他版本去掉了 InvokerTransformer 继承 Serializable,导致该方法无法序列化。 同时 CommonsCollections 4的版本 TransformingComparator 继承了 Serializable接口,而CommonsCollections 3里是没有的&#xf…

hrm人力管理系统源码(从招聘到薪酬的全过程人力管控系统)

一、项目介绍 一款全源码可二开,可基于云部署、私有部署的企业级数字化人力资源管理系统,涵盖了招聘、人事、考勤、绩效、社保、酬薪六大模块,解决了从人事招聘到酬薪计算的全周期人力资源管理,符合当下大中小型企业组织架构管理运…

Stringboot

一、概述 springboot是spring家族中的一个全新框架,用来简化spring程序的创建和开发过程。在以往我们通过SpringMVCSpringMybatis框架进行开发的时候,我们需要配置web.xml,spring配置,mybatis配置,然后整合在一起&…

django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.33).

django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.33). 一、原因分析 在新版的Django默认需要MySQL 8或更高版本,才能运行。 二、解决办法 1、升级mysql数据库版本 只需要将mysql版本升级到8.0,即可解决,当然这…

基于esp8266_点灯blinker_智能家居

文章目录 一 实现思路1 项目简介2 项目构成3 代码实现4 外壳部分 二 效果展示UI图片 一 实现思路 摘要:esp8266,mixly,点灯blinker,物联网,智能家居,3donecut 1 项目简介 1 项目效果 通过手机blinker app…

宝藏速成秘籍(3)选择排序法

一、前言 1.1、概念 选择排序法(Selection Sort)是一种简单直观的排序算法。它的基本思想是:每次从待排序的数组中选择最小(或最大)的元素,将其放在已排序部分的末尾,直到所有元素都排序完毕。…