⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 progtest.cc

📁 nachos系统作业 实现线程系统 实现一个电梯模拟 附实验报告
💻 CC
字号:
// progtest.cc //	Test routines for demonstrating that Nachos can load//	a user program and execute it.  ////	Also, routines for testing the Console hardware device.//// Copyright (c) 1992-1993 The Regents of the University of California.// All rights reserved.  See copyright.h for copyright notice and limitation // of liability and disclaimer of warranty provisions.#include "copyright.h"#include "system.h"#include "console.h"#include "addrspace.h"#include "synch.h"//----------------------------------------------------------------------// StartProcess// 	Run a user program.  Open the executable, load it into//	memory, and jump to it.//----------------------------------------------------------------------voidStartProcess(char *filename){    OpenFile *executable = fileSystem->Open(filename);    AddrSpace *space;    if (executable == NULL) {	printf("Unable to open file %s\n", filename);	return;    }    space = new AddrSpace(executable);        currentThread->space = space;    delete executable;			// close file    space->InitRegisters();		// set the initial register values    space->RestoreState();		// load page table register    machine->Run();			// jump to the user progam    ASSERT(FALSE);			// machine->Run never returns;					// the address space exits					// by doing the syscall "exit"}// Data structures needed for the console test.  Threads making// I/O requests wait on a Semaphore to delay until the I/O completes.static Console *console;static Semaphore *readAvail;static Semaphore *writeDone;//----------------------------------------------------------------------// ConsoleInterruptHandlers// 	Wake up the thread that requested the I/O.//----------------------------------------------------------------------static void ReadAvail(int arg) { readAvail->V(); }static void WriteDone(int arg) { writeDone->V(); }//----------------------------------------------------------------------// ConsoleTest// 	Test the console by echoing characters typed at the input onto//	the output.  Stop when the user types a 'q'.//----------------------------------------------------------------------void ConsoleTest (char *in, char *out){    char ch;    console = new Console(in, out, ReadAvail, WriteDone, 0);    readAvail = new Semaphore("read avail", 0);    writeDone = new Semaphore("write done", 0);        for (;;) {	readAvail->P();		// wait for character to arrive	ch = console->GetChar();	console->PutChar(ch);	// echo it!	writeDone->P() ;        // wait for write to finish	if (ch == 'q') return;  // if q, quit    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -