Linux内核分析 SMP启动
- 格式:ppt
- 大小:271.50 KB
- 文档页数:30
Linux 内核启动分析1. 内核启动地址1.1. 名词解释ZTEXTADDR解压代码运行的开始地址。
没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。
这个地址不一定时RAM的地址,可以是支持读写寻址的flash等存储中介。
Start address of decompressor. here's no point in talking about virtual or physical addresses here, since the MMU will be off at the time when you call the decompressor code. Y ou normally call the kernel at this address to start it booting. This doesn't have to be located in RAM, it can be in flash or other read-only or read-write addressable medium.ZRELADDR内核启动在RAM中的地址。
压缩的内核映像被解压到这个地址,然后执行。
This is the address where the decompressed kernel will be written, and eventually executed. The following constraint must be valid:__virt_to_phys(TEXTADDR) == ZRELADDRThe initial part of the kernel is carefully coded to be position independent.TEXTADDR内核启动的虚拟地址,与ZRELADDR相对应。
一般内核启动的虚拟地址为RAM的第一个bank地址加上0x8000。
【内核】linux内核启动流程详细分析Linux内核启动流程 arch/arm/kernel/head-armv.S 该⽂件是内核最先执⾏的⼀个⽂件,包括内核⼊⼝ENTRY(stext)到start_kernel间的初始化代码, 主要作⽤是检查CPU ID, Architecture Type,初始化BSS等操作,并跳到start_kernel函数。
在执⾏前,处理器应满⾜以下状态:r0 - should be 0r1 - unique architecture numberMMU - offI-cache - on or offD-cache – off1/* 部分源代码分析 */2/* 内核⼊⼝点 */3 ENTRY(stext)4/* 程序状态,禁⽌FIQ、IRQ,设定SVC模式 */5 mov r0, #F_BIT | I_BIT | MODE_SVC@ make sure svc mode6/* 置当前程序状态寄存器 */7 msr cpsr_c, r0 @ and all irqs disabled8/* 判断CPU类型,查找运⾏的CPU ID值与Linux编译⽀持的ID值是否⽀持 */9 bl __lookup_processor_type10/* 跳到__error */11 teq r10, #0 @ invalid processor?12 moveq r0, #'p' @ yes, error 'p'13 beq __error14/* 判断体系类型,查看R1寄存器的Architecture Type值是否⽀持 */15 bl __lookup_architecture_type16/* 不⽀持,跳到出错 */17 teq r7, #0 @ invalid architecture?18 moveq r0, #'a' @ yes, error 'a'19 beq __error20/* 创建核⼼页表 */21 bl __create_page_tables22 adr lr, __ret @ return address23 add pc, r10, #12 @ initialise processor24/* 跳转到start_kernel函数 */25 b start_kernel1. start_kernel()函数分析 下⾯对start_kernel()函数及其相关函数进⾏分析。
在Linux内核启动时,可以通过解析参数来配置内核的行为。
这些参数通常由引导加载程序(如GRUB)或内核命令行传递。
以下是一些常见的内核启动解析参数:
1. `root=`:指定根文件系统的设备或UUID。
例如,`root=/dev/sda1`或
`root=UUID=12345678-1234-5678-1234-56789abcdef`。
2. `init=`:指定作为第一个进程启动的程序的路径。
通常是init进程(如`/sbin/init`)。
3. `ro`或`rw`:指定根文件系统以只读(read-only)或读写(read-write)模式挂载。
4. `quiet`或`silent`:禁止内核在启动期间输出冗长的消息。
5. `loglevel=`:设置内核的日志级别。
较低的值会产生更多的调试信息,较高的值则会减少输出。
例如,`loglevel=7`。
6. `nomodeset`:禁用图形模式设置,可能有助于解决某些图形问题。
7. `acpi=off`:禁用ACPI(高级配置与电源接口)功能。
8. `irqpoll`:在中断处理期间轮询(poll)IRQ线,用于解决某些硬件兼容性问题。
9. `debug`:启用内核调试模式,产生更详细的调试信息。
这只是一小部分常见的内核启动解析参数,实际上还有许多其他可用的参数。
你可以根据需要选择和配置这些参数来满足特定的需求。
【IT专家】Linux在多核处理器-SMP中的3个进程(每个进程在不同的核心中运行)之间共享内存本文由我司收集整编,推荐下载,如有疑问,请与我司联系Linux 在多核处理器/ SMP中的3个进程(每个进程在不同的核心中运行)之间共享内存Linux在多核处理器/ SMP中的3个进程(每个进程在不同的核心中运行)之间共享内存[英]Linux Shared memory between 3 processes (each process running in different core) in Multicore Processor/SMP目的:I want to synchronize three different processes, so I thought of using shared memory between the processes. So I have forked two child’s from one process and create d a shared memory segment before creating the child’s. My intention is to run the child processes and parent process in different cores to make it parallel execution. So I have used the affinity control to assign the according CPU. Both the child’s will wa it in indefinite while loop (consuming on the same CPU which is assigned) until it gets the trigger from the parent via shared memory. So when the parent writes some specific character/string, the child should come out loop and start executing the rest of the code.我想同步三个不同的进程,因此我想在进程之间使用共享内存。
【整理】Linux中对于SMP系统的实现
Linux从2.0开始增加对SMP系统的⽀持。
在2.2前的内核中,SMP实现在⽤户级,Linux内核本⾝并不能因为有多个处理器⽽得到加速;在2.4内核后,SMP实现在核⼼级,使⽤多处理器可以加快内核的处理速度。
1、SMP中的系统引导
在同⼀时间,⼀个“上下⽂”只能由⼀个CPU处理。
在系统引导和初始化阶段,只有⼀个“上下⽂”,只能由⼀个处理器来处理。
BP完成系统的引导和初始化,并创建起多进程,从⽽可以由多个处理器同时参与处理时,才启动所有的AP,让它们在完成⾃⾝的初始化后投⼊运⾏。
在Linux中,SMP系统的引导是⼀个分阶段的过程,这中间需要主CPU和次CPU在⼏个地⽅进⾏同步,已取得相同的同步和协调,最终基本在同⼀时间进⼊SMP的进程调度。
Linux中SMP系统在Intel的Pentium上的引导过程如下:
2、SMP中的进程调度
在SMP结构的系统中同时有多个进程在运⾏,需要Linux在进程的task_struct数据结构中加上两个字段,⼀个是has_cpu,表进程是否在CPU上运⾏,另⼀个是processor,表进程在哪个CPU上运⾏。
Linux操作系统内核对SMP(对称多处理器)的支持
高珍;吴永明;周卫华
【期刊名称】《计算机应用研究》
【年(卷),期】2002(019)009
【摘要】详细介绍了Linux操作系统内核是怎样支持SMP(对称多处理器)系统工作的,并具体分析了其内核源代码的实现过程.
【总页数】3页(P62-63,67)
【作者】高珍;吴永明;周卫华
【作者单位】同济大学,计算机科学与工程系,上海,200092;同济大学,计算机科学与工程系,上海,200092;同济大学,计算机科学与工程系,上海,200092
【正文语种】中文
【中图分类】TP393
【相关文献】
1.Linux
2.6内核对SMP系统支持的研究 [J], 李兰英;温现杰
2.片多处理器和对称多核处理器的研究进展 [J], 王永明;;
3.支持对称多处理器结构的操作系统设计 [J], 任晓瑞;时磊
4.基于多核对称最小二乘支持向量机的永磁同步电机混沌建模 [J], 陈强;任雪梅
5.MIPS科技宣布其对称多处理(SMP)支持MIPS-Based^(TM) SoC上的Android^(TM)平台 [J],
因版权原因,仅展示原文概要,查看原文内容请购买。