Android 深入系统完全讲解(二)

news2024/9/29 1:27:07

操作系统
操作系统是一套软件,它的任务就是为上层开发的用户,提供一个更方便的开发环境,同时
让硬件连接到系统中,能够非常方便,从而提高开发速度,以及稳定可靠。

在这里插入图片描述
操作系统就是这么存在的。

我们理解它,可以用一个非常简单的例子,这里我们看下。

我们做一个游戏,写第一个游戏的时候,用到了一些算法,比如检测碰撞,爆炸特效,然后开发第二个游戏的时候,也要用到这些算法。

常规的做法就是复制第一个游戏的这部分代码,改动下,用在第二个游戏。

第三个游戏发现也用这块,复制是可以解决。但是后面还会出现第四个游戏,所以这时候有人提议,把这部分算法,单独拉出来,做成一个模块,方便后续的游戏引用。

操作系统也是一个模块,解决的是硬件的处理,以及对上层软件调用的适配,方便使用。

我们前面说过,出现内存的原因,一个是因为硬盘的速度问题,还有一个更为关键的是,内存是在运行当中是可以改变的。
在这里插入图片描述
这一块,我们在随后的链接器加载器这边来说,现在先有一个概念。记住一点,硬盘上的程序加载进入系统,被操作系统加载成一个进程,记录下来,运行。

我们操作系统主要有哪些部分组成呢?它设计了哪些模块呢?

1 设备驱动程序

这部分就是解决硬件连接进来,我们该如何加载,解析,这块学习可以去看下相关书籍。Linux操作系统和 Windows 操作系统,两边对这个设计有区别。

2 文件管理系统

设计如何读取硬盘,U 盘,对应不同的文件格式,该如何加载,读写操作。

3 进程管理

我们的 CPU 运行很快,而我们的程序加载进来,如果只有一个程序,实际上大多时候 CPU就是空闲的了。那么让它多干一些事,就是一个优化。像我们电脑上,一边看电视,一边浏览网页。

能够同时的原因是,CPU 的运行,完全能够保证让多个进程运行,我们使用的人感知不到被切换。这个如何理解?就如同魔术师把扑克牌变没,消失。

我们肉眼捕捉不到他怎么换的,所以我们就感到很神奇。CPU 的速度比这个更快,它让电视TV,和浏览器两个快速切换运行,我们肉眼感知不到,就认为同时运行了。

那么多个进程就需要管理起来,操作系统来完成这部分工作。

4 进程间通信

进程之间需要相互配合,所以需要通信,像 msg ,socket,pipe 等一系列的方法。这部分也是由操作系统提供。

5 内存管理

进程运行态的时候,是在内存中的。于是对于内存的管理,需要操作系统对实际物理内存进行管理,同时提供一套接口,让进程不需要关注实际物理内存,只需要关注虚拟内存。

这样子每个进程的访问都是虚拟内存,方便运行,真正用的内存是实际物理内存,这个管理过程,也是操作系统提供的。

之前的 DOS 就是实内存模式,同时一个单任务的。

6 中断检测,响应程序
7 创建进程,加载程序的过程
8 网络访问,绘图,播放音乐

下来我们就来说下进程的概念

进程

我们要让一个程序运行,就需要加载进入内存,而把它加载到内存,用什么来管理呢?操作系统给了一个概念,叫做进程。

进程就是程序装载进入准备阶段了,操作系统这时候根据时间片,获取到程序的入口点,开始执行。

我们的程序,在硬盘上存着,它是由什么组成的呢?程序也是一个文件,所以回到我们之前说的,文件由=文件头+内容组成。

所以程序也有程序的头,也就是约定好的一个格式。

这里,windows 上面叫做 PE,Linux 上面叫做 ELF。两个文件格式。关于这块的知识点,请参考**《加密与解密》《程序员的自我修养》**

进程主要有哪些信息呢?我们把这个叫做 PCB,进程控制块。
主要记录,进程号,进程内存申请信息,进程对应的程序位置,当前的运行状态,以及打开文件,驱动信息记录。

这里运行状态非常重要。

因为我们的 CPU 运算的相关寄存器,这里可以是 PC,SP,以及 R0 这种,都是只有一份。那么进程如果不做保存,当操作系统把这个进程切出去,要运行另一个的时候,这时候的这些寄存器就是错误的。

所以,进程切换的时候,有个动作,就是把自己使用的全局寄存器保存起来,为的是再调用回来的时候,可以恢复到正确的位置。

这个过程叫做进程间切换,而保存的过程成为保护现场。

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

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

相关文章

基于低代码平台构筑金融行业IT运维服务体系

我今天分享题目是《基于低代码平台,构筑金融行业的IT运维服务体系》。这是一个大家不太熟悉的领域,首先它的行业是金融,其次它做的事情是IT运维。 关于金科信息 我先介绍一下金科信息。金科信息在1993年成立,到明年我们就整整30…

前端开发技术栈(插件篇):datatables

一、Datatables介绍 官网地址:https://datatables.net/ DataTables中文网:http://datatables.club/ 1、Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。 2、分页,即时搜索和排序…

【Bootstrap】可复用的组件

