【Android】linux

news2024/12/25 13:45:16

android系统就是跑在linux上的系统。Linux层里面包含系统和硬件驱动等一些本地代码的环境。
在这里插入图片描述
linux的目录
在这里插入图片描述

  1. mount:
    用于查看哪个模块输入只读,一般显示为:
[root@localhost ~]# mount
/dev/cciss/c0d0p2 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/cciss/c0d0p7 on /home type ext3 (rw)
/dev/cciss/c0d0p6 on /var type ext3 (rw)
/dev/cciss/c0d0p3 on /usr type ext3 (rw)
/dev/cciss/c0d0p1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/dm-0 on /home/book/upload/BookFile1 type ext3 (rw)
/dev/dm-1 on /home/book/upload/BookFile2 type ext3 (rw)
/dev/dm-2 on /backup type ext3 (rw)
/dev/dm-3 on /home/book/upload/BookFile3 type ext3 (ro)

如果发现有ro,就重新mount,或者umount以后再remount

  1. umount /dev/dm-3
    如果发现有提示“device is busy”,找到是什么进程使得他busy
    fuser -m /mnt/data 将会显示使用这个模块的pid
    fuser -mk /mnt/data 将会直接kill那个pid
    然后重新mount即可。还有一种方法是直接remount,
    mount -o rw,remount /mnt/data

  2. 如何查看cpu占用状态?
    要查看CPU占用状态,可以使用以下命令:

  • top命令:在终端输入“top”命令,可以查看当前系统的进程信息和CPU占用情况。可以按“q”键退出。

  • htop命令:htop是top的升级版,可以在终端输入“htop”命令来查看CPU占用状态和进程信息。可以按“q”键退出。

  • ps命令:在终端输入“ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%cpu | head”命令,可以查看当前运行的进程中CPU占用率最高的前几个进程。

  • mpstat命令:在终端输入“mpstat -P ALL”命令,可以查看每个CPU核心的使用情况。

  • sar命令:在终端输入“sar -u”命令,可以查看系统整体CPU使用率情况,也可以使用“sar -P ALL”查看每个CPU核心的使用情况。

注意:以上命令需要在终端中执行。在Android设备上,可以使用adb shell命令进入设备终端执行相应的命令。

  1. linux内核的启动过程
    在这里插入图片描述在这里插入图片描述有些设备需要解锁system分区
    在调试过程中,需要单独的替换某一个分区,可以通过 update 工具来替换,可以替换
    的分区有 bootloader,logo,recovery ,system,vendor 等

  2. Linux查看命令行历史命令记录(默认1000条命令历史操作记录)
    history
    history -w history.txt

Cache

Cache是集成在CPU内部的极高速缓存。一般来讲,它的访问速度几乎可以媲美CPU。CPU在访问Cache的时候几乎不会浪费多少时间,不过,速度的提升是用容量为代价的,容量很小。

为什么需要Cache ?当CPU访问内存的时候,并不是立刻就能访问到它想访问的内存,而是有个“WaitState”的过程。那么,把常用的数据放在Cache中,CPU在访问的时候直接访问Cache就行了,不用耗费时间去访问内存了。

在读内存的时候,CPU先读Cache,看看有没有想要的数据的“副本”,有的话直接读取,没有的话在去读内存。写内存时,CPU先将数据写在Cache中,Cache写满后更新到内存中,同时清空Cache。

RAM

RAM(Random Access Memory)随机存储器。内容可按需随意存取,且存取的速度与存储单元的位置无关,掉电丢数据。

按照存储信息的不同,分为静态堆积存储器(Static RAM,SRAM)和动态随机存储器(Danamic RAM,DRAM)。

SRAM 不需要刷新电路既能保存数据;DRAM每隔一段时间,需要刷新充电一次,否则内部的数据会消失。

SRAM具有较高性能,但是集成度低,既相同容量的DRAM内存可设计成较小的体积,而SRAM却需要很大的体积,且功耗较高。

SRAM速度非常快,是目前读写最快的存储设备了,而且不需要刷新。缺点是价格比较贵,所以只在要求很苛刻的地方使用,比如CPU的一级缓存,二级缓存。
DRAM保留数据的时间很短,速度也比SRAM慢,不过还是比任何的ROM都要快,价格上比SRAM便宜很多,计算机内存就是DRAM的。

