linux内核学习-3 main函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))

#ifdef RAMDISK // 如果定义了虚拟盘,则主内存将减少。

124 main_memory_start += rd_init(main_memory_start, RAMDISK*1024);

125 #endif

// 以下是内核进行所有方面的初始化工作。阅读时最好跟着调用的程序深入进去看,实在看

// 不下去了,就先放一放,看下一个初始化调用 -- 这是经验之谈?。

126 mem_init(main_memory_start,memory_end);

127 trap_init(); // 陷阱门(硬件中断向量)初始化。(kernel/traps.c,181 行)

128 blk_dev_init(); // 块设备初始化。 (kernel/blk_dev/ll_rw_blk.c,157 行)

129 chr_dev_init(); // 字符设备初始化。 (kernel/chr_dev/tty_io.c,347 行)

130 tty_init(); // tty 初始化。 (kernel/chr_dev/tty_io.c,105 行)

131 time_init(); // 设置开机启动时间

时间: 2024-11-09 14:18:54

linux内核学习-3 main函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))的相关文章

linux内核学习-3 init函数(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))

void init(void) 169 { 170 int pid,i; 171 172 setup((void *) &drive_info); // 读取硬盘参数包括分区表信息并建立虚拟盘和 // 安装根文件系统设备.(kernel/blk_drv/hd.c,71) 173 (void) open("/dev/tty0",O_RDWR,0); // 用读写访问方式打开设备"/dev/tty0", // 这里对应终端控制台. // 返回的句柄号0 -- s

linux内核学习-4kernal目录(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))

该目录下的代码文件从功能上可以分为三类,一类是硬件(异常)中断处理程序文件,一类是系统 调用服务处理程序文件,另一类是进程调度等通用功能文件.参见图1.5.我们现在根据这个分类方式, 从实现的功能上进行更详细的说明. 5.1.1.1 硬件中断处理类程序 主要包括两个代码文件:asm.s 和traps.c 文件.asm.s 用于实现大部分硬件异常所引起的中断的汇 编语言处理过程.而traps.c 程序则实现了asm.s 的中断处理过程中调用的c 函数.另外几个硬件中断 处理程序在文件system_

linux内核学习-5任务调度(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))

void schedule(void) 105 { 106 int i,next,c; 107 struct task_struct ** p; // 任务结构指针的指针. 108 109 /* check alarm, wake up any interruptible tasks that have got a signal */ /* 检测alarm(进程的报警定时值),唤醒任何得到信号的可中断任务 */ 110 // 从任务数组中最后一个任务开始检测alarm. 111 for(p =

linux内核学习-6信号量(关注新浪微博:寂寞侵蚀的岁月(4000多篇技术分享))

#include // 调度程序头文件,定义了任务结构task_struct.初始任务0 的数据,// 还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句.8 #include // 内核头文件.含有一些内核常用函数的原形定义.9 #include // 段操作头文件.定义了有关段寄存器操作的嵌入式汇编函数.1011 #include // 信号头文件.定义信号符号常量,信号结构以及信号操作函数原型.1213 volatile void do_exit(int error_code); //

Linux内核学习总结

李泽源 原创作品 转载请注明出处 <Linux内核分析>MOOC课程:http://mooc.study.163.com/course/USTC-1000029000 [Linux内核学习总结] 幸福来得很突然,这门课就快结束了…… 是时候,总结下这段时间的坚持了,也给同样对Linux内核有兴趣的你一个指南. 在这门课的学习过程中,按照老师的要求,每次课后都写一篇博文,这是一个很好的学习方式.每当写这些文章的时候,总是要多看几遍视频,再查查相关的资料,才能勉强凑成一个完整的文档:同时也把自己学

Linux内核学习-进程

先说几个术语: 一.Linux进程的五个段 下面我们来简单归纳一下进程对应的内存空间中所包含的5种不同的数据区都是干什么的.重点:代码段.数据段.堆栈段,这是一个概念堆.栈.全局区.常量区,这是另一个概念1)代码段:代码段是用来存放可执行文件的操作指令,也就是说是它是可执行程序在内存中的镜像.代码段需要防止在运行时被非法修改,所以只准许读取操作,而不允许写入(修改)操作--它是不可写的.代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域.这部分

Linux内核学习总结(final)

Linux内核学习总结 符钰婧 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这八周以来,我从拼不出来"Linux"这个词到知道了很多专有名词,也能大概了解Linux的工作机制,这一系列的进步都是一周周积累下来的.现在回过头来看,有种阳光总在风雨后的感觉,虽然这个比喻好像不太恰当. 闲话少说,接下来就进入这次的正题. 一.首先是对Linux操作系统的理解 1.操作系

linux内核学习:进程管理

进程状态 TASK_RUNNING 可运行或正在运行 TASK_INTERRUPTIBLE 进程被阻塞,但可以被信号唤醒 TASK_UNINTERRUPTIBLE 进程被阻塞,且不可以被信号唤醒 TASK_STOPPED 进程已停止,且不能再投入运行 TASK_ZOMBIE 所谓的僵死进程,进程描述符仍然保留 关键函数和结构 task_struct thread_info current clone fork exec wait exit linux内核学习:进程管理,布布扣,bubuko.co

linux内核学习:中断

编程相关 注册中断 int request_irq( unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) typedef irqreturn_t (*irq_handler_t)(int, void *); IRQF_DISABLED 会禁用除本本身以外的其它中断,一般是不用的 IRQF_SAMPLE_RANDOM 可以帮助内核随机数的产生.如果中断产生地毫无规律,可