• 大小: 1.15MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-20
  • 语言: 其他
  • 标签: 优先级  

资源简介

NachOS线程调度_基于优先级和Round Robin算法

资源截图

代码片段和文件信息

/* syscalls.c
 *  Nachos system call interface.  These are the enveloped Nachos kernel 
 *      operations that can be invoked from user programs.
 *      Each NachOS system call is translated to an apropriate LIBC call. 
 *      Hopefully this works on MacOS X *nix and Windows
 */


#include “nachos_syscall.h“

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 



#ifdef HAVE_CONFIG_H
#include “config.h“
#endif

#define SHELL “/bin/sh“

/*
 * The system call interface.  These are the operations the Nachos
 * kernel needs to support to be able to run user programs.
 */

/* Stop Nachos and print out performance stats */
void Halt()
{
Exit(0);
}
 
 
/*
 * Add the two operants and return the result
 */ 

int Add(int op1 int op2)

return op1 + op2;
}


/* This user program is done (status = 0 means exited normally). */
void Exit(int status)
{
exit(status);
}

/* Address space control operations: Exit Exec Execv and Join */

/* Run the specified executable with no args */
/* This can be implemented as a call to ExecV.
 */ 
SpaceId Exec(char* exec_name)
{
    pid_t child;
    child = vfork();
    if(child == 0)
    {
execl (SHELL SHELL “-c“ exec_name NULL);
_exit (EXIT_FAILURE);
    }
    else if(child < 0) 
return EPERM;
    return (SpaceId) child;
}


/* 
 * Run the executable stored in the Nachos file “argv[0]“ with
 * parameters stored in argv[1..argc-1] and return the 
 * address space identifier
 * For this the incoming string has to be seperated by replacing “ “ 
 * with “\n“ and building the appropriate pointer structure argv.
 */
SpaceId ExecV(int argc char* argv[])
{
    pid_t child;
    child = vfork();
    if(child == 0){
execl (SHELL SHELL “-c“ argv NULL);
_exit (EXIT_FAILURE);
    }
    else if(child < 0) 
return EPERM;
    return (SpaceId) child;
}

/* Only return once the user program “id“ has finished.  
 * Return the exit status.
 */
int Join(SpaceId id)
{
    return waitpid((pid_t) id (int*) 0 0);
}
 

/* File system operations: Create Remove Open Read Write Close
 * These functions are patterned after UNIX -- files represent
 * both files *and* hardware I/O devices.
 *
 * Note that the Nachos file system has a stub implementation which
 * can be used to support these system calls if the regular Nachos
 * file system has not been implemented.
 */
 

/* when an address space starts up it has two open files representing 
 * keyboard input and display output (in UNIX terms stdin and stdout).
 * Read and Write can be used directly on these without first opening
 * the console device.
 */

/* Create a Nachos file with name “name“ */
/* Note: Create does not open the file.   */
/* Return 1 on success negative error code on failure */
int Create(char *name)
{
    int fd;
    fd=open(

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        605  2009-05-05 11:30  读我.txt

     文件      34419  2009-05-05 04:10  test2.log

     文件     143872  2009-05-05 11:25  NachOS线程调度技术报告.doc

     文件     190668  2009-05-05 11:23  NachOS线程调度技术报告.pdf

     文件      63072  2009-05-05 04:15  code\build.linux\addrspace.o

     文件      62132  2009-05-05 04:15  code\build.linux\alarm.o

     文件      47184  2009-04-09 15:06  code\build.linux\bitmap.o

     文件      64844  2009-05-05 04:15  code\build.linux\console.o

     文件      39564  2009-04-09 15:06  code\build.linux\debug.o

     文件      49936  2009-04-09 15:06  code\build.linux\directory.o

     文件      67240  2009-05-05 04:15  code\build.linux\disk.o

     文件     131076  2009-04-03 10:20  code\build.linux\DISK_0

     文件      53616  2009-05-05 04:15  code\build.linux\exception.o

     文件      55944  2009-05-05 04:15  code\build.linux\filehdr.o

     文件        860  2009-04-09 15:06  code\build.linux\filesys.o

     文件      83784  2009-05-05 04:15  code\build.linux\interrupt.o

     文件      83920  2009-05-05 04:15  code\build.linux\kernel.o

     文件     104832  2009-04-09 15:06  code\build.linux\libtest.o

     文件      59504  2009-05-05 04:15  code\build.linux\machine.o

     文件     225152  2009-05-05 04:15  code\build.linux\main.o

     文件      11953  2009-04-03 10:12  code\build.linux\Makefile

     文件     215140  2009-04-04 02:11  code\build.linux\Makefile.dep

     文件      11972  2003-10-11 00:40  code\build.linux\Makefile~

     文件      68076  2009-05-05 04:15  code\build.linux\mipssim.o

     文件     977079  2009-05-05 04:15  code\build.linux\nachos

     文件      66796  2009-05-05 04:15  code\build.linux\network.o

     文件        861  2009-04-09 15:06  code\build.linux\openfile.o

     文件      45796  2009-04-09 15:06  code\build.linux\pbitmap.o

     文件      92800  2009-05-05 04:15  code\build.linux\post.o

     文件      76612  2009-05-05 04:15  code\build.linux\scheduler.o

............此处省略106个文件信息

评论

共有 条评论