ROM

ROM(Read-Only Memory)只读存储器,是一种只能读出事先存储的数据的固态半导体存储器 ,掉电不丢数据。ROM也有很多种,PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是:PROM是一次性的,也就是软件烧录后,就无法修改了,这是早期产品了,现在已经不可能使用了;而EPROM是通过紫外线的照射擦除原先的程序,是一种通用的存储器。
还有一种EEPROM是通过电子擦除,价格很高,写入时间很长。手机软件一般放在EEPROM中。

Flash

闪存,是一种长寿命的非易失性(在断电情况下不丢数据)的存储器,数据删除不是以单个字节为单位而是以固定的区块为单位(注意:NOR Flash为字节存储),区块一般为256K到20MB。

Flash主要有两种:NOR Flash 和 NAND Flash。

任务Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除操作。NAND Flash擦除十分简单,而NOR Flash则要求在进行擦除前要将目标块内所有的位都写1。

core,host,device

  1. 线程池的实现步骤
    线程池是一种常见的多线程并发处理模型,它可以有效地管理和控制多线程的执行,提高系统的性能和稳定性。线程池的实现步骤通常包括以下几个方面:
    创建线程池对象:线程池通常由一个线程池对象来管理,可以通过调用线程池类的构造函数来创建线程池对象。
    初始化线程池参数:在创建线程池对象之后,需要设置线程池的各项参数,包括线程池中线程的数量、任务队列的容量、线程池中线程的命名前缀、拒绝策略等。
    创建任务队列:任务队列用来存储待执行的任务,可以采用阻塞队列或非阻塞队列的方式实现。
    创建工作线程:在线程池初始化完成后,需要创建指定数量的工作线程,并将它们添加到线程池中。
    执行任务:当有任务提交到线程池时,线程池会将任务添加到任务队列中,等待工作线程来执行。
    执行拒绝策略:当任务队列已满且线程池中的所有线程都处于忙碌状态时,新提交的任务将无法被执行,这时就需要采取拒绝策略来处理。
    关闭线程池:当线程池不再需要使用时,需要将线程池中的所有工作线程停止,并释放线程池占用的资源。
    总的来说,线程池的实现步骤可以根据具体的应用场景和需求进行灵活调整,以达到最优的效果和性能。

  2. 有哪些线程同步的方法
    在多线程编程中,为了避免竞态条件和死锁等问题,通常需要使用线程同步方法来协调不同线程之间的操作。常见的线程同步方法包括:
    锁机制:包括互斥锁(Mutex)、读写锁(Reader-Writer Lock)、自旋锁(Spinlock)等,用于保证临界区代码的互斥执行,从而避免竞态条件。
    条件变量(Condition Variable):用于线程之间的通信和协调,例如等待某个事件的发生、唤醒等待的线程等。
    信号量(Semaphore):用于限制并发访问某个资源的线程数目,避免资源竞争。
    屏障(Barrier):用于控制多个线程在某个点上的同步,例如所有线程必须在该点执行完成后才能继续执行。
    原子操作(Atomic Operation):一些特殊的操作,例如比较交换、自增等,可以保证在并发环境下的原子性,从而避免竞态条件。
    读写锁(Reader-Writer Lock):一种特殊的锁,用于优化读操作与写操作的竞争,可以提高并发性能
    需要根据具体场景和需求选择合适的线程同步方法,避免出现竞态条件和死锁等问题,提高多线程程序的稳定性和性能。

  3. 什么是C++中的智能指针,shard_ptr是线程安全的吗,为什么不保证线程安全
    C++中的智能指针是一种用于自动管理内存的指针,可以防止内存泄漏和野指针的问题。智能指针是一个类对象,它封装了一个原始指针,并在析构时自动释放所持有的内存。 C++标准库提供了两种智能指针:std::unique_ptr和std::shared_ptr。
    std::shared_ptr是一种智能指针,可以在多个地方共享同一块内存,通过计数器来跟踪内存块的引用次数。当最后一个引用被销毁时,计数器将变为零,内存块将被释放。由于使用引用计数,因此std::shared_ptr是线程安全的。
    但是需要注意的是,即使std::shared_ptr是线程安全的,也并不保证使用它的代码是线程安全的。例如,如果多个线程访问相同的std::shared_ptr对象,但没有使用任何同步机制来保护这些访问,那么就可能会出现数据竞争和不一致的状态。因此,尽管std::shared_ptr本身是线程安全的,但使用它时需要注意线程安全问题。

  4. 运行一个.exe程序的详细流程可以分为以下步骤:

