資源簡介
NachOS 4.1版本 進程調度算法進行了修改 修改為基于優先級的時間片輪轉調度算法
代碼片段和文件信息
/*?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(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????1169856??2010-05-08?02:24??5070369042杜星_NachOS實驗報告一.docx
?????文件?????187752??2002-12-16?18:57??NachOS-4.1\c++example\c++.ps
?????文件??????66890??2002-12-16?18:57??NachOS-4.1\c++example\c++.tex
?????文件???????1224??2002-12-16?18:57??NachOS-4.1\c++example\copyright.h
?????文件???????6276??2002-12-16?18:57??NachOS-4.1\c++example\inheritstack.cc
?????文件???????3026??2002-12-16?18:57??NachOS-4.1\c++example\inheritstack.h
?????文件???????3604??2002-12-16?18:57??NachOS-4.1\c++example\list.cc
?????文件????????919??2002-12-16?18:57??NachOS-4.1\c++example\list.h
?????文件????????706??2002-12-16?18:57??NachOS-4.1\c++example\Makefile
?????文件???????3569??2002-12-16?18:57??NachOS-4.1\c++example\stack.cc
?????文件???????1399??2002-12-16?18:57??NachOS-4.1\c++example\stack.h
?????文件???????3921??2002-12-16?18:57??NachOS-4.1\c++example\templatestack.cc
?????文件???????1252??2002-12-16?18:57??NachOS-4.1\c++example\templatestack.h
?????文件??????12006??2003-10-11?00:40??NachOS-4.1\code\build.cygwin\Makefile
?????文件??????31309??2002-12-16?18:57??NachOS-4.1\code\build.cygwin\Makefile.dep
?????文件??????61128??2010-05-07?22:53??NachOS-4.1\code\build.linux\addrspace.o
?????文件??????56480??2010-05-07?22:52??NachOS-4.1\code\build.linux\alarm.o
?????文件??????45920??2010-05-07?22:52??NachOS-4.1\code\build.linux\bitmap.o
?????文件??????62512??2010-05-07?22:52??NachOS-4.1\code\build.linux\console.o
?????文件??????38552??2010-05-07?22:52??NachOS-4.1\code\build.linux\debug.o
?????文件??????48516??2010-05-07?22:53??NachOS-4.1\code\build.linux\directory.o
?????文件??????65512??2010-05-07?22:52??NachOS-4.1\code\build.linux\disk.o
?????文件?????131076??2010-05-07?22:53??NachOS-4.1\code\build.linux\DISK_0
?????文件??????51948??2010-05-07?22:53??NachOS-4.1\code\build.linux\exception.o
?????文件??????54500??2010-05-07?22:53??NachOS-4.1\code\build.linux\filehdr.o
?????文件????????848??2010-05-07?22:53??NachOS-4.1\code\build.linux\filesys.o
?????文件??????81604??2010-05-07?22:52??NachOS-4.1\code\build.linux\interrupt.o
?????文件??????62544??2010-05-07?22:52??NachOS-4.1\code\build.linux\kernel.o
?????文件?????103016??2010-05-07?22:52??NachOS-4.1\code\build.linux\libtest.o
?????文件??????57688??2010-05-07?22:52??NachOS-4.1\code\build.linux\machine.o
............此處省略166個文件信息
- 上一篇:Jli
nk驅動4.40版本 - 下一篇:80386及其編程.rar
評論
共有 條評論