• 2019-2020-1 20199322《Linux内核原理与分析》第三周作业


    前面的实验楼给的操作步骤,不再赘述

    mykernel里的mymain.c下面的这段代码

    void _init my_start_kernel(void)
    {
           int i=0;
           while(1)
                         {
                              i++;
                              if(i%100000==0)
                                   printf(KERN_NOTICE"my_start_kernel here %d 
    ",i);
    
                          }
    }
    

    很明显这是内核的启动函数,while循环里每执行10万次,然后输出一行,如下图

    当我们把10万,修改成100万,然后make一下,就会发现,输出的频率就不一样了,如下图

    下面再看看 myinterrupt.c里的代码, 根据注释也知道,这是调用时钟中断了,然后输出一条语句

    根据庖丁解牛上的二维码9给的地址,我们更新一下,上面的几个mymain.c,myinterrupt.cmypcb.c

    然后make一下,然后输出一下,如下图。感觉和没更新前,好像没什么区别

    更正

    上次说没有变化,应该是编译错误了,执行的是没改之前的mykernel

    经过反复查找,问题被定位在mypch.h

    删除 #unsigned long

    /*
     *  linux/mykernel/mypcb.h
     *
     *  Kernel internal PCB types
     *
     *  Copyright (C) 2013  Mengning
     *
     */
    
    #define MAX_TASK_NUM        4
    #define KERNEL_STACK_SIZE   1024*2 # unsigned long
    /* CPU-specific state of this task */
    struct Thread {
        unsigned long		ip;
        unsigned long		sp;
    };
    
    typedef struct PCB{
        int pid;
        volatile long state;	/* -1 unrunnable, 0 runnable, >0 stopped */
        unsigned long stack[KERNEL_STACK_SIZE];
        /* CPU-specific state of this task */
        struct Thread thread;
        unsigned long	task_entry;
        struct PCB *next;
    }tPCB;
    
    void my_schedule(void);
    

    然后再重复操作

  • 相关阅读:
    7、python数据类型之集合set
    python基本数据类型练习
    matplotlib
    numpy常用函数
    pillow包
    keras-tensorflow版本对应
    python-激活和切换运行环境
    端口监控
    numpy
    低风险创业笔记
  • 原文地址:https://www.cnblogs.com/vizen/p/11602811.html
Copyright © 2020-2023  润新知