init进程,其程序位于根文件系统中,在kernle自行启动后,其中的start_kernel函数把根文件系统挂载到/目录后,在rest_init函数中通过kernel_thread(kernel_init, NULL, CLONE_FS | CLONE_SIGHAND); 建立PID为1的内核进程...
分类:
移动开发 时间:
2015-10-22 21:13:46
阅读次数:
256
公司处理器换核,前期用FPGA仿真板进行了芯片验证和软件移植,借这个机会也学习了powerpc处理器的一些知识,对powerpc的内核启动也有所了解。
完成了arm版本内核start_kernel之前汇编分析,也想尝试写几篇文章对powerpc的启动进行分析,与大家分享。其实不管哪个平台处理器,内核启动之初,因为运行地址无法保证与链接地址一致,都要完成一次地址的配置和跳转来保证内核运行地址与链接地址的一致性。...
分类:
系统相关 时间:
2015-09-16 20:07:42
阅读次数:
227
张韩+原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000首先。解读一下程序的核心代码void __init my_start_kernel(void){ int i = 0; while(1).....
分类:
其他好文 时间:
2015-09-12 17:40:12
阅读次数:
164
setup_per_cpu_areas是为了对内核的内存管理(mm)进行初始化而调用的函数之一。只在SMP系统中调用,UP中不执行任何操作。
setup_per_cpu_areas函数为SMP的每个处理器生成per-cpu数据。
per-cpu数据按照不同的CPU类别使用,以将性能低下引发的缓存一致性(cache coherency)问题减小到最小。per-cpu数据由各cpu独立使用,即使不锁...
分类:
其他好文 时间:
2015-07-07 14:54:17
阅读次数:
249
kernel/smp.c/* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */
void __init setup_nr_cpu_ids(void)
{
nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) +...
分类:
其他好文 时间:
2015-07-06 21:52:09
阅读次数:
395
mm/highmem.cvoid __init page_address_init(void)
{
int i; for (i = 0; i < ARRAY_SIZE(page_address_htable); i++) {
INIT_LIST_HEAD(&page_address_htable[i].lh);
spin_lock_init(&page_...
分类:
其他好文 时间:
2015-07-06 18:02:55
阅读次数:
127
init/main.c/*
* Activate the first processor.
*/static void __init boot_cpu_init(void)
{
int cpu = smp_processor_id();
/* Mark the boot cpu "present", "online" etc for SMP and UP case */...
分类:
其他好文 时间:
2015-07-06 16:12:41
阅读次数:
323
在启动初期需要关闭CPU的IRQ,原因:
由于尚未对中断代码,向量表,中断处理器进行初始化,所以必须关闭中断。我的源代码里面定义了 CONFIG_TRACE_IRQFLAGS_SUPPORT,所以调用的是
include/linux/irqflags.h#define local_irq_disable() do { raw_local_irq_disable(); trace_ha...
分类:
其他好文 时间:
2015-07-03 15:49:53
阅读次数:
168
void lockdep_init(void)
{
int i; /*
* Some architectures have their own start_kernel()
* code which calls lockdep_init(), while we also
* call lockdep_init() from the start_kernel...
分类:
其他好文 时间:
2015-07-01 20:41:47
阅读次数:
194
跟踪分析Linux内核的启动过程沙雨济 20122137原创作品转载请注明出处+《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000一 、实验内容:使用gdb跟踪调试内核从start_kernel到init进程启动。二 、...
分类:
系统相关 时间:
2015-05-03 20:36:02
阅读次数:
271