Skip to content

Selective Overhead Mirroring system, created for Systems Programming course, Spring 2016-2017

License

Notifications You must be signed in to change notification settings

yorgosk/selective-overhead-mirroring

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project: Project3 - Selective Overhead Mirroring System

Project Developer: Georgios Kamaras - sdi1400058

Course: K24 Systems Programming, Spring 2017

Date: 31/05/2017

Development Platform:

  • GNU/Linux Ubuntu 16.04
  • gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

Included Files

  • makefile
  • MirrorInitiator_header.h (mirror initiator's main library-file, links all of the mirror initiator program's modules together)
  • MirrorInitiator_main.c (mirror initiator's main function)
  • MirrorInitiator_functions.h MirrorInitiator_functions.c (various functions, utilized throughout mirror initiator's program)
  • MirrorServer_header.h (mirror server's main library-file, links all of the mirror server program's modules together)
  • MirrorServer_main.c (mirror server's main function)
  • MirrorServer_socket_functions.h MirrorServer_socket_functions.c (various socket related functions, utilized throughout mirror server's program)
  • MirrorServer_thread_functions.h MirrorServer_thread_functions.c (various thread related functions, utilized throughout mirror server's program)
  • ContentServer_header.h (content server's main library-file, links all of the content server program's modules together)
  • ContentServer_main.c (content server's main function)
  • ContentServer_socket_functions.h ContentServer_socket_functions.c (various socket related functions, utilized throughout content server's program)
  • ContentServer_thread_functions.h ContentServer_thread_functions.c (various thread related functions, utilized throughout content server's program)
  • (and README)

Compilation

Use make command

Cleaning

Use make clean command

Usage

  • (1) first, run the content server(s) and the mirror server using the commands: ./ContentServer -p <port> -d <dirorfilename> and ./MirrorServer -p <port> -m <dirname> -w <threadnum>, e.g. ./ContentServer -p 15100 -d test-dir1 and ./MirrorServer -p 15000 -m mydir -w 5
  • (2) then, run the mirror initiator using the command: ./MirrorInitiator -n <MirrorServerAddress> -p <MirrorServerPort> -s <ContentServerAddress1:ContentServerPort1:dirorfile1:delay1, ContentServerAddress2:ContentServerPort2:dirorfile2:delay2, ...>, e.g. ./MirrorInitiator -n localhost -p 15000 -s localhost:15100:test-dir1/libraries/:1 localhost:15200:test-dir2:2

Technical Details

  • For my implementation I followed all of the exercise's specifications both in paper and on Piazza. My goal was to develop a Selective Overhead Mirroring System able to manage a large amount of mirroring requests under various usage conditions.
  • My Selective Overhead Mirroring System consists of three main programs: the Mirror Initiator's program, the Mirror Server's program and the Content Server's program. Ideally and rationally, in order for the system to operate successfully, it is required that at least one Content Server is active, exactly one Mirror Server and exactly one Mirror Initiator. It's also required that the Content Server and the Mirror Server are active (up and running) before the Mirror Initiator's activation and, of course it's neccessary that the user passes the right parameters to each program, so they can connect successfully with each other.
  • The main idea is that the user, through the Mirror Initiator, requests certain content from certain (Content) servers. The user's requests are transfered to the Mirror Server, which processes them and makes sure to spot the content in the Content Server(s) and fetch it. The Mirror Server stores the fetched content locally and sends any statistical details that he noted from the whole process to the Mirror Initiator. After all these are done, the Mirror Server and the Mirror Initiator have terminated and the Content Servers are still running and waiting to server the next request(s).
  • The project has been tested successfully (0 ERRORS) on the Valgrind memory-checking environment.

Appendix I - External Sources

Contact - feedback

Georgios Kamaras: sdi1400058@di.uoa.gr

About

Selective Overhead Mirroring system, created for Systems Programming course, Spring 2016-2017

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published