Skip to content

Implementazione di un sistema di Message Queues in disastrOS, un operating system simulator scritto in linguaggio C.

Notifications You must be signed in to change notification settings

noostale/disastros-msg-queues

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Message Queues in DisastrOS - Frasca Emanuele

What?

Il progetto si prefigge di aggiungere una message queue a DisastrOS, un operating system simulator scritto in linguaggio C.

How?

Il progetto è stato reso possibile grazie all'utilizzo di alcune funzioni preimpostate in DisastrOS ed alla creazione di una struttura la quale modella una Message Queue.

typedef struct {
  ListItem list;
  int id;
  int num_written;
  ListHead descriptors_ptrs;
  ListHead messages;
  ListHead waiting_to_read;
  ListHead waiting_to_write;
} MessageQueue;

È stata poi creata una struttura accessoria che modella un messaggio

typedef struct {
  ListItem list;
  char message[MAX_LEN_MESSAGE];
  int length;
} Message;

Per far gestire al SO queste strutture sono state installate quattro nuove system call le quali permettono di aprire, chiudere, scrivere, leggere e distruggere una Message Queue.

int disastrOS_openMessageQueue(int id, int mode)
int disastrOS_closeMessageQueue(int fd)
int disastrOS_MessageQueue_write(int id, char* write_buffer, int len)
int disastrOS_MessageQueue_read(int id, char* buf, int len)
int disastrOS_MessageQueue_destroy(int id)

Ed esse sono state opportunamente aggiunte al System Call Vector.

Infine è stato implementato un sistema di controllo che permette di capire se una Message Queue è piena e qualcuno vuole scrivergli o se una MQ è vuota e qualcuno vuole leggervi mettendo il suddetto processo in waiting list.

How to run?

Nel file constants.h è possibile settare il sistema come si preferisce
Comando di compilazione: make
Comando di esecuzione: ./disastrOS_test

About

Implementazione di un sistema di Message Queues in disastrOS, un operating system simulator scritto in linguaggio C.

Topics

Resources

Stars

Watchers

Forks