Skip to content

Commit

Permalink
add resident set
Browse files Browse the repository at this point in the history
  • Loading branch information
osayamenja committed Jun 5, 2023
1 parent f91e488 commit eedf1e1
Show file tree
Hide file tree
Showing 23 changed files with 139 additions and 76 deletions.
21 changes: 13 additions & 8 deletions README.MD
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,23 @@ You have to build the `printer` and computer `executables` separately as shown b
├── cpu/
│ ├── cpu.cpp
│ └── cpu.h
├── device_manager/
│ └── printer/
│ ├── printer.h
│ ├── communicator/
│ │ ├── communicator.cpp
│ │ └── communicator.h
│ ├── printer_manager/
│ │ ├── printer_manager.cpp
│ │ └── printer_manager.h
│ └── printer_utility/
│ ├── printer_utility.cpp
│ └── printer_utility.h
├── memory/
│ ├── load.h
│ ├── memory.cpp
│ └── memory.h
├── printer/
│ ├── communicator/
│ │ ├── communicator.cpp
│ │ │── communicator.h
│ ├── printer_manager/
│ │ ├── printer_manager.cpp
│ │ └── printer_manager.h
│ └── printer.h
├── printer_utility/
│ ├── printer_utility.cpp
│ └── printer_utility.h
Expand Down
1 change: 1 addition & 0 deletions computer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ bool terminateFlag;
std::string ip_addr;
int port;
int CID;
int WS;

