首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于Linuxpc启动过程

要了解Android手机启动过程,我们先来了解一下基于linux系统电脑从按下电源键那一刻起,发生了什么,这样类比可以更好理解Android手机启动过程。...基于Linuxpc启动过程 我们都知道,所有的程序软件包括操作系统都是运行在内存中,然而我们操作系统一般是存放在硬盘上,当我们按下开机键时候,此时内存中什么程序也没有,因此需要借助某种方式,将操作系统加载到内存中...Android手机启动过程 Android系统虽然也是基于linux系统,但是由于Android属于嵌入式设备,并没有像pc那样BIOS程序。取而代之是Bootloader——系统启动加载器。...当linux内核启动后会初始化各种软硬件环境,加载驱动程序,挂载根文件系统,并开始执行根文件系统init程序,init程序是Android启动过程中最重要核心程序。...至此,从Android手机开机到看到桌面程序所有过程分析完了。

1.9K00

arm linux启动过程_项目冷启动和热启动区别

所谓冷启动,也就是一般所说上电复位,冷启动后片内外RAM内容是随机,通常是0x00或0xFF;单片机启动是通过外部电路给运行中单片机复位端一复位电平而实现,也就是所说按键复位或看门狗复位...常用方法是:确定某内存单位为标志位(如0x40003FF4~0x40003FF7 RAM单元),启动时首先读该内存单元内容,如果它等于一个特定值(例如为0xAA55AA55),就认为是热启动,否则就是冷启动.../冷启动处理 unStartFlag=0xAA55AA55; } 然而实际调试中发现,无论是热启动还是冷启动,开机后所有内存单元值都被复位为0,当然也实现不了热启动要求。...通过看keil MDK自带启动代码Startup.s,在这个启动代码中也并没有发现将整个RAM区域清零语句。...反汇编程序,发现从启动代码执行结束到跳转到main函数过程中,编译器还执行了很多库函数,其中__scatterload_zeroinit函数将所有W/R RAM都初始化为0(默认设置下)。

2.1K30
您找到你想要的搜索结果了吗?
是的
没有找到

Linux不为人知启动过程

二、Linux启动过程 对于一台安装了Linux系统主机来说,当我们按下开机按钮时一共要经历这几个阶段。 其中,每个过程都执行了自己该做初始化部分事情,有些过程又可分为好几个子过程。...加载完stage1后才能加载stage1.5,stage1.5有很多文件格式,当加载完stage1.5后能够识别其他文件格式。 grub 加载stage2就可以看到开机画面。...六、初始化系统 到这里就是就快要看到曙光啦,接下来就是最后一步初始化系统。...3.完成了系统所有的启动任务后,linux启动终端或X-Window来等待用户登录。...tty1,tty2,tty3...这表示在运行等级1,2,3,4时候,都会执行"/sbin/mingetty",而且执行了6个,所以linux会有6个纯文本终端,mingetty就是启动终端命令。

1K20

Linux启动引导程序(GRUB)加载内核过程

我们知道启动引导程序(Boot Loader,也就是 GRUB)会在启动过程中加载内核,之后内核才能取代 BIOS 接管启动过程。如果没有启动引导程,那么内核是不能被加载。...本节,我们就来看看启动引导程序加载内核过程,当然 initramfs 这个虚拟文件系统也是要靠启动引导程序调用。...GRUB加载内核过程GRUB 作用有以下几个:加载操作系统内核;拥有一个可以让用户选择菜单,来选择到底启动哪个系统;可以调用其他启动引导程序,来实现多系统引导。...答案是空间不够,GRUB 功能非常强大,MBRM 空间是不够使用。那么 Linux 解决办法是把 GRUB 程序分成了三个阶段来执行。...接下来内核就可以接管启动过程,继续自检与加载硬件模块了。

26420

Linux不为人知启动过程

二、Linux启动过程 对于一台安装了Linux系统主机来说,当我们按下开机按钮时一共要经历这几个阶段。 其中,每个过程都执行了自己该做初始化部分事情,有些过程又可分为好几个子过程。...加载完stage1后才能加载stage1.5,stage1.5有很多文件格式,当加载完stage1.5后能够识别其他文件格式。 grub 加载stage2就可以看到开机画面。...六、初始化系统 到这里就是就快要看到曙光啦,接下来就是最后一步初始化系统。...3.完成了系统所有的启动任务后,linux启动终端或X-Window来等待用户登录。...tty1,tty2,tty3...这表示在运行等级1,2,3,4时候,都会执行"/sbin/mingetty",而且执行了6个,所以linux会有6个纯文本终端,mingetty就是启动终端命令。

84510

ARM Linux 启动自解压过程 | Linux 内核

通常情况下,解压消耗时间比从存储介质传输未压缩镜像时间要短。 例如从 NAND Flash 加载内核,就是一种很典型情况。 本文将对 ARM Linux 自解压过程进行一个简单介绍。...arch/arm/* 下大多数机器都会使用压缩内核,其自解压过程是一样。...2002 年,Russell King 就在 Booting ARM Linux 文档中定义了 Booloader 引导 Linux 内核 ABI。...接下来,如果映射解压前内核和解压后内核所在区域的话,解压代码会设置一个页表,。这个页表不是为了使用虚拟内存,而是为了解压前能使 cache,从而获得更快解压速度。...现在我们知道内核可以解压缩到压缩镜像下方内存中,并且它们在解压缩过程中不会发生重叠,现在可以开始执行wont_overwrite 处代码了。

2.6K10

linux装载和启动可执行程序过程

罗军 + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 基础知识 编译程序过程 预处理...-m32(目标代码) 汇编器是将汇编代码转变成机器可以执行命令,每一个汇编语句几乎都对应一机器指令 链接:gcc -o hello hello.o -m32 (可执行文件) 通过调用链接器ld来链接程序运行需要一大堆目标文件...用IDA打开动态链接hello文件: ? 可以看到puts函数通过在PLT表0x080482F0位置跳转到GOT表0x0804A00C位置,查看GOT表验证: ?...用IDA打开静态链接hello文件: ? 可以看到已经把puts函数内容导入到代码段了。 装载和启动过程分析 execve函数调用流程如下: ?...set_thread_flag(TIF_NOTIFY_RESUME); } 设置新eip和esp,即加载可执行程序启动地方,我们打印

3K40

Linux】《how linux work》第五章 Linux内核启动过程

How the Linux Kernel Boots(第5章 Linux内核启动过程) You now know the physical and logical structure of a Linux...你能够识别启动过程每个阶段对于解决启动问题和理解整个系统将非常有价值。...然而,许多Linux发行版默认行为往往使得很难,甚至不可能在启动过程中识别前几个阶段进行情况,所以你可能只能在它们完成并且你登录后才能仔细观察。...传统Unix系统在启动时会产生许多诊断消息,告诉你有关启动过程信息。 这些消息首先来自内核,然后是由init启动进程和初始化过程。 然而,这些消息并不美观或一致,有些情况下甚至不是很有信息量。...此时,您可能还会看到关于根文件系统已挂载信息。

22310

Linux必知必会目录与启动过程

第1章 /etc/目录 1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 linux第一块网卡配置文件 [root@znix ~]# cat /etc/sysconfig...    0.00s  0.20s  0.10s w root     pts/1    10.0.0.1         20:31   25:10   0.04s  0.04s -bash 第4章 linux...启动过程 1、开机自检bios 2、mbr引导 3、GRUB 菜单:选择不同内核 4、加载内核 5、运行init进程 6、读取/etc/inittab配置文件 7、执行 /etc/rc.d/rc.sysinit...脚本 (系统初始化脚本) 8、执行 /etc/rc.d/rc  (根据运行级别运行相应软件) 9、显示登陆界面 第5章 PATH环境变量作用 PATH 作用:存放linux系统中命令位置 [root...@znix ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 5.1 运行命令过程

1K00

启动期间内存管理之初始化过程概述----Linux内存管理(九)

在系统启动过程中,创建和分配mem_map内存区域, mem_map定义在mm/page_alloc.c?...变量 1.5 今日内容(启动过程内存初始化) 在初始化过程中, 还必须建立内存管理数据结构, 以及很多事务....在系统启动过程期间, 使用了额外简化内存管理模块, 然后在初始化完成后, 将旧模块丢弃掉. 因此我们可以把linux内核内存管理分三个阶段。...分配器)或者memblock, 用于在启动阶段早期分配内存, 而在系统初始化完成后, 该分配器被内核抛弃, 然后初始化了一套新更加完善内存分配器. 2.1 引导内存分配器bootmem 在启动过程期间...3.1 初始化流程 下面我们就以arm64架构来分析bootmem初始化内存结点和内存域过程, 在讲解过程中我们会兼顾考虑arm64架构下异同 首先内核从start_kernel开始启动 然后进入体系结构相关设置部分

1.7K31

如何阅读百万行 Hadoop 源码?来一起 NameNode 启动过程源码,初窥其境

但是在大规模 HDFS 集群中,下面的问题通常会让我们无比头疼: 元数据量级超过亿级之后,NameNode 内存也会变得非常巨大,启动和维护都变异常困难; 如何保障 HDFS 高可用?...其次,不能一行行代码,这样很容易迷失在无边际代码中,逃不出来,最后很容易就放弃了。 最后,以具体场景来驱动代码阅读。比如本文就是以 NameNode 启动过程,来驱动代码阅读。...,每个 Servlet 都是一个功能 image.png 可以看到画红线,就是每个功能地址。...hasResourcesAvailable = false; 然后会判断是否进入安全模式: image.png 进入这个方法中: image.png 这个 getCompleteBlocksTotal() 返回正常使用...四、流程图 最后我们用一个流程图来总结一下 NameNode 启动流程: image.png NameNode启动流程 五、小结 主要有三大块: 1、启动 HttpServer ,可以查看 50070

44020

Linux进程启动过程分析do_execve(可执行程序加载和运行)---Linux进程管理与调度(十一)

execve系统调用 execve系统调用 我们前面提到了, fork, vfork等复制出来进程是父进程一个副本, 那么如何我们想加载新程序, 可以通过execve来加载和启动程序。...可执行程序结构 linux支持其他不同格式可执行程序, 在这种方式下, linux运行其他操作系统所编译程序, 如MS-DOS程序, 活BSD UnixCOFF可执行格式, 因此linux内核用...execve加载可执行程序过程 内核中实际执行execv()或execve()系统调用程序是do_execve(),这个函数先打开目标映像文件,并从目标文件头部(第一个字节开始)读入若干(当前Linux...内核中是128)字节(实际上就是填充ELF文件头,下面的分析可以看到),然后调用另一个函数search_binary_handler(),在此函数里面,它会搜索我们上面提到Linux支持可执行文件类型队列...在ELF文件格式中,处理函数是load_elf_binary函数,下面主要就是分析load_elf_binary函数执行过程(说明:因为内核中实际加载需要涉及到很多东西,这里只关注跟ELF文件处理相关代码

3.7K31

IO告警分析思路

记录一次IO告警分析过程 ? 接到告警,服务器IO飙升,连接服务器,登录服务器查看分析 top命令查看 ?...中也有CPUwa统计,可以看到23%时间用来等待I/O vmstat还提供自系统启动以来I/O子系统性能信息 ?...IO统计信息 说一下合并和合并写,linux在读写磁盘时,为了提高性能,内核合并对磁盘相邻区域请求,这样减少了对磁盘IO操作,从而一定程度上提高linux性能 从上面的信息,我们已经可以定位是写磁盘造成...如图,第一信息是自系统启动以来统计信息,第二开始,为每隔1秒统计数据(由于截图时候,故障已处理,所以这里其实看起来并没有什么读写),统计数据分别为: tps 每秒传输次数,该项为每秒对设备...从iostat中更直观看到那个磁盘在进行大量读写操作,如果用-x参数,能看到更多统计信息 sar 除了上面的工具,sar也是linux下性能分析常用工具,sar也比较通用,除了CPU、内存之外

1.4K40

Linux从头学05-系统启动过程几个神秘地址,你知道是什么意思吗?

特别是从系统上电之后,一直到操作系统中第一个进程(Linux 下就是 init 进程)运行起来,这其中经历了 BIOS、引导程序、操作系统这三元大将接力跑。...今天,我们从几个特殊地址角度,来从宏观节点上看一下系统启动过程。 0xFFFF:0x0000 这个地址,是处理器上电之后第一个重要物理地址。...我们再回到系统启动流程。...因此,在这个第一指令位置处,是一跳转指令: 跳转目标是 0xF000:0xE05B,计算得到物理地址 0xFE05B,可以看到同样是落在映射到 ROM 地址空间中(好像是废话:此时只能执行 BIOS...可以看到,引导代码几乎位于 RAM 顶端了,这样的话,从中断向量开始 0x00400,一直到引导代码 0x07C00,这块地址空间就是连续一整块,可以被操作系统更方便操作。

1.6K30

MySQL 读写分离配置实践

,可以放到/usr/local下 mycat/bin:放是可执行文件 mycat/conf:放MyCat配置文件 mycat/logs:放MyCat日志文件 wrapper.log:记录启动过程中遇到错误...,master做写操作,slave做操作 三、启动服务 查看配置文件mycat/conf/schema.xml 启动MyCat服务 查看端口 这表示mycat正常监听8066和9066端口 1....配置文件问题一 mycat/schema.xml中备份主库没有结束标签 配置好后,我们重启mycat程序 查看mycat/logs/wrapper.log,记录了mycat启动过程错误 2....配置文件问题二 mycat/schema.xml中端口出错 配置好后,我们重启mycat程序 查看mycat/logs/wrapper.log,记录了mycat启动过程错误 我们看到心跳不成功了...验证写操作在master 我们现在登录MyCat 8066数据端口,给user表insert一数据 在Linuxmaster服务器查看general_log,我们看见了insert数据SQL 在

20440

Shell 脚本实现并发多进程 了解一下~

for设置了Njob次循环,同一时间Linux就触发Njob个进程一起执行。...FIFO有两种用途: •FIFO由shell使用以便数据从一管道线传输到另一,为此无需创建临时文件,常见操作cat file|grepkeyword就是这种使用方式; •FIFO用于客户进程-...根据FIFO文件规则(参考http://www.cnblogs.com/yxmx/articles/1599187.html),如果有进程写打开FIFO,且当前FIFO内没有数据,对于设置了阻塞标志操作来说...需要注意是,当并发数较大时,多个并发进程即使在使用sleep相同秒数模拟时,也会存在进程调度顺序问题,因而并不是按启动顺序结束,可能会后启动进程先结束。 ? 运行结果如下图所示: ?...可以看到脚本执行时间9秒与预期3轮*3秒一致。 watch sleep进程,同样可以看到同一时刻只有5个sleep进程。 4总结 并行多进程循环语句提高脚本执行效率。

5.2K10

美团三面:一直追问我, MySQL 幻被彻底解决了吗?

方式解决了幻,因为可重复读隔离级别下,事务执行过程看到数据,一直跟这个事务启动看到数据是一致,即使中途有其他事务插入了一数据,是查询不出来这条数据,所以就很好了避免幻问题。...,它做变更就能被其他事务看到提交(read committed),指一个事务提交之后,它做变更才能被其他事务看到; 可重复读(repeatable read),指一个事务执行过程看到数据,...一直跟这个事务启动看到数据是一致,MySQL InnoDB 引擎默认隔离级别; 串行化(serializable );会对记录加上读写锁,在多个事务对这条记录进行读写操作时,如果发生了读写冲突时候...,因为可重复读隔离级别下,事务执行过程看到数据,一直跟这个事务启动看到数据是一致,即使中途有其他事务插入了一数据,是查询不出来这条数据,所以就很好了避免幻问题。...这就避免了由于事务 B 插入新记录而导致事务 A 发生幻现象。 幻被彻底解决了吗? 可重复读隔离级别下虽然很大程度上避免了幻,但是还是没有完全解决幻

43830

一文详解幻、脏和不可重复读

事务在执行过程中发生错误,被恢复(Rollback)到事务开始前状态,就像这个事务从来没有执行过一样。 Consistency(一致性):在事务开始之前和事务结束以后,数据库完整性没有被破坏。...read uncommitted:俗称未提交,指的是一个事务还没提交时,它做变更就能被别的事务看到。...Read committed:俗称提交,指的是一个事务提交之后,它做变更才会被其他事务看到。...Repeatable read:俗称可重复读,指的是一个事务执行过程看到数据,总是跟这个事务在启动看到数据是一致,同时当其他事务在未提交时,变更是不可见。...当有别的事务,在插入或者删除同一数据时候,就容易产生幻现象! 当数据库事务隔离级别为未提交、提交、可重复读时,就会发生幻现象!

39940

面经分享 | 面试官问我谈谈对事务隔离机制理解?我是这样回答

下面将会以 InnoDB 为例,剖析 MySQL 在事务支持方面的特定实现,希望通过这些案例加深你对 MySQL 事务原理理解!...Repeatable read:俗称可重复读,指的是一个事务执行过程看到数据,总是跟这个事务在启动看到数据是一致,同时当其他事务在未提交时,变更是不可见。...你一定希望在数据校对过程中,即使有用户发生了一笔新交易,也不影响你校对结果。 这时候使用“可重复读”隔离级别就极其实用而又方便,因为事务启动视图可以认为是静态,不受其他事务更新影响。...3.3、幻和不可重复读,有点类似,同一个事务多次同一数据结果不一致,但是表达侧重点不一样。...如图中看到,在视图 A、B、C 里面,这一个记录值分别是 1、2、4,同一记录在系统中可以存在多个版本,就是数据库多版本并发控制(MVCC)。

31830

MySQL事务隔离与undo log、MVCC亲密关系

可重复读(repeatable read,RR) 一个事务执行过程看到数据,和该事务在启动看到数据一致。 所以未提交变更对其它事务是不可见。...一个事务启动时,能够看到所有已提交事务结果。但之后该事务执行期间,其他事务更新对它就不可见了。 串行化(serializable) 对同行记录,“写”加“写锁”,“”加“锁”。...希望在校对过程中,即使有用户发生了一笔新交易,也不影响校对结果 这时候“可重复读”就很合适。 4 undo log MySQL每条记录在更新时都会同时记录一回滚操作。...事务回滚,一致性、崩溃恢复 记录事务回滚时所需撤销操作 一 INSERT 语句,对应一 DELETE undo log 每个 UPDATE 语句,对应一相反 UPDATE undo log...若执行 commit work and chain,则是提交事务并自动启动下个事务,省去执行begin语句开销。从程序开发角度也明确知道每个语句是否处于事务。

45610
领券