gdb中不存在的内存

时间:2015-03-25 21:58:43

标签: c operating-system out-of-memory scheduler

我正在使用HOCA系统变体开发OS类项目。

我试图创建操作系统的中断处理程序部分,检测和处理I / O设备中断。

(如果你对HOCA一无所知,这很好)我的问题实际上是关于C的内部操纵。

整个系统的工作方式如下:

操作系统的主要功能是调用init(),其中所有部件都已初始化。

初始化操作系统后,将创建根进程,并将第一个应用程序调度()到特定应用程序。然后创建应用程序进程并在以根进程为根的树结构中进行schedule()。

void schedule(){
    proc_t *front;
    front = headQueue(RQ); //return the first available process in the Ready Queue
    if (checkPointer(front)) {
        intschedule();     // load a timeslice to the OS
        LDST(&(front->p_s));  // load the state to the OS
                              // so that OS can process the application specified by p_s
                              // LDST() is system function to load a state to processor
    }
    else {
        intdeadlock();     // unlock a process from the blocked list and put in RQ
    }
}

使用gdb,我看到一切正常,直到它在if之前处理(checkPointer(front))

int checkPointer(void *p){
    return ((p != (void *) ENULL)&&(p != (void *)NULL));
}

gdb回复:

  

trap:不存在的内存地址:-1内存大小:131072错误:   地址大于MEMORYSIZE

这出了什么问题?

checkPointer()位于另一个文件中。

非常感谢您的帮助。

0 个答案:

没有答案