一个简略的切开shellITeye - 牛牛娱乐

一个简略的切开shellITeye

2019年03月25日14时06分58秒 | 作者: 诗翠 | 标签: 一个,文件,体系 | 浏览: 2819

大学操作体系课程设计linux代码完善,(30%,125行)完成文件体系的体系调用(creat,open,read,write,close和unlink,在syscall.h文件中列出)。你能够在UserProcess.java中看到处理halt体系调用的代码;最好把你的新的体系调用也放在这儿。留意:你不是完成一个文件体系,而是运用户进程能够拜访咱们现已完成好的文件体系。 咱们现已供给了从用户程序调用体系调用的必要的汇编代码(看一下start.s;SYSCALLSTUB宏会生成每一个体系调用的汇编代码)。 你需求使Nachos内核“防弹”,不受用户程序过错的损坏,即用户程序无论如何都不能损坏操作体系(除了清晰调用halt())。换句话说,你有必要确保用户程序不能给内核传递会导致内核损坏自己或其他进程内部状况的假参数。一起,你有必要采纳办法确保,当一个用户进程做任何不合法的动作时,如妄图拜访未映射的内存或跳转到过错的地址等,该进程能够被完全杀死,它的资源能够被开释。 你有必要清楚halt()体系调用只能被“根”进程调用,即体系的第一个进程。假如别的一个进程妄图调用halt(),你应该疏忽该调用而且当即回来。 因为传递给体系调用的内存地址参数是虚拟地址,你需求运用UserProcess.readVirtualMemory和UserProcess.writeVirtualMemory在用户进程和内核之间传递内存。 用户进程在虚拟地址空间中运用null-terminated 字符串的方式存储文件名和其他字符串参数。传递给体系调用的字符串参数的最大长度为256字节。 当一个体系调用想给用户反应过错信息时,它应该回来-1(而不是在内核内抛出一个反常!)。不然,体系调用应该回来在test/syscall.h文件中列出的适宜的值。 当任何进程开始时,它的文件描述符0和1有必要是指向规范输入和规范输出。运用UserKernel.console.openForReading()和UserKernel.console.openForWriting()会很简单做到这点。用户进程能够封闭这些描述符,就像经过open()回来文件描述符相同。 咱们还供给了UNIX文件体系的stub文件体系接口;该接口是在machine/FileSystem.java中给出的。你能够经过静态成员ThreadedKernel.fileSystem拜访该stub filesystem。(留意:因为UserKernel承继于ThreadedKernel,你依然能够拜访这个成员)。该文件体系能够拜访Nachos下的test文件夹,当你想支撑exec体系调用时,这会十分有用。你不需求完成任何文件体系功用。你应该仔细检查FileSystem和StubFileSystem的说明书,这样你就能够确认你的体系调用应该供给什么功用,什么功用是由文件体系处理的。 不要完成任何类型的文件锁;这是文件体系的责任。 假如ThreadedKernel.fileSystem.open()回来non-null OpenFile,用户进程就能够拜访指定的文件;不然,你应该报错。同样地,假如多个进程妄图一起拜访同一个文件,你不必关怀详细发生了什么,该stubFileSystem会帮你处理这些细节。 你的完成代码应该支撑一个进程至少能够并发的翻开16个文件。进程翻开的每一个文件应该具有仅有的文件描述符。(详细细节见syscall.h)。文件描述符应该是一个非负整数,该整数是进程当时翻开的文(30%,125行)完成文件体系的体系调用(creat,open,read,write,close和unlink,在syscall.h文件中列出)。你能够在UserProcess.java中看到处理halt体系调用的代码;最好把你的新的体系调用也放在这儿。留意:你不是完成一个文件体系,而是运用户进程能够拜访咱们现已完成好的文件体系。 咱们现已供给了从用户程序调用体系调用的必要的汇编代码(看一下start.s;SYSCALLSTUB宏会生成每一个体系调用的汇编代码)。 你需求使Nachos内核“防弹”,不受用户程序过错的损坏,即用户程序无论如何都不能损坏操作体系(除了清晰调用halt())。换句话说,你有必要确保用户程序不能给内核传递会导致内核损坏自己或其他进程内部状况的假参数。一起,你有必要采纳办法确保,当一个用户进程做任何不合法的动作时,如妄图拜访未映射的内存或跳转到过错的地址等,该进程能够被完全杀死,它的资源能够被开释。 你有必要清楚halt()体系调用只能被“根”进程调用,即体系的第一个进程。假如别的一个进程妄图调用halt(),你应该疏忽该调用而且当即回来。 因为传递给体系调用的内存地址参数是虚拟地址,你需求运用UserProcess.readVirtualMemory和UserProcess.writeVirtualMemory在用户进程和内核之间传递内存。 用户进程在虚拟地址空间中运用null-terminated 字符串的方式存储文件名和其他字符串参数。传递给体系调用的字符串参数的最大长度为256字节。 当一个体系调用想给用户反应过错信息时,它应该回来-1(而不是在内核内抛出一个反常!)。不然,体系调用应该回来在test/syscall.h文件中列出的适宜的值。 当任何进程开始时,它的文件描述符0和1有必要是指向规范输入和规范输出。运用UserKernel.console.openForReading()和UserKernel.console.openForWriting()会很简单做到这点。用户进程能够封闭这些描述符,就像经过open()回来文件描述符相同。 咱们还供给了UNIX文件体系的stub文件体系接口;该接口是在machine/FileSystem.java中给出的。你能够经过静态成员ThreadedKernel.fileSystem拜访该stub filesystem。(留意:因为UserKernel承继于ThreadedKernel,你依然能够拜访这个成员)。该文件体系能够拜访Nachos下的test文件夹,当你想支撑exec体系调用时,这会十分有用。你不需求完成任何文件体系功用。你应该仔细检查FileSystem和StubFileSystem的说明书,这样你就能够确认你的体系调用应该供给什么功用,什么功用是由文件体系处理的。 不要完成任何类型的文件锁;这是文件体系的责任。 假如ThreadedKernel.fileSystem.open()回来non-null OpenFile,用户进程就能够拜访指定的文件;不然,你应该报错。同样地,假如多个进程妄图一起拜访同一个文件,你不必关怀详细发生了什么,该stubFileSystem会帮你处理这些细节。 你的完成代码应该支撑一个进程至少能够并发的翻开16个文件。进程翻开的每一个文件应该具有仅有的文件描述符。(详细细节见syscall.h)。文件描述符应该是一个非负整数,该整数是进程当时翻开的文件表中的索引。留意,当一个文件被封闭时,该文件的文件描述符(即整数)能够被重复运用。不同进程能够运用相同的文件描述符来指示不同的文件。 件表中的索引。留意,当一个文件被封闭时,该文件的文件描述符(即整数)能够被重复运用。不同进程能够运用相同的文件描述符来指示不同的文件。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1
  • 2

    一个简略的切开shellITeye

    一个,文件,体系
  • 3

    Mac/Linux 装备环境变量ITeye

    这个,文件,增加
  • 4

    rabbit及redis 装置ITeye

    装置,文件,进入
  • 5
  • 6
  • 7

    netstat指令详解ITeye

    显现,数据,衔接
  • 8

    centos6.5 装备JavaWeb环境ITeye

    装置,这儿,是从
  • 9
  • 10

    dos指令大全ITeye

    指令,文件,主机