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

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

操作系统的功能有很多,

例如:

  • 进程管理(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的算力支持,如”分时复用“、”并发执行“等)实现多进程运行。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android开发更改JDK版本

今天在跑GitHub上面一个Android项目时,在Android编译时出现如下错误: Unsupported Java. Your build is currently configured to use Java 17.0.2 and Gradle 7.0.2.错误原因: JDK和Gradle版本对应出错。 本地的JDK为1.8正好可以更改为本…

深入理解计算机系统 CSAPP 家庭作业6.34

第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…

适合加密货币交易者的免费指标

本文介绍了7种用于分析加密货币市场的免费技术指标,帮助交易者和投资者提升交易技巧和盈利能力。原文: Best 7 Free Trading Indicators for Every Cryptocurrency Trader Austin Distel Unsplash 大家好!无论是加密货币市场的交易者还是投资者&#xff…

(Java微服务项目实战)dtpay聚合支付系统对账管理模块系统设计

1 聚合支付系统对账流程 dtpay聚合支付系统对账模块主要涵盖商户侧对账和渠道侧对账、平台侧对账,本文主要分析渠道侧对账。dtpay聚合支付系统通过支付渠道微信、支付宝等产生的支付退款交易数据需要和平台侧产生的数据进行交易数据比对。接下来我们具体分析对账流…

手把手教学部署前端项目到nginx

1.下载nginx 说明:下载11.20.2版本的nginx。 2.配置nginx 说明:找到conf目录下的nginx.conf文件。 2.1代理静态资源 说明:服务器块监听的端口为8089,意味着Nginx将在8089端口上接收和处理HTTP请求。root后面的值相当于html文…

实时交通 | 城市交通态势采集及可视化操作(定时运行)

一、前言 交通态势数据是关于交通状况的一种量化描述,它提供了关于道路网络运行状态的详细信息。交通态势数据指的是根据车流入量和车流出量的定义,衡量整个全局交通区域交通态势的数据。这些数据通常从车辆GPS轨迹数据中提取,包括车辆行驶速…

时代巨兽!深度神经网络如何改变我们的世界?

深度神经网络 1、 简介1.1 定义深度神经网络1.2 深度学习的发展历程1.3 深度神经网络的应用领域 2、深度神经网络的基本原理2.1 神经元层2.1.1 神经元2.1.2 神经元层 2.2 前向传播2.3 反向传播2.4 激活函数2.4.1、作用2.4.2、常见激活函数2.4.3、选择激活函数的考虑 2.5 损失函…

new Set( )的基本使用以及如何去重对象数组

目录 Set 对象方法 Set 对象作用 实现数组的去重 实现字符串的去重 实现并集 交集 差集 实现去重对象数组 相关参考资料 在 ES6 中,引入了一个新的数据结构类型:Set。而 Set 与 Array 的结构是很类似的,且 Set 和 Array 可以相互进…

MySQL学习——创建MySQL Workbench中的Connections

在MySQL Workbench中,Connections(连接)是用户与MySQL数据库进行交互的桥梁。 本文将添加一个新连接,该连接可以是初始连接,也可以是附加连接。在开始之前,必须安装、启动MySQL服务器的实例,并…

算法体系-19 第十九节 暴力递归到动态规划

一 动画规划的概念 优化出现重复解的递归 一旦写出递归来,改动态规划就很快 尝试策略和状态转移方程是一码事 学会尝试是攻克动态规划最本质的能力 如果你发现你有重复调用的过程,动态规划在算过一次之后把答案记下来,下回在越到重复调用过程…

基于springboot实现农产品直卖平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现农产品直卖平台系统的设计演示 摘要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔…

【安卓设备】通过adb批量安装apk

1、adb链接设备 H:\tv\apk>adb connect 127.0.0.1:21503 2、批量安装apk 如果地址不一致需要将 H:\tv\apk\ 改成自己的路径地址,同时注意该命令只能安装文件名为英文的不支持中文名称,如果有需要先更改文件名称。 H:\tv\apk>for %f in (H:\tv\a…

IT入门知识博客文章大纲第一部分《IT基础知识》(1/10)

目录 IT入门知识博客文章大纲第一部分《IT基础知识》(1/10) 1.引言 2.第一部分:IT基础知识 2.1 计算机硬件 CPU:计算机的心脏 内存:数据的临时居所 存储设备:数据的长期仓库 输入输出设备&#xff1…

Node.js和npm的安装及配置

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞 I/O 的模型。 npm(node package manager)是一个 Node.js 包管理和分发工具,也是整个 Node.js 社区最流行、支持第三方模块最多的包管理器。使…

【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常

【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】 PHP使用PDO_ODBC连接yashan数据库,使用绑定参数获取数据时,客户现场出现报错 本地复现未出现异常报错,但是无法正确获取数据。 【问题原因分析】开启ODBC报错日志后&am…

使用 Python 进行测试(1)测试基础

原文 总结 我们将从unittest开始,尽管它并不那么好用,但它是Python标准库中的测试工具。 使用unittest编写测试看起来像这样: import unittest# 需要测试的代码 def add(a, b):return a b# The tests class TestAddFunction(unittest.Test…

网络安全攻防基础入门笔记--操作系统名词解释文件下载反弹shell防火墙绕过

渗透测试常用专业术语 POC,EXP,Payload,Shellcode POC 全程Proof of Concept,中文"概念验证",常指一段漏洞证明的代码 EXP 全程Exploit ,中文"利用",指利用系统漏洞进行攻击的动作 Payload 中文"有效载荷",指成功Exploit之后,真正在目标系…

车道偏离预警系统技术规范(简化版)

车道偏离预警系统技术规范(简化版) 1 系统概述2 预警区域3 功能条件4 显示需求5 指标需求 1 系统概述 车道偏离预警系统工作在中高速驾驶的情况下,当驾驶员因注意力不集中导致车辆偏离本车道时,系统通过光学和声学信号对驾驶员进行…

MySQL 使用 MyFlash 快速恢复误删除、误修改数据

一、MyFlash MyFlash 是由美团点评公司技术工程部开发并维护的一个开源工具,主要用于MySQL数据库的DML操作的回滚。这个工具通过解析binlog日志,帮助用户高效、方便地进行数据恢复。MyFlash的优势在于它提供了更多的过滤选项,使得回滚操作变…

UC Berkeley简介以及和Stanford的区别与联系

UC Berkeley Source: Google Map 中文版 UC Berkeley,全称University of California, Berkeley,是一所位于美国加利福尼亚州伯克利市的世界知名公立研究型大学。以下是关于UC Berkeley的详细介绍: 学术声誉和排名 学术声誉: U…