资源简介
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个文件信息
评论
共有 条评论