Đã hoàn thành

126882 Networked File System

You are expected to write a simple networked file system. The networked file system has a file server

and a file client. The file client and file server can run on different machines. The actual storage

performed at the file server. The file client connects to the file server and provides access to the storage

that is managed by the file server. The file client should be able to connect to multiple (more than one)

file servers simultaneously.

The file server is a combination of a TCP server and a file system. The file system is very much like the system developed in PA#2 (code for this section will be provided). You may modify certain function call patterns to facilitate the TCP server interfacing. The TCP server can be single-threaded version. The single-threaded TCP server has several limitations but it is acceptable for this assignment.

In the above configuration, the file server is started first. The file server uses the mksfs() from the

previous assignment to create a file system. It should be noted that mksfs() supports two modes. First, where the file system is created from scratch and second where an existing file system is opened. These two modes should be supported by the file [url removed, login to view] file client should support the following functions in the form of a C application programming interface.

void mount(char *filesys, char *host, int port)

// mounts the remote filesystem at filesys

void nfs_ls(char *filesys) // lists the files in the filesys

int nfs_fopen(char *filesys, char *name)

// opens the given file in the given filesystem

void nfs_fclose(int fileID) // closes the given file

void nfs_fwrite(int fileID,

char *buf, int length) // write buf characters into disk

void nfs_fread(int fileID,

char *buf, int length) // read characters from disk into buf

int nfs_remove(char *filesys, char *file)

The mount(char *filesys, char *host, int port) function connects to the remote file

server running on host at the given port number. It will mount the remote file system under the root

directory filesys. Let me explain what is meant by mount a bit. The file client does not have any

storage. When you execute the mount function, it connects to the remote file server (creates a TCP

connection). This connection is associated with a root directory. If any open or subsequent read/write

execute under this root directory, the commands are sent to the corresponding remote file server. The file

client does not do much except maintain the root directory to remote file server mapping. It sends all the

command requests to the remote file server and receives the replies and prints them as they are received.

By mapping one remote server to a root directory, a file client can connect to multiple remote file servers.

The nfs_ls(char *filesys) function lists the directory in the remote file server. The filesys

parameter is used to determine the remote file server that should be contacted. This function should work

independent of whether you have opened any remote file or not. However, this function should not work

if the remote server is not mounted.

The nfs_open(char *filesys, char *name) function opens the given filename at the remote

file server that is mounted on the given root directory. The file client just contacts the remote file server

and asks it to open the file. Because subsequent read, write, and close do not specify the root directory,

the file client needs to maintain a simple file descriptor table. The nfs_open function creates a file

descriptor entry in the local table when it successfully opens the remote file. This descriptor entry in the

local table is used by the subsequent reads and writes as noted below.

The void nfs_fwrite(int fileID, char *buf, int length) function looks up the local

file descriptor table to determine the remote server to contact. Once the remote file server is known, the

request is sent to that server. The local file descriptor table does not need to deal with file pointers. These

parameters should be handled by the file server using the file system you developed for PA#2.

The void nfs_fclose(int fileID) function closes the file. First it should ask the remote file

server to close the file. After it get the acknowledgement from the remote file server that the file has been

closed, it should remove the local file descriptor entry. The mount is unaffected by this operation it just

closes the open files.

The void nfs_remove(char *filesys, char *name) function removes the file in the remote

file server. It should check whether the given file is already opened by the program. If the file is already

open the remove request should fail.

2. Implementation strategy

First write a TCP client and server and debug it. Follow the class notes to see how a TCP client and

server can be developed. Once the TCP client and server are working, integrate the file system

components at the server and client.

You need to modify the file system tester to work with the networked file system. Demonstrate that

your file system can mount at least two remote file systems at the same time.

Kĩ năng: Bất kì công việc gì, Lập trình C

Xem nhiều hơn: what is scratch programming, what is application programming interface, what is an interface in programming, what is an application programming interface, what is a class in programming, scratch programming, programming with scratch, programming what is a class, programming scratch, programming pointers, programming patterns, programming one for all remote, pointers in c programming, pointers c programming, one for all remote programming, local programming, how to get started programming, how to get started on programming, how to get started in c programming, how to do a follow up call, how does programming work, get started with c# programming, get started with c programming, follow up after application, c programming pointers

Về Bên Thuê:
( 1 Nhận xét )

ID dự án: #1873050

Được trao cho:


I have a vast experience writting network applications, keeping in mind my existing commitments, I will be able to write this for you in 4 or 5 days, for safe side expect it in 10 days.

$120 USD trong 10 ngày
(0 Đánh Giá)