加载程序文件:操作系统将程序文件从磁盘中加载到内存中,创建一个进程并分配空间给程序。

解析导入表:程序中包含了很多函数调用,这些函数可能是由其他程序提供的。操作系统需要解析这些函数的入口地址,将这些入口地址填入程序的导入表中。

分配内存空间:程序在运行时需要使用内存空间,操作系统需要分配内存空间给程序,并将分配的地址返回给程序。

初始化程序:操作系统会执行程序的初始化代码,包括对全局变量和静态变量进行初始化。

执行程序:操作系统从程序的入口地址开始执行程序。

加载依赖的动态链接库:程序中可能依赖其他的动态链接库,操作系统需要加载这些动态链接库。

进程结束:程序执行完毕或者异常终止后,操作系统会释放程序占用的内存空间,并将进程退出。

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

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

相关文章

SpringBoot 实现图形验证码

一、最终结果展示 二、前端代码 2.1 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><title>验证码</title><style>#inputCaptcha {height: 30px;vertical-align: middle;}#verifica…

(leetcode学习)236. 二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是它自己的祖…

Q238. 除自身以外数组的乘积

思路 一开始想到的是按位乘 看了题解&#xff0c;思路是存i左边的乘积和 与 i右边的乘积和 代码一&#xff1a; 需要三次循环,需要额外空间 left和right数组 代码&#xff1a; public int[] productExceptSelf(int[] nums) {int[] left new int[nums.length];int[] right …

python题解

空间三角形 输入在三维空间的三角形三个顶点A&#xff0c;B&#xff0c;C的坐标&#xff08;x,y,z&#xff09;&#xff0c;计算并输出三角形面积。不考虑不能构成三角形的特殊情况。 格式 输入格式&#xff1a; 依次输入三个顶点A&#xff0c;B&#xff0c;C的坐标&#xff…

CISSP,信息安全圈公认的高含金量证书

在数字化和信息化迅速发展的时代&#xff0c;信息安全的重要性愈发突出。 网络攻击、数据泄露和隐私问题频发&#xff0c;使得企业和组织对信息安全专业人士的需求不断增加。 CISSP&#xff08;Certified Information Systems Security Professional&#xff09;作为信息安全领…

文字描边效果

文字描边效果可以通过text-shadow来实现&#xff0c;也可以通过-webkit-text-stroke来实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, i…

MySQL数据库练习(5)

1.建库建表 # 使用数据库 use mydb16_trigger;# 表格goods create table goods( gid char(8) primary key, name varchar(10), price decimal(8,2), num int);# 表格orders create table orders( oid int primary key auto_increment, gid char(10) not null, name varchar(10…

MYSQL第五次作业

1、触发器 建立两个表:goods(商品表)、orders(订单表) mysql> use mydb16_trigger; Database changed mysql> create table goods-> (-> gid char(8) primary key,-> name varchar(10),-> price decimal(8,2),-> num int-> ); Query O…

MySQL零散拾遗(四)--- 使用聚合函数时需要注意的点点滴滴

聚合函数 聚合函数作用于一组数据&#xff0c;并对一组数据返回一个值。 常见的聚合函数&#xff1a;SUM()、MAX()、MIN()、AVG()、COUNT() 对COUNT()聚合函数的更深一层理解 COUNT函数的作用&#xff1a;计算指定字段在查询结果中出现的个数&#xff08;不包含NULL值&#…

C++操作Smgp协议的相关教程

SGIP是中国网通为实现短信业务而制定的一种通信协议&#xff0c;用于在短消息网关&#xff08;SMG&#xff09;和服务提供商&#xff08;SP&#xff09;之间、短消息网关&#xff08;SMG&#xff09;和短消息网关&#xff08;SMG&#xff09;之间通信。 Perl的IO::Async模块提…

