zoukankan      html  css  js  c++  java
  • (作业2)mykernel实验指导(操作系统是如何工作的)

    作业题目: 

    详细分析该精简内核的源代码并给出实验截图,撰写一篇署名博客,并在博客文章中注明“真实姓名(与最后申请证书的姓名务必一致) + 原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ”,博客内容的具体要求如下: 

    • 题目自拟,内容围绕操作系统是如何工作的进行;

    • 博客中需要使用实验截图

    • 博客内容中需要仔细分析进程的启动和进程的切换机制

    • 总结部分需要阐明自己对“操作系统是如何工作的”理解。

    作答区:

    1. 代码下载地址(由孟老师提供):https://github.com/mengning/mykernel。这里不粘出代码。如果想在Windows下查看,可以点击上面的链接,具体的文件参照下图:

    注:mypcb.h是一些结构体、常量的定义和函数的声明,简单看看即可。

    2. 按照要求,输入如下命令:

    cd LinuxKernel/linux-3.9.4
    qemu -kernel arch/x86/boot/bzImage
    cd mykernel

    输入vi mymain.c,可以看到有如下两个函数:

    void __init my_start_kernel(void); // 初始化进程0,并用for循环创建更多的进程(1~n),汇编代码启动进程0
    void my_process(void); // 每10000000次进行一次判断:如果需要调度,则调用my_schedule()。并输出相应提示语句

    输入vi mymain.c,可以看到有如下两个函数:

    void my_timer_handler(void); // 周期性执行该时钟中断处理程序,设置时间片大小,时间片用完时设置一下调度标志
    void my_schedule(void); // if两个正在运行的进程之间做进程上下文切换,else切换到一个新进程的方法

    3. 执行程序截图

    4. 老实说这篇博文比较水,有点应付作业的意思,没有自己的见解因为没太听懂。博主需要时间消化、理解一下。因为作业上交的期限要到了,就先写到这里。好歹证明咱学习过、思考过。如果有好的文章不妨推荐给我一下。谢谢大家。

    作者:李春霖

    原创作品转载请注明出处

    《Linux内核分析》MOOC课程地址:http://mooc.study.163.com/course/USTC-1000029000 

  • 相关阅读:
    JScript 对字符串、数组处理的常用方法
    JavaScript 正则的使用方法
    Nginx配置文件详细说明 (转)
    PHP中try catch的用法
    PHP将多个文件中的内容合并为新的文件
    如何配置WAMP环境(主要是Apache与PHP)
    解决“mysql不是内部/外部命令,也不是可执行程序,也不是批处理文件”
    Memcached 在Windows和Linux的安装和使用
    ThinkPhp中验证码不显示和配置项的问题解决方法
    JAVA8流操作
  • 原文地址:https://www.cnblogs.com/clevercong/p/4340592.html
Copyright © 2011-2022 走看看