m4n1c22 / os2_lab Goto Github PK
View Code? Open in Web Editor NEWOperating Systems Dependability & Trust - Lab
Operating Systems Dependability & Trust - Lab
Check the last page of the document for more details.
Kindly verify if the requirements are met as per the document.
Implement a process-pair linking concept with an alternative approach.
is_parent_alive()
which returns a value 0 or 1. If parent has crashed it returns the value 0 else 1.rand()
method can be used in this regard. (Note: This step is handle the POC[Proof of Concept]. Therefore, it can later be modified with the implementation used in the task 2).getppid() can be used in this regard.
For more info read the document
Given the issues 1 and 2 are meant to detect the parent process failures. There is no step taken to revive the child process to acquire the role of the parent. Implement such a functionality by child process acquiring the role of parent when parent process crashes. For testing purposes make the parent process not to wait for its child. Refer task3.1 in the document
Investigating and implementing task2.2.
I am not sure whether this is a problem. I have latest version, I created requests directory under task2 folder. I ran following commands without any additional option:
Terminal 1: make comp_client_task2_3
make client_exec_task2_3
Terminal 2: make comp_server_task2_3
make server_exec_task2_3
During execution I terminate client.Seems everything ok but at the end server gives floating point exception.
Another case without even running client, server runs and at the end again same exception happens.
Running and testing task1
Task 1 with out error
make prog
for compiling the source file task1.cmake exec
for running the task1.cmake test
which will run the shell script task1_1.sh and write the logs to a log file named overall.logTask 1 with possible errors
make prog_1_3
for compiling the source file task1_3.cmake exec_1_3
for running the task1_3.cmake test_task1_3
which will run the shell script task1_3.sh and write the logs to a log file named overall_1_3.logInvestigate the shell script for implementing it.
Execute and test task 2.1 and task 2.2
Testing Task 2.1:
make clean
first.make comp_server_task_2_1
for compiling the task 2.1make server_exec_task_2_1
for running the task 2.1. You can also run the executable server_task_2_1.bin
from terminal after compilation as: ./server_task_2_1.bin -n 10
. -n
is the option for specifying the maximum number of forks created. You can also avoid specifying this option which will create by default 5 child processes. Note: value of n ranges from 1-50Testing Task 2.2:
make clean
first.make comp_server_task_2_2
for compiling the server code for task 2.2 in the first terminal window.make comp_client_task_2_2
for compiling the client code for task 2.2 in the second terminal window.make server_exec_task_2_2
for running the task 2.2 server program. You can also run the executable server_task_2_2.bin
from terminal after compilation as: ./server_task_2_2.bin -n 10
. -n
is the option for specifying the maximum number of forks created. You can also avoid specifying this option which will create by default 5 child processes. Note: value of n ranges from 1-50. And the fact that execution of the server code should be done from the first terminal window.make client_exec_task_2_2
.Kindly test all the edge case and random case testing involved with the above execution style. If possible write a shell script which can automate them.
Implement a process-pair linking concept as discussed in the lecture using pipes.
is_parent_alive()
which returns a value 0 or 1. If parent has crashed it returns the value 0 else 1.rand()
method can be used in this regard. (Note: This step is handle the POC[Proof of Concept]. Therefore, it can later be modified with the implementation used in the task 2).You can use this link as an inspiration for your pipe implementation.
For more info read the document
Integrating the feature of having error probability of 0.5 or 50% in the program defined for parent-child relationship.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.