void read_system_parameters(){
char fname[20] = "config.txt";
Expand Down
2 changes: 1 addition & 1 deletion computer/computer.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <cstdio>
#include <mutex>
#include "../cpu/cpu.h"
#include "../memory/load.h"
#include "../memory/loader/load.h"

extern bool terminateFlag;

Expand Down
2 changes: 1 addition & 1 deletion cpu/cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ void cpu_fetch_instruction(){
registers.IR1 = registers.MBR;
}

int cpu_mem_address(int m_addr){
int cpu_mem_address(int m_addr){ // get page number
return registers.Base + m_addr;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#include "communicator.h"
#include "../printer.h"
#include "../printer_manager/printer_manager.h"
#include "../../printer_utility/printer_utility.h"
#include "../../../utility/file_utility/file_utility.h"

#define ERROR_STATUS (-1)

Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions printer/printer.h → device_manager/printer/printer.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
#include <string>
#include <semaphore.h>
#include <vector>
#include "../computer/print.h"
#include "../utility/utility.h"
#include "../../computer/print.h"
#include "../../utility/utility.h"

extern sem_t sync_pc;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#include <mutex>
#include <thread>
#include "printer_manager.h"
#include "../../connector/server_connector.h"
#include "../../../connector/server_connector.h"
#include "../printer.h"
#include "../communicator/communicator.h"

Expand Down
File renamed without changes.
3 changes: 1 addition & 2 deletions load.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@
#include <string>
#include <tuple>

#include "memory/load.h"
#include "memory/loader/load.h"
#include "utility/utility.h"
#include "memory/memory.h"
#include "computer_utility/computer_utility.h"

int populate_memory(char str[], int index){
char *word = strtok(str, " ");
Expand Down
16 changes: 8 additions & 8 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,22 @@ computer.o: computer.cpp computer/computer.h computer/print.h memory/memory.h sc
printer: printer.o communicator.o printer_manager.o printer_utility.o utility.o server_connector.o
$(CC) $(CFLAGS) -o printer.exe printer.o communicator.o printer_manager.o printer_utility.o utility.o server_connector.o

printer.o: printer.cpp computer/print.h printer/printer.h printer/communicator/communicator.h printer/printer_manager/printer_manager.h printer_utility/printer_utility.h utility/utility.h
printer.o: printer.cpp computer/print.h device_manager/printer device_manager/printer device_manager/printer utility/file_utility utility/utility.h
$(CC) $(CFLAGS) -c printer.cpp

client_connector.o: connector/client_connector.cpp connector/client_connector.h
$(CC) $(CFLAGS) -c connector/client_connector.cpp

communicator.o: printer/communicator/communicator.cpp printer/printer.h printer/communicator/communicator.h printer/printer_manager/printer_manager.h printer_utility/printer_utility.h utility/utility.h
communicator.o: device_manager/printer device_manager/printer device_manager/printer device_manager/printer utility/file_utility utility/utility.h
$(CC) $(CFLAGS) -c printer/communicator/communicator.cpp

computer_utility.o: computer_utility/computer_utility.cpp computer_utility/computer_utility.h utility/utility.h
computer_utility.o: utility/computer_utility utility/computer_utility utility/utility.h
$(CC) $(CFLAGS) -c computer_utility/computer_utility.cpp

cpu.o: cpu/cpu.cpp computer/computer.h computer/print.h cpu/cpu.h memory/memory.h scheduler/scheduler.h shell/shell.h utility/utility.h
$(CC) $(CFLAGS) -c cpu/cpu.cpp

load.o: load.cpp computer_utility/computer_utility.h memory/load.h memory/memory.h utility/utility.h
load.o: load.cpp utility/computer_utility memory/loader/load.h memory/memory.h utility/utility.h
$(CC) $(CFLAGS) -c load.cpp

memory.o: memory/memory.cpp computer/computer.h memory/memory.h scheduler/scheduler.h utility/utility.h
Expand All @@ -39,16 +39,16 @@ memory.o: memory/memory.cpp computer/computer.h memory/memory.h scheduler/schedu
print.o: print.cpp computer/print.h computer/computer.h connector/client_connector.h utility/utility.h
$(CC) $(CFLAGS) -c print.cpp

printer_manager.o: printer/printer_manager/printer_manager.cpp connector/server_connector.h printer/communicator/communicator.h printer/printer.h printer/printer_manager/printer_manager.h utility/utility.h
printer_manager.o: device_manager/printer connector/server_connector.h device_manager/printer device_manager/printer device_manager/printer utility/utility.h
$(CC) $(CFLAGS) -c printer/printer_manager/printer_manager.cpp

printer_utility.o: printer_utility/printer_utility.cpp printer_utility/printer_utility.h printer/printer.h
printer_utility.o: utility/file_utility utility/file_utility device_manager/printer
$(CC) $(CFLAGS) -c printer_utility/printer_utility.cpp

queue.o: scheduler/queue.cpp computer/computer.h utility/utility.h
$(CC) $(CFLAGS) -c scheduler/queue.cpp

scheduler.o: scheduler.cpp computer/print.h computer_utility/computer_utility.h scheduler/queue.h scheduler/scheduler.h utility/utility.h
scheduler.o: scheduler.cpp computer/print.h utility/computer_utility scheduler/queue.h scheduler/scheduler.h utility/utility.h
$(CC) $(CFLAGS) -c scheduler.cpp

server_connector.o: connector/server_connector.cpp connector/server_connector.h
Expand All @@ -57,7 +57,7 @@ server_connector.o: connector/server_connector.cpp connector/server_connector.h
shell.o: shell.cpp computer/computer.h computer/print.h memory/memory.h scheduler/scheduler.h shell/shell.h utility/utility.h
$(CC) $(CFLAGS) -c shell.cpp

utility.o: utility/utility.cpp printer/printer.h utility/utility.h
utility.o: utility/utility.cpp device_manager/printer utility/utility.h
$(CC) $(CFLAGS) -c utility/utility.cpp

clean_computer:
Expand Down
File renamed without changes.
32 changes: 32 additions & 0 deletions memory/resident_set/resident_set.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
//
// Created by Osayamen on 6/4/2023.
//

#include <unordered_map>
#include <list>
#include "resident_set.h"

std::list<Page> pages;
std::unordered_map<int, std::list<Page>::iterator> references;

void resident_set_init(int ws){
WS = ws;
pages = std::list<Page>();
references = std::unordered_map<int, std::list<Page>::iterator>();
}

Page check(int page_no){
Page p = {
{page_no}
};
if(references.count(page_no)){
pages.erase(references.at(page_no));
}
else if(pages.size() == WS){
pages.pop_back();
}

pages.push_front(p);
references[page_no] = pages.begin();
return p;
}
21 changes: 21 additions & 0 deletions memory/resident_set/resident_set.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// Created by Osayamen on 6/4/2023.
//

#ifndef MONOOS_RESIDENT_SET_H
#define MONOOS_RESIDENT_SET_H


#include <vector>

extern int WS;
struct Page{
std::vector<int> data;
};

void resident_set_init(int WS);
Page check(int page_no);
void display();


#endif //MONOOS_RESIDENT_SET_H
8 changes: 4 additions & 4 deletions printer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
#include <iostream>

#include "utility/utility.h"
#include "printer/printer.h"
#include "printer/communicator/communicator.h"
#include "printer/printer_manager/printer_manager.h"
#include "printer_utility/printer_utility.h"
#include "device_manager/printer/printer.h"
#include "device_manager/printer/communicator/communicator.h"
#include "device_manager/printer/printer_manager/printer_manager.h"
#include "utility/file_utility/file_utility.h"

std::string paper_name = "printer.out";
std::unordered_map<int, std::unordered_set<int>> spool_files; // CID -> set of its processes.
Expand Down
2 changes: 1 addition & 1 deletion scheduler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
#include "utility/utility.h"
#include "scheduler/queue.h"
#include "scheduler/scheduler.h"
#include "computer_utility/computer_utility.h"
#include "utility/computer_utility/computer_utility.h"

std::unordered_map<int, PCB> PCBs;
int initial_PID;
Expand Down
2 changes: 1 addition & 1 deletion scheduler/scheduler.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#define AIMUYO_OS_PROJECT_SCHEDULER_H

#include "../computer/computer.h"
#include "../memory/load.h"
#include "../memory/loader/load.h"

extern int current_mem_instr_time;
extern MemoryMetadata current_process_metadata;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#include <string>
#include <cstring>
#include "computer_utility.h"
#include "../utility/utility.h"
#include "../utility.h"

void display_process_continuation_msg(int pid, int base){
std::string s = "Continuing Execution of {PID->"
Expand All @@ -15,13 +15,3 @@ void display_process_continuation_msg(int pid, int base){

atomically_print_to_stdout(s);
}

std::vector<int> separate_spaced_str(char str[]){
char *word = strtok(str, " ");
std::vector<int>a;
while(word != nullptr && strcmp(word, "\n") != 0){
a.push_back(std::stoi(word));
word = strtok(nullptr, " ");
}
return a;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@


void display_process_continuation_msg(int pid, int base);
std::vector<int> separate_spaced_str(char str[]);


#endif //AIMUYO_OS_PROJECT_2_COMPUTER_UTILITY_H
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,8 @@
#include <cstdio>
#include <sys/stat.h>
#include <unistd.h>
#include <iomanip>
#include <iostream>
#include <sstream>
#include "printer_utility.h"
#include "../printer/printer.h"
#include "file_utility.h"
#include "../../device_manager/printer/printer.h"

void append_file(std::FILE* from, std::FILE* append_to){
int c = fgetc(from);
Expand Down Expand Up @@ -39,26 +36,3 @@ bool exists(std::string& file){ // use the file status library to check the exis
struct stat file_info{};
return !stat(file.c_str(), &file_info);
}

std::string get_indented_str(const std::string& str, int indent){
std::stringstream dump_stream;
dump_stream << std::setw(indent) << str << std::endl;
return dump_stream.str();
}

PrinterOp getPrinterOp(int i){
switch(i){
case 0:
return INIT_SPOOL;
case 1:
return END_SPOOL;
case 2:
return PRINT;
case 3:
return DUMP_SPOOL;
case 4:
return TERMINATE;
default:
return NOOP;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,12 @@


#include <string>
#include "../utility/utility.h"
#include "../utility.h"

void append_file(std::FILE* from, std::FILE* to);
void append_file(std::FILE* from, std::FILE* append_to, const std::string& addendum);
bool exists(std::string& file);
std::string get_indented_str(const std::string& str, int indent);
PrinterOp getPrinterOp(int i);



#endif //AIMUYO_OS_PROJECT_2_PRINTER_UTILITY_H
38 changes: 37 additions & 1 deletion utility/utility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,10 @@
#include <string>
#include <tuple>
#include <sys/socket.h>
#include <cstdint>
#include <sstream>
#include <iomanip>
#include <cstring>
#include <vector>

#include "utility.h"

Expand Down Expand Up @@ -68,3 +71,36 @@ size_t readAll(int fd, int *output_buf)
return sizeof(output_int);
}

std::string get_indented_str(const std::string& str, int indent){
std::stringstream dump_stream;
dump_stream << std::setw(indent) << str << std::endl;
return dump_stream.str();
}

std::vector<int> separate_spaced_str(char str[]){
char *word = strtok(str, " ");
std::vector<int>a;
while(word != nullptr && strcmp(word, "\n") != 0){
a.push_back(std::stoi(word));
word = strtok(nullptr, " ");
}
return a;
}

PrinterOp getPrinterOp(int i){
switch(i){
case 0:
return INIT_SPOOL;
case 1:
return END_SPOOL;
case 2:
return PRINT;
case 3:
return DUMP_SPOOL;
case 4:
return TERMINATE;
default:
return NOOP;
}
}

Loading

0 comments on commit eedf1e1

Please sign in to comment.