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 

  • 相关阅读:
    Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
    Java 集合系列04之 fail-fast总结(通过ArrayList来说明fail-fast的原理、解决办法)
    linked-list-cycle-ii-LeetCode
    reorder-list-LeetCode
    sum-root-to-leaf-numbers-LeetCode
    binary-tree-maximum-path-sum-LeetCode
    机器人的运动范围-剑指Offer
    矩阵中的路径-剑指Offer
    滑动窗口的最大值-剑指Offer
  • 原文地址:https://www.cnblogs.com/clevercong/p/4340592.html
Copyright © 2011-2022 走看看