Linux内核分析第三周  构造一个简单的Linux系统MenuOS

前提回顾

1.计算机是如何工作的三个法宝

  1.存储程序计算机

  2.函数调用堆栈

  3.中断

2.操作系统的两把宝剑

  1. 中断上下文的切换
  2. 进程上下文的切换

第一讲  Linux内核源代码介绍

arch目录包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录。

init目录包含核心的初始化代码(不是系统的引导代码),有main.c和Version.c两个文件。这是研究核心如何工作的好起点。

start_kernel函数之前的内容基本都是汇编语言,而从该函数开始内核进入c语言部分,功能则是内核主要功能的初始化。

Kernel内核管理的核心代码放在这里。同时与处理器结构相关代码都放在arch/*/kernel目录下。

第二讲 实验 构建一个简单的Linux内核

1.使用实验楼的虚拟机打开shell

cd LinuxKernel

qemu -kernel linux-3.18.6/arch/x86/boot/bzImage -initrd rootfs.img

qemu:启动一个虚拟机平台

-kernel:给一个内核,操作系统

-initrd:驱动所需的硬盘

rootfs.img:放一个可执行文件由menuOS源代码编译成的init

内核启动完成后进入menu程序支持三个命令help、version和quit

2.通过gdb跟踪内核的启动

设置断点在start_kernel

设置断点在rest_init

总结:

start_kernel到init进程启动:

内核几乎所有模块的初始化都会经过start_kernel来进行

 /*init_task即手工创建的PCB,0号进程就是最终的idle进程*/
set_task_stack_end_magic(&init_task);
........
/*初始化中断向量*/
trap_init();
/*内存管理模块初始化*/
mm_init();
/*调度模块初始化*/
sched_init();
....
/*其他初始化*/
rest_init()

进程启动过程图(来自http://img.blog.csdn.net/20140405154332828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhneGh1YWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

rest_init()最后执行cpu_startup_entry();cpu_startup_entry会调用cpu_idle_loop(), 在cpu_idle_loop()里面有个while(1)的循环一直执行,作为idle进程,pid是0号,此进程会一直执行下去,并且在系统没有任何需要执行的进程时,调度到此进程。 
Linux内核的启动在宏观上来看,就是start_kernel()来进行各种初始化工作,最终执行到rest_init()来初始化0号进程和1号用户态的进程。然后操作系统就运行起来了。

郭皓原创作品转载请注明出处  《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS的更多相关文章

  1. linux内核分析 第三周 构造一个简单的Linux系统MenuOS

    一.计算机的三个法宝 存储程序计算机,函数调用堆栈,中断二.操作系统的两把剑:1.中断上下文的切换,保存现场和恢复现场2.进程上下文的切换. 三.linux内核源代码的分析: ·arch/目录保存支持 ...

  2. Linux内核分析第三周——构造一个简单的Linux系统MenuOS

    构造一个简单的Linux系统MenuOS 李雪琦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/UST ...

  3. Linux内核设计第三周——构造一个简单的Linux系统

    Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核 ...

  4. 《Linux内核分析》 第三周 构造一个简单的Linux系统MenuOS

    Linux内核分析 第三周 构造一个简单的Linux系统MenuOS 张嘉琪 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/ ...

  5. 第三周 构造一个简单的Linux系统MenuOS

    一.   Linux内核源代码简介 稳定版内核:Linux-3.18.6 Linux内核源代码的目录结构: arch目录:在Linux内核源代码里占有的比重很大,因为Linux内核支持很多的体系结构, ...

  6. 第三周 构造一个简单的Linux系统

    20135331文艺 首先 在上周内容中我们学习了 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 本周中得知 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程 ...

  7. Linux内核分析——第三周学习笔记20135308

    第三周 构造一个简单的Linux系统MenuOS 计算机三个法宝: 1.存储程序计算机 2.函数调用堆栈 3.中断 操作系统两把宝剑: 1.中断上下文的切换:保存现场和恢复现场 2.进程上下文的切换 ...

  8. 《Linux内核分析》第三周 构建一个简单的Linux系统MenuOS

    [刘蔚然 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000] WEEK THREE ...

  9. linux内核分析第三周

    20135103王海宁 linux内核分析第三周 http://mooc.study.163.com/course/USTC-1000029000  按照课堂提供的方法,命令行一行行敲上去,我是手机缓 ...

随机推荐

  1. 11.SolrCloud集群环境搭建

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 我们基于Solr4.10.3版本进行安装配置SolrCloud集群,通过实践来实现索引数据的分布存储和检索. ...

  2. import org.apache.http.xxxxxx 爆红,包不存在之解决办法

    问题如下:import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http ...

  3. Docker技术入门与实战 第二版-学习笔记-1-镜像

    镜像与容器之间的关系: 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体.容器可以被 创建.启动.停止.删除.暂停 ...

  4. 搞死人的contextRoot;weblogic9.2

    默认情况下: 两个app-deployment同时部署到了一台weblogic服务器的同一个domain下面的时候 /mysite/www/www/WEB-INF/weblogic.xml /mysi ...

  5. 2、Pyspider使用入门

    1.接上一篇,在webui页面,点击右侧[Create]按钮,创建爬虫任务 2.输入[Project Name],[Start Urls]为爬取的起始地址,可以先不输入,点击[Create]进入: 3 ...

  6. 向jupyter notebook加入Anaconda3中已添加的虚拟环境kernel

    # jupyter notebook添加Anaconda虚拟环境的kernel #  开启虚拟环境 (base) C:\Users\jiangshan>activate tensorflow # ...

  7. Elasticsearch学习笔记2

    Elasticsearch is a search engine based on Lucene library.  It provides a distributed, multitenant-ca ...

  8. ssh推送.py程序到服务器端运行

    C:\Users\jiangshan>ssh jiangshan@192.168.1.191jiangshan@192.168.1.191's password:Last login: Sun ...

  9. Vue 下拉列表 组件模板

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. 一,ESP8266下载和刷固件(基于Lua脚本语言)

    用自己的小板测试...... 安排上呢 一, ESP8266下载和刷固件(Lua开发----体验一下lua开发的魅力所在) 二, 控制一个灯亮灭 三, TCP服务器 四, TCP客户端 五, UDP ...