目录 一、字体图标 二、下拉菜单 1. 步骤 2. 对齐 3. 分割线 4. 禁用的菜单项 三、按钮组 1. 按钮组 2. 按钮工具栏 3. 尺寸 4. 嵌套 5. 垂直排列 四、输入框组 1. 输入框组 2. 尺寸 3. 作为额外元素的按钮 4. 作为额外元素的按钮式下拉菜单 一、字体图标 组件…

55、MySOL数据库

目录 一、MySQL安装和配置 二、数据库 三、表 四、数据库的C [create] R [read] U [update] D [delete] 语句 1、insert语句 2、update语句 3、delete语句 4、select语句 五、Mysql常用数据类型(列类型):​编辑 六、函数 *合计 / 统计…

kettle - 清洗 mongodb 数据案例

文章目录前言kettle - 清洗 mongodb 数据案例一、需求二、kettle开发1、新建mongodb数据查询2、配置kettleTest集合与清洗后kettleTestClear集合字段映射3、根据_id进行排序4、使用java脚本将日期格式化5、进行字段选择6、将delete字段进行值映射7、mongo输出8、最后加一个写日…

详解哨兵之间是如何通信的

基于 pub/sub 机制的哨兵集群组成 哨兵实例之间可以相互发现,要归功于 Redis 提供的 pub/sub 机制,也就是发布 / 订阅机制。 哨兵只要和主库建立起了连接,就可以在主库上发布消息了,比如说发布它自己的连接信息(IP 和…

PDF如何转换成PPT?教你们几个简单方法

我们在工作经常用PDF文件进行传输,因为PDF体积小,传输速度很快,还不会不同设备上出现不兼容的问题,可以很好的保持文件的排版,不过我们有时候需要进行文件的展示,所以需要将PDF文件转换为PPT文件&#xff0…

2023河南/北京/重庆/南京DAMA-CDGA/CDGP数据治理工程师认证报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

论文阅读——Recognizing Emotion Cause in Conversations

文章目录摘要引言相关工作任务定义构造RECCON数据集情绪原因的类型实验任务1:Causal Span Extraction模型任务2:Causal Emotion Entailment模型面临的挑战摘要 识别文本中情绪背后的原因是NLP中一个未被探索的研究领域。这个领域的发展具有着改善情感模…

Docker基础1-3

Docker基础1-3 时间:2023-01-02 https://www.bilibili.com/video/BV1gr4y1U7CY/ xmind文档:https://www.aliyundrive.com/s/6iaQt9zLDVm 一、Docker简介 1、Docker解决了什么问题 Docker打破了过去「程序即应用」的观念。透过镜像(images)将作业系统核心除外&am…

LeetCode:15. 三数之和

15. 三数之和1)题目2)思路3)代码4)结果1)题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] …

【Nginx】核心配置文件结构

文章目录Nginx核心配置文件结构全局块user指令work process指令其他指令events块events指令配置实例http块定义MIME-Type自定义服务日志其他配置指令server块和location块Nginx服务器基础配置实例Nginx核心配置文件结构 从前面的内容学习中,我们知道Nginx的核心配置…

给力!低代码开发平台广州流辰信息科技助您增辉创价值!

低代码平台开发公司流辰信息深耕行业多年,一直以市场为导向,凭借敏锐的市场洞察力砥砺前行、拼搏进取,提升研发创新能力,广州流辰信息科技与各新老客户朋友风雨同舟,携手共创宏伟新蓝图! 一、熔铸前沿科技 …

kettle的安装以及注意(迭代中....)

1、下载 kettle的官网下载地址:Pentaho from Hitachi Vantara - Browse Files at SourceForge.net 如果需要下载其他版本: 直接点击对应的版本Name(8.0以下的实在Data Integration文件夹里面)进去,再选择client-too…

【C++】代码调试的学习笔记

1. IO输出调试:输出重定向 在《第八期-C基础与深度解析》课程中,老师使用了“输出重定向”的语句来查看cout和cerr的结果: ./HelloWorld >txt1 2>txt2 代码含义:将程序HelloWorld的标准输出stdout重定向至文件txt1&#xf…

百趣代谢组学分享:从SWATH到MRM:一种新型高覆盖度靶向代谢组学技术

百趣代谢组学文献分享,SWATHtoMRM: Development of High-Coverage Targeted Metabolomics Method Using SWATH Technology for Biomarker Discovery,是由中国科学院生物与化学交叉研究中心,Dr. Zheng-Jiang Zhu课题组发表在AC上的一篇技术型文…

verilog学习笔记- 3)SignalTap II 软件的使用

目录 SignalTap II简介: SignalTap II使用: SignalTap II简介: SignalTap II 全称 SignalTap II Logic Analyzer,是第二代系统级调试工具,可以捕获和显示实时信号,是 一款功能强大且极具实用性的 FPGA 片…

IO模型详解

什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll跟IO模型有什么关系?有几种经典IO模型呢?BIO、NIO、AIO到底有什么区别的? 什么是IO呢? IO,英文全称是Input/Output,翻译过来就是输入/输出。平时我们听得挺多,就是什么磁盘IO,网络I…

LCHub:2023年低代码开发平台市场规模将增长25%至100亿美元

随着企业希望变得更加敏捷、业务流程更加自动化,并创建新的Web和移动应用来满足消费者的需求,自动化开发工具正在成为关键因素,尤其在IT人才持续短缺的情况下。 根据调研机构最近进行的一项研究,面对持续的IT技能短缺,低代码和无代码平台等能够实现流程自动化并使员工能…