zoukankan      html  css  js  c++  java
  • 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);
    

    然后再重复操作

  • 相关阅读:
    c语言程序设计(学生成绩管理系统)————提供给计算机系c语言初学者参考
    C语言之指针排序
    C语言之冒泡法一
    C语言之统计字符
    C语言之while输出菱形
    C语言之do_while输出菱形
    C语言之素数的判断
    C语言之输出菱形
    基于RT-THREAD的定时鱼缸喂食器设计
    dx/dy=1/y’求其二阶导
  • 原文地址:https://www.cnblogs.com/vizen/p/11602811.html
Copyright © 2011-2022 走看看