【Android】linux

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.mzph.cn/web/50087.shtml

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

相关文章

Spring AI (五) Message 消息

5.Message 消息 在Spring AI提供的接口中,每条信息的角色总共分为三类: SystemMessage:系统限制信息,这种信息在对话中的权重很大,AI会优先依据SystemMessage里的内容进行回复; UserMessage:用…

PlatformIO+ESP32S3学习:驱动WS2812矩阵彩灯显示FFT音律拾音灯

本文继承自之前的彩灯驱动文章:https://blog.csdn.net/qq_51930953/article/details/140736628 本文完成的效果: 1. 硬件准备 1.1. WS2812矩阵彩灯 购买地址:WS2812B全彩软像素屏8X8 8X32 16X16幻彩5V显示可编程像素软屏 1.2. 麦克风模块 购…

Ip2region - 基于xdb离线库的Java IP查询工具提供给脚本调用

文章目录 Pre效果实现git clone编译测试程序将ip2region.xdb放到指定目录使用改进最终效果 Pre OpenSource - Ip2region 离线IP地址定位库和IP定位数据管理框架 Ip2region - xdb java 查询客户端实现 效果 最终效果 实现 git clone git clone https://github.com/lionsou…

YOLOV8源码解读-C2f模块-以及总结c2模块、Bottleneck

c2f模块是对c2模块的改进 c2模块图解解读 先给出YOLOV8中卷积的定义模块一键三连-卷积-BN-激活函数 def autopad(k, pNone, d1): # kernel, padding, dilation"""Pad to same shape outputs."""if d > 1:k d * (k - 1) 1 if isinstance…

Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)

上次介绍了:(Linux:进程信号(一.认识信号、信号的产生及深层理解、Term与Core))[https://blog.csdn.net/qq_74415153/article/details/140624810] 文章目录 1.信号保存1.1递达、未决、阻塞等概念1.2再次理解信号产生与保存1.3信号…

Pytorch深度学习实践(9)卷积神经网络

卷积神经网络 全连接神经网络 神经网络中全部是线性模型,是由线性模型串联起来的 全连接网络又叫全连接层 卷积神经网络 在全连接神经网络中,由于输入必须是一维向量,因此在处理图像时必须要对图像矩阵进行拉伸成一维的形式,…

【算法】布隆过滤器

一、引言 在现实世界的计算机科学问题中,我们经常需要判断一个元素是否属于一个集合。传统的做法是使用哈希表或者直接遍历集合,但这些方法在数据量较大时效率低下。布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构&…

【NPU 系列专栏 2.8 -- 特斯拉 FDS NPU 详细介绍 】

请阅读【嵌入式及芯片开发学必备专栏】 文章目录 特斯拉 NPU 芯片介绍FSD(Full Self-Driving)芯片 简介FSD主要特点FSD 详细参数FSD 应用场景特斯拉 Hardware 3.0 芯片 简介Hardware 3.0主要特点Hardware 3.0 详细参数Hardware 3.0应用场景特斯拉自研 NPU 的优势优化设计高度…

【数学建模】——matplotlib简单应用

目录 1.绘制带有中文标签和图例的正弦和余弦曲线 2. 绘制散点图 1.修改散点符号与大小 2.修改颜色 3.绘制饼状图 4.在图例中显示公式 5.多个图形单独显示 6.绘制有描边和填充效果的柱状图 7.使用雷达图展示学生成绩 8.绘制三维曲面 9.绘制三维曲线 10.设置…

定制化即时通讯企业级移动门户解决方案,WorkPlus IM系统让工作事半功倍

随着移动设备的普及和移动办公的兴起,企业越来越需要一种定制化的即时通讯企业级移动门户解决方案来提高工作效率和团队协作效果。WorkPlus IM系统作为一种创新的解决方案,为企业提供了一个个性化定制、高度安全和高效便捷的移动门户平台。本文将对定制化…

BFF:优化前后端协作设计模式

BFF:优化前后端协作设计模式 BFF是什么 BFF即 Backends For Frontends (服务于前端的后端)。是一种介于前端和后端之间一种重要的通信设计模式。它旨在解决前端与后端协作中的复杂性问题。 背景 行业背景:传统前端应用(如Web应用、移动应…

微服务-MybatisPlus下

微服务-MybatisPlus下 文章目录 微服务-MybatisPlus下1 MybatisPlus扩展功能1.1 代码生成1.2 静态工具1.3 逻辑删除1.4 枚举处理器1.5 JSON处理器**1.5.1.定义实体****1.5.2.使用类型处理器** **1.6 配置加密(选学)**1.6.1.生成秘钥**1.6.2.修改配置****…

网络安全防御【IPsec VPN搭建】

目录 一、实验拓扑图 二、实验要求 三、实验思路 四、实验步骤: 修改双机热备的为主备模式: 2、配置交换机LSW6新增的配置: 3、防火墙(FW4)做相关的基础配置: 4、搭建IPsec VPN通道 (1…

Java代码基础算法练习-求杨辉三角第n行的值-2024.07.27

任务描述&#xff1a; 给定一个非负整数n&#xff0c;生成「杨辉三角」的第n行。&#xff08;1<n<10&#xff09;在「杨辉三角」中&#xff0c;每 个数是它左上方和右上方的数的和。 &#xff08;提示&#xff0c;第一列数值为1&#xff0c;如数组下标用i,j表示&#xf…

独占电脑资源来执行一个应用

1. 背景 在人工智能时代&#xff0c;随着神经网络的发展&#xff0c;训练人工智能模型需要越来越多的硬件资源&#xff0c;例如&#xff0c;利用10万条棋局数据、使用一台PC电脑、完整地训练一次确定性神经网络五子棋模型&#xff0c;需要花费一年半的时间。随着训练数据的增长…

APP逆向 day23司小宝逆向

一.前言 今天也是讲最后一个基础知识点了&#xff0c;ptrace占坑&#xff0c;这个也算是一个坑&#xff0c;今天通过这个案例和大家讲一下&#xff0c;今天这个案例我们来整验证码登录&#xff0c;版本选择4.7.8 二.抓包分析 抓包发现&#xff0c;请求头里的东西通过改包发现…

Spring Boot:图书管理系统(一)

1.编写用户登录接口 代码&#xff1a; package com.example.demo;import jakarta.servlet.http.HttpSession; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotatio…

技术成神之路:设计模式(九)备忘录模式

介绍 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。通过备忘录模式&#xff0c;可以在程序运行过程中保存和恢复对象的某个状态&#xff0c;从而实现“撤销”等功能。 1.定义 备忘…

【BUG】已解决:UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 10

UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 10 目录 UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 10 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#x…

使用python内置的虚拟环境

在一台机器上安装了太多的第三方python库&#xff0c;它们依赖相同的库可能版本不同&#xff0c;就会造成某些第三方库崩溃&#xff0c;之前可以使用的库可能就会坏掉不能用了&#xff0c;所以可以使用虚拟环境运行不同的程序&#xff0c;python有内置的虚拟环境&#xff1b; …