SAP PP学习笔记31 - 计划运行的步骤2 - Scheduling(日程计算),BOM Explosion(BOM展开)

上一章讲了计划运行的5大步骤中的前两步&#xff0c;计算净需求和计算批量大小。 SAP PP学习笔记30 - 计划运行的步骤1 - Net requirements calculation 计算净需求(主要讲了安全库存要素)&#xff0c;Lot-size calculation 计算批量大小-CSDN博客 本章继续讲计划运行的后面几…

Q380 O(1)时间获取插入删除元素

思路 insert 其实用得到search&#xff0c;remove也是&#xff0c;当时o(1)想到的是hash set&#xff0c;但是对于random取,随机数相当于获得的是index,根据index获取元素 Set 数据结构不符合。 随机获取应该是数组&#xff0c;但是数组搜索和删除不是o(1) 最后的思路是 用h…

怎么防止文件在通讯软件外泄

为了防止文件在通讯软件外泄&#xff0c;企业可以采取一系列综合性的措施来加强管理和防护。 1. 使用高级别软件 企业级聊天软件&#xff1a;使用企业级聊天软件&#xff0c;这类软件通常具备更强大的安全管理功能&#xff0c;如文件传输加密、访问权限控制、审计日志记录等。…

【C++】深度解析:用 C++ 模拟实现 list 类,探索其底层实现细节

目录 list介绍 list模拟实现 list 节点类 list 的迭代器 定义 构造函数 解引用 operator前置和--与后置和-- operator与operator! list 类 构造函数 begin()和end() 拷贝构造 erase() clear() 析构函数 insert push_back 和 push_front pop_back 和 pop_front…

CTF-pwn-虚拟化-vmmware 前置

文章目录 参考vmware逃逸简介虚拟机和主机通信机制(guest to host)共享内存&#xff08;弃用&#xff09;backdoor机制Message_Send和Message_RecvGuestRPC实例RpcOutSendOneRawWork实例 vmware-rpctool info-get guestinfo.ip各个步骤对应的backdoor操作Open RPC channelSend …

数据结构初阶(c语言)-双向链表

这里首先纠正上篇文章一个错误&#xff0c;链表的一个有效数据点应该称为结点而不是节点。 一&#xff0c;双向链表的概念与结构 1.1概念与结构示意图 我们所说的双向链表全称为带头双向循环链表&#xff0c;也就是说此链表带有哨兵位结点(不存放任何数据的结点&#xff0c;且…

Oauth2协议的四种模式

B站视频 概念 Oauth2.0&#xff08;Open Authorization&#xff09; 一个关于授权的开放网络标准 允许用户授权第三方应用访问用户存储在其他服务提供者上的信息 不需要将用户名和密码提供给第三方应用 Oauth2中的各个角色 授权码模式 第一步 获取授权码 以上流程中的授…

产品经理NPDP好考吗?

NPDP是新产品开发专业人员的资格认证&#xff0c;对于希望在产品管理领域取得认可的专业人士来说&#xff0c;NPDP认证是一项重要的资格。 那么&#xff0c;产品经理考取NPDP资格认证究竟难不难呢&#xff1f; 首先&#xff0c;NPDP考试的难易程度取决于考生的背景和准备情况…

通信类IEEE会议——第四届通信技术与信息科技国际学术会议(ICCTIT 2024)

[IEEE 独立出版&#xff0c;中山大学主办&#xff0c;往届均已见刊检索] 第四届通信技术与信息科技国际学术会议&#xff08;ICCTIT 2024&#xff09; 2024 4th International Conference on Communication Technology and Information Technology 重要信息 大会官网&#xf…

C#调用OpenCvSharp实现图像的角点检测

角点检测用于获取图像特征&#xff0c;以支撑运动检测、目标识别、图像匹配等方面的应用。常用的角点检测算法包括Kitchen-Rosenfeld算法、Harris算法、KLT算法、SUSAN算法等&#xff0c;本文学习并测试Harris角点检测算法。   关于Harris算法的数学原理请见参考文献1的第18、…