当前位置:天才代写 > C++/C代写 > OS代写 Fast File System Nachos代写 UNIX代写

OS代写 Fast File System Nachos代写 UNIX代写

2020-07-21 17:27 星期二 所属: C++/C代写 浏览:45

OS代写

Fast File System (Improve File System Performance)

OS代写 The basic Nachos FileSystemmust be implemented. Implement the dividing of a file into blocks and blocks and fragments.

OS代写
OS代写
  • No user programs are required for this project.
  • Implement the dividing of a file into blocks and blocks and fragments.
  • The basic Nachos FileSystemmust be implemented.
  • The DISK must be logically divided into cylinder groups.
  • File growth algorithm must match the description in the paper.
  • A kernel process that writes to a file that demonstrates the growth algorithm should be implemented.OS代写
  • Each cylinder group should keep track of its local information.
  • Attempt to store all i-nodes for directory in the same cylinder group.
  • You need to present sufficient test cases to show the correctness of your File System.

Basic Nachos FilesSystem

The files to focus on are:

  • h, filesys.cc — top-level interface to the file system.
  • h, directory.cc — translates file names to disk file headers; the directory data structure is stored as a file.
  • h, filehdr.cc — manages the data structure representing the layout of a file’s data on disk.
  • h, openfile.cc — translates file reads and writes to disk sector reads and writes.
  • h, synchdisk.cc — provides synchronous access to the asynchronous physical disk, so that threads block until their requests have completed.OS代写
  • h, disk.cc — emulates a physical disk, by sending requests to read and write disk blocks to a UNIX file and then generating an interrupt after some period of time. The details of how to make read and write requests varies tremendously from disk device to disk device; in practice, you would want to hide these details behind something like the abstraction provided by this module.

Introduction

Nachos file system has a UNIX-like interface, so you may also wish to read the UNIX man pages for creat, open, close, read, write, lseek, and unlink (e.g., type “man creat”). Nachos file system has calls that are similar (but not identical) to these calls; the file system translates these calls into physical disk operations. Create (like UNIX creat), Open (open), and Remove (unlink) are defined on the FileSystem object, since they involve manipulating file names and directories. FileSystem::Open returns a pointer to an OpenFile object, which is used for direct file operations such as Seek (lseek), Read (read), Write (write). An open file is “closed” by deleting the OpenFile object.OS代写

Many of the data structures in our file system are stored both in memory and on disk. To provide some uniformity, all these data structures have a “FetchFrom” procedure that reads the data off disk and into memory, and a “WriteBack” procedure that stores the data back to disk. Note that the in memory and on disk representations do not have to be identical.OS代写

File System On UNIX

 

Complete the basic file system by adding synchronizationto allow multiple threads to use file system concurrently.OS代写

Currently, the file system code assumes it is accessed by a single thread at a time. In addition to ensuring that internal data structures are not corrupted, your file system must observe the following constraints (these are the same as in UNIX):

√  The same file may be read/written by more than one thread concurrently.OS代写

Each thread separately opens the file, giving it its own private seek position within the file. Thus, two threads can both sequentially read through the same file without interfering with one another.

√  All file system operations must be atomic and serializable.OS代写

For example, if one thread is in the middle of a file write, a thread concurrently reading the file will see either all of the change or none of it. Further, if the OpenFile::Write operation finishes before the call to OpenFile::Read is started, the Read must reflect the modified version of the file.

√  When a file is deleted, threads with the file already open may continue to read and write the file until they close the file.OS代写

Deleting a file (FileSystem::Remove) must prevent further opens on that file, but the disk blocks for the file cannot be reclaimed until the file has been closed by all threads that currently have the file open.

√  Hint: to do this part, you will probably find you need to maintain a table of open files.OS代写
→ Modify the file system to allow the maximum size of a file to be as large as the disk  (128Kbytes).OS代写

In the basic file system, each file is limited to a file size of just under 4Kbytes. Each file has a header (class FileHeader) that is a table of direct pointers to the disk blocks for that file. Since the header is stored in one disk sector, the maximum size of a file is limited by the number of pointers that will fit in one disk sector. Increasing the limit to 128KBytes will probably but not necessarily require you to implement doubly indirect blocks.

Implement dynamically extensible files. In the basic file system, the file size is  specified when the file is created.OS代写

One advantage of this is that the FileHeader data structure, once created, never changes. In UNIX and most other file systems, a file is initially created with size 0 and is then expanded every time a write is made off the end of the file. Modify the file system to allow this; as one test case, allow the directory file to expand beyond its current limit of ten files. In doing this part, be careful that concurrent accesses to the file header remain properly synchronized.

OS代写
OS代写

 

更多其他:app代写 数学代写 物理代写 考试助攻 assignment代写 C++代写 CS代写

合作平台:天才代写 幽灵代写  写手招聘 Essay代写

 


天才代写-代写联系方式