資源簡介
修改Nachos,完成對應的進程(線程)調度算法。
具體算法有:先來先服務(FCFS)、靜態優先級調度(PS)、實時調度(SJF)等。

代碼片段和文件信息
/*?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(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1020??2002-12-16?18:57??NachOS-4.1\COPYRIGHT
?????文件???????2337??2011-05-14?09:03??NachOS-4.1\.project
?????文件??????11355??2011-05-14?09:03??NachOS-4.1\.cproject
?????文件????????853??2002-12-16?18:57??NachOS-4.1\coff2noff\noff.h
?????文件???????2314??2002-12-16?18:57??NachOS-4.1\coff2noff\coff.h
?????文件???????9608??2003-10-07?22:57??NachOS-4.1\coff2noff\coff2noff.c
?????文件???????1229??2002-12-16?18:57??NachOS-4.1\coff2noff\copyright.h
?????文件???????1187??2003-10-08?00:15??NachOS-4.1\coff2noff\Makefile.in
?????文件????????476??2003-10-08?00:16??NachOS-4.1\coff2noff\configure.ac
?????文件????????528??2003-10-07?23:07??NachOS-4.1\coff2noff\config.h.in
?????文件??????95105??2003-10-07?23:07??NachOS-4.1\coff2noff\configure
?????文件???????6888??2011-04-29?13:59??NachOS-4.1\coff2noff\config.log
?????文件??????12088??2011-04-28?19:17??NachOS-4.1\coff2noff\coff2noff.o
?????文件??????18584??2011-04-29?13:59??NachOS-4.1\coff2noff\config.status
?????文件???????5992??2011-04-28?19:17??NachOS-4.1\coff2noff\coff2noff
?????文件???????1192??2011-04-29?13:59??NachOS-4.1\coff2noff\Makefile
?????文件????????602??2011-04-28?19:17??NachOS-4.1\coff2noff\config.h
?????文件???????2023??2003-10-08?00:23??NachOS-4.1\code\README
?????文件???????2486??2011-05-14?09:16??NachOS-4.1\code\.project
?????文件??????19135??2011-05-14?09:16??NachOS-4.1\code\.cproject
?????文件????????682??2003-10-07?17:36??NachOS-4.1\code\shell\shell.c
?????文件???????7016??2003-10-11?00:06??NachOS-4.1\code\shell\nachos_syscall.c
?????文件????????293??2003-10-09?21:53??NachOS-4.1\code\shell\Makefile.in
?????文件???????1837??2003-10-07?21:58??NachOS-4.1\code\shell\config.h.in
?????文件????????767??2003-10-07?21:59??NachOS-4.1\code\shell\configure.ac
?????文件?????108874??2003-10-08?03:24??NachOS-4.1\code\shell\configure
?????文件???????4760??2003-10-09?21:51??NachOS-4.1\code\shell\nachos_syscall.h
?????文件??????10743??2002-12-16?18:57??NachOS-4.1\code\userprog\addrspace.cc
?????文件???????1697??2002-12-16?18:57??NachOS-4.1\code\userprog\addrspace.h
?????文件???????4341??2002-12-16?18:57??NachOS-4.1\code\userprog\errno.h
............此處省略180個文件信息
評論
共有 條評論