Merge remote-tracking branch 'EOPSY/main' into main
0
EOPSY/lab1/A
Normal file
0
EOPSY/lab1/LOWERCASEFOLDERMAIN/LOWERFILESUB
Normal file
0
EOPSY/lab1/README.md
Normal file
0
EOPSY/lab1/RECURSEFILE
Normal file
0
EOPSY/lab1/UPPERFOLDERMAIN/UPPERFILESUB
Normal file
0
EOPSY/lab1/b
Normal file
220
EOPSY/lab1/modify.sh
Executable file
@ -0,0 +1,220 @@
|
||||
#!/bin/bash
|
||||
# command options and arguments interpreter example
|
||||
# simple version
|
||||
|
||||
# the name of the script without a path
|
||||
|
||||
name=`basename $0`
|
||||
|
||||
help()
|
||||
{
|
||||
echo "-l <dir/file names...> -> lowerize file/folder name"
|
||||
echo "-u <dir/file names...> -> uppercase file/folder name"
|
||||
echo "-r [-l|u] -> lowerize or uppercase file/folder name recursively"
|
||||
echo "<sed pattern> <dir/file names...> -> call sed command operating on file/folder name"
|
||||
echo "-r <sed pattern> <dir/file names...> -> call sed command operating on file/folder recursively"
|
||||
echo "-h -> display this message"
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
uppercase()
|
||||
{
|
||||
if test "$1" = $name
|
||||
then
|
||||
error_msg "you cannot modify name of this script!"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
|
||||
if test -z "$1"
|
||||
then
|
||||
error_msg "missing filename for -u"
|
||||
exit 1
|
||||
fi
|
||||
if test -f "$1"
|
||||
then
|
||||
if test -d "$1"
|
||||
then
|
||||
error_msg "$1 is neither a file nor folder"
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
|
||||
mv "$1" $(echo "$1" | sed -r -e 's/.*/\U&/');
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
lowercase()
|
||||
{
|
||||
if test "$1" = $name
|
||||
then
|
||||
error_msg "you cannot modify name of this script!"
|
||||
exit 3
|
||||
fi
|
||||
if test -z "$1"
|
||||
then
|
||||
error_msg "missing filename for -l"
|
||||
exit 1
|
||||
fi
|
||||
if test -f "$1"
|
||||
then
|
||||
if test -d "$1"
|
||||
then
|
||||
error_msg "$1 is neither a file nor the folder"
|
||||
exit 2
|
||||
fi
|
||||
fi
|
||||
mv "$1" $(echo "$1" | sed -r -e 's/.*/\L&/');
|
||||
}
|
||||
|
||||
sneed()
|
||||
{
|
||||
if test "$2" = $name
|
||||
then
|
||||
error_msg "you cannot modify name of this script!"
|
||||
exit 3
|
||||
fi
|
||||
if test -z "$1"
|
||||
then
|
||||
error_msg "missing sed pattern"
|
||||
exit 1
|
||||
fi
|
||||
if test -z "$2"
|
||||
then
|
||||
error_msg "missing sed filename"
|
||||
exit 2
|
||||
fi
|
||||
if test -f "$2"
|
||||
then
|
||||
if test -d "$2"
|
||||
then
|
||||
error_msg "$2 is neither a file nor folder"
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
|
||||
mv "$2" $(echo "$2" | sed $1)
|
||||
}
|
||||
|
||||
recursionSneed()
|
||||
{
|
||||
if test -z "$1"
|
||||
then
|
||||
error_msg "missing sed pattern"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test -z "$2"
|
||||
then
|
||||
error_msg "missing sed filename"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
if test -f "$2"
|
||||
then
|
||||
if test -d "$2"
|
||||
then
|
||||
error_msg "$2 is neither a file or folder"
|
||||
exit 3
|
||||
fi
|
||||
fi
|
||||
filename="$2"
|
||||
sneed "$1" "$filename"
|
||||
filename="$(echo "$filename" | sed $1)"
|
||||
echo $filename
|
||||
for item in "$filename"/*
|
||||
do
|
||||
if test -d "$item"
|
||||
then
|
||||
recursionSneed "$1" "$item"
|
||||
fi
|
||||
if test -f "$item"
|
||||
then
|
||||
sneed "$1" "$item"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
recursionLowercase()
|
||||
{
|
||||
lowercase "$1"
|
||||
set "$(echo "$1" | sed -r -e 's/.*/\L&/')"
|
||||
for item in "$1"/*
|
||||
do
|
||||
if test -d "$item"
|
||||
then
|
||||
recursionLowercase "$item"
|
||||
fi
|
||||
if test -f "$item"
|
||||
then
|
||||
lowercase "$item"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
recursionUppercase()
|
||||
{
|
||||
uppercase "$1"
|
||||
set "$(echo "$1" | sed -r -e 's/.*/\U&/')"
|
||||
for item in "$1"/*
|
||||
do
|
||||
if test -d "$item"
|
||||
then
|
||||
recursionUppercase "$item"
|
||||
fi
|
||||
if test -f "$item"
|
||||
then
|
||||
uppercase "$item"
|
||||
fi
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
recursion()
|
||||
{
|
||||
if test -z "$1"
|
||||
then
|
||||
error_msg "missing argument for -r"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
-l|--lowercase) recursionLowercase "$2";;
|
||||
-u|--uppercase) recursionUppercase "$2";;
|
||||
*) recursionSneed "$1" "$2";;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
|
||||
# function for printing error messages to diagnostic output
|
||||
error_msg()
|
||||
{
|
||||
echo "$name: error: $1" 1>&2
|
||||
}
|
||||
|
||||
|
||||
|
||||
# if no arguments given
|
||||
if test -z "$1"
|
||||
then
|
||||
help
|
||||
fi
|
||||
|
||||
|
||||
# do with command line arguments
|
||||
case "$1" in
|
||||
-h|--help) help;;
|
||||
-l|--lowercase) lowercase "$2";;
|
||||
-r|--recursion) recursion "$2" "$3" ;;
|
||||
-u|--upercase) uppercase "$2";;
|
||||
*) sneed "$1" "$2" ;;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
|
||||
88
EOPSY/lab1/modify_examples.sh
Executable file
@ -0,0 +1,88 @@
|
||||
#!/bin/bash
|
||||
|
||||
touch a
|
||||
touch B
|
||||
touch SED
|
||||
mkdir foldera
|
||||
mkdir FOLDERB
|
||||
mkdir FOLDERSED
|
||||
mkdir upperfoldermain
|
||||
cd upperfoldermain
|
||||
touch upperfilesub
|
||||
mkdir upperfoldersub
|
||||
cd upperfoldersub
|
||||
touch upperfilesubsub
|
||||
cd ..
|
||||
cd ..
|
||||
|
||||
|
||||
mkdir LOWERCASEFOLDERMAIN
|
||||
cd LOWERCASEFOLDERMAIN
|
||||
touch LOWERFILESUB
|
||||
mkdir LOWERFOLDERSUB
|
||||
cd LOWERFOLDERSUB
|
||||
touch LOWERFILESUBSUB
|
||||
cd ..
|
||||
cd ..
|
||||
|
||||
mkdir SEDLOWERCASEFOLDERMAIN
|
||||
cd SEDLOWERCASEFOLDERMAIN
|
||||
touch SEDLOWERFILESUB
|
||||
mkdir SEDLOWERFOLDERSUB
|
||||
cd SEDLOWERFOLDERSUB
|
||||
touch SEDLOWERFILESUBSUB
|
||||
cd ..
|
||||
cd ..
|
||||
|
||||
touch recursefile
|
||||
touch RECURSELOWERFILE
|
||||
touch SEDRECURSEFILE
|
||||
|
||||
|
||||
|
||||
echo "Typical scenarios"
|
||||
echo "Uppercasing file with filename a"
|
||||
bash ./modify.sh -u a
|
||||
echo "Lowercasing file with filename B"
|
||||
bash ./modify.sh -l B
|
||||
echo "Using sed pattern for lowercasing of file with filename SED"
|
||||
bash ./modify.sh "-r -e s/.*/\L&/" SED
|
||||
echo "Uppercasing folder with name foldera non recursively"
|
||||
bash ./modify.sh -u foldera
|
||||
echo "Lowercasing folder with name FOLDERB non recursively"
|
||||
bash ./modify.sh -l FOLDERB
|
||||
echo "Using sed pattern for lowercasing of folder with name FOLDERSED non recursively"
|
||||
bash ./modify.sh "-l -e s/.*/\L&/" FOLDERSED
|
||||
echo "Uppercasing folder recursively"
|
||||
echo "Main folder name: upperfoldermain"
|
||||
echo "folder contains: folder named upperfoldersub , file named upperfilesub"
|
||||
echo "subfolder upperfoldersub contains file named upperfilesubsub"
|
||||
bash ./modify.sh -r -u upperfoldermain
|
||||
echo "Lowercasing folder recursively"
|
||||
echo "Main folder name: LOWERFOLDERMAIN"
|
||||
echo "folder contains: folder named LOWERFOLDERSUB , file named LOWERFILESUB"
|
||||
echo "subfolder LOWERFOLDERSUB contains file named LOWERFILESUBSUB"
|
||||
bash ./modify.sh -r -l SEDLOWERCASEFOLDERMAIN
|
||||
echo "using sed pattern for Lowercasing folder recursively"
|
||||
echo "Main folder name: SEDLOWERFOLDERMAIN"
|
||||
echo "folder contains: folder named SEDLOWERFOLDERSUB , file named SEDLOWERFILESUB"
|
||||
echo "subfolder SEDLOWERFOLDERSUB contains file named SEDLOWERFILESUBSUB"
|
||||
bash ./modify.sh -r "-r -e s/.*/\L&/" SEDLOWERFOLDERMAIN
|
||||
echo "Uncommon scenarios"
|
||||
echo "uppercasing recursively normal file recursefile"
|
||||
bash ./modify.sh -r -u recursefile
|
||||
echo "lowercasing recursively normal file RECURSELOWERFILE"
|
||||
bash ./modify.sh -r -l RECURSELOWERFILE
|
||||
echo "using sed pattern recursively for normal file to lowercase it SEDRECURSEFILE"
|
||||
bash ./modify.sh -r "-r -e s/.*/\L&/" SEDRECURSEFILE
|
||||
echo "Incorrect scenarios"
|
||||
echo "not providing enough arguments"
|
||||
bash ./modify.sh
|
||||
echo "not providing file"
|
||||
bash ./modify.sh -l
|
||||
echo "not providing argument for recursion"
|
||||
bash ./modify.sh -r filename
|
||||
echo "provding filename/foldername for file/folder which does not exist"
|
||||
bash ./modify.sh -l thisfiledoesnotexist
|
||||
|
||||
|
||||
0
EOPSY/lab1/recurselowerfile
Normal file
0
EOPSY/lab1/sed
Normal file
0
EOPSY/lab1/sedlowercasefoldermain/sedlowerfilesub
Normal file
0
EOPSY/lab1/sedrecursefile
Normal file
92
EOPSY/lab2/README.md
Normal file
@ -0,0 +1,92 @@
|
||||
# eopsy_KRZYSZTOF_RUDNICKI_lab2
|
||||
|
||||
|
||||
|
||||
## Getting started
|
||||
|
||||
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
||||
|
||||
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
||||
|
||||
## Add your files
|
||||
|
||||
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
||||
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
|
||||
|
||||
```
|
||||
cd existing_repo
|
||||
git remote add origin https://gitlab-stud.elka.pw.edu.pl/krudnic3/eopsy_krzysztof_rudnicki_lab2.git
|
||||
git branch -M main
|
||||
git push -uf origin main
|
||||
```
|
||||
|
||||
## Integrate with your tools
|
||||
|
||||
- [ ] [Set up project integrations](https://gitlab-stud.elka.pw.edu.pl/krudnic3/eopsy_krzysztof_rudnicki_lab2/-/settings/integrations)
|
||||
|
||||
## Collaborate with your team
|
||||
|
||||
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
|
||||
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
|
||||
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
|
||||
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
|
||||
- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
|
||||
|
||||
## Test and Deploy
|
||||
|
||||
Use the built-in continuous integration in GitLab.
|
||||
|
||||
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
|
||||
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
|
||||
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
|
||||
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
|
||||
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
|
||||
|
||||
***
|
||||
|
||||
# Editing this README
|
||||
|
||||
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
||||
|
||||
## Suggestions for a good README
|
||||
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
||||
|
||||
## Name
|
||||
Choose a self-explaining name for your project.
|
||||
|
||||
## Description
|
||||
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
||||
|
||||
## Badges
|
||||
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
||||
|
||||
## Visuals
|
||||
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
||||
|
||||
## Installation
|
||||
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
||||
|
||||
## Usage
|
||||
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
||||
|
||||
## Support
|
||||
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
||||
|
||||
## Roadmap
|
||||
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
||||
|
||||
## Contributing
|
||||
State if you are open to contributions and what your requirements are for accepting them.
|
||||
|
||||
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
||||
|
||||
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
||||
|
||||
## Authors and acknowledgment
|
||||
Show your appreciation to those who have contributed to the project.
|
||||
|
||||
## License
|
||||
For open source projects, say how it is licensed.
|
||||
|
||||
## Project status
|
||||
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
||||
BIN
EOPSY/lab2/a.out
Executable file
BIN
EOPSY/lab2/tsig
Executable file
210
EOPSY/lab2/tsig.c
Normal file
@ -0,0 +1,210 @@
|
||||
#include <stdio.h> // printf()
|
||||
#include <unistd.h> // fork()
|
||||
#include <time.h> // clock()
|
||||
#include <stdlib.h> // malloc()
|
||||
#include <signal.h> // sigaction(), SIGTERM
|
||||
#include <sys/wait.h> // wait()
|
||||
#define WITH_SIGNALS
|
||||
const int NUM_CHILD = 5;
|
||||
int KEYBOARD_INTERRUPT_MARK = 0;
|
||||
|
||||
|
||||
void ourOwnSigTermHandler()
|
||||
{
|
||||
printf("Process: %d was terminated\n", getpid());
|
||||
}
|
||||
|
||||
void childProcessAlgorithm()
|
||||
{
|
||||
#ifdef WITH_SIGNALS
|
||||
// 3.a in the child process
|
||||
struct sigaction ignoreSignal;
|
||||
ignoreSignal.sa_handler = SIG_IGN;
|
||||
sigaction(SIGTERM, &ignoreSignal, NULL); // ignore handling of the
|
||||
// keyboard interrupt signal
|
||||
struct sigaction sigTermHandler;
|
||||
sigTermHandler.sa_handler = ourOwnSigTermHandler;
|
||||
// set own handler of the sigterm signal, which will only
|
||||
// print a message of the termination of this process
|
||||
sigaction(SIGTERM, &sigTermHandler, NULL);
|
||||
#endif
|
||||
printf("Process identifier of parent process: %d \n", getppid());
|
||||
// print process identifier of the parent process
|
||||
sleep(10); // sleep for 10 seconds
|
||||
printf("Execution for child: %d complete! \n", getpid());
|
||||
// print a message about execution completion
|
||||
exit(0); // !exit from process!
|
||||
}
|
||||
|
||||
|
||||
void sendSIGTERMsignal(pid_t *children)
|
||||
{
|
||||
for(int i = 0; i < NUM_CHILD; i++) // go through each child
|
||||
{
|
||||
kill(children[i], SIGTERM); // and send sigterm signal using kill
|
||||
}
|
||||
}
|
||||
|
||||
void createChildProcesses(pid_t *children)
|
||||
{
|
||||
kill(-2, SIGTERM);
|
||||
for(int i = 0; i < NUM_CHILD; i++) // Create NUM_CHILD child processes
|
||||
{
|
||||
children[i] = fork(); // use the fork() function
|
||||
#ifdef WITH_SIGNALS
|
||||
// 3.c check the mark which may be set by the keyboard interrupt
|
||||
// handler
|
||||
if(KEYBOARD_INTERRUPT_MARK)
|
||||
{
|
||||
printf("interrupt of the creation process");
|
||||
// print a message about interrupt of the creation
|
||||
// process
|
||||
printf(" during creation of children[");
|
||||
printf("%d] = %d\n", i, children[i]);
|
||||
sendSIGTERMsignal(children);
|
||||
// signal all just created processes with the sigterm
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
if(children[i] == 0) childProcessAlgorithm(); // child algorithm
|
||||
else
|
||||
{
|
||||
printf("fork for child[%d] failed! \n", i);
|
||||
kill(-2, SIGTERM); // -2 means that sigterm will be
|
||||
// sent to every process in the process group
|
||||
// whose id is -2
|
||||
}
|
||||
sleep(1); // insert one second delays between fork calls
|
||||
}
|
||||
}
|
||||
|
||||
int childProcessCorrect(const pid_t child)
|
||||
{
|
||||
return child >= 0; // -1 would mean that we could not create the child
|
||||
}
|
||||
|
||||
int correctChildProcesses(const pid_t *children)
|
||||
{
|
||||
for(int i = 0; i < NUM_CHILD; i++) // go through each child
|
||||
{
|
||||
if(!childProcessCorrect(children[i])) // check if it was created correctly
|
||||
{
|
||||
printf("children[%d] = %d", i, children[i]);
|
||||
// print approrpriate message that child was not created
|
||||
// correctly
|
||||
printf(", Was NOT declared correctly!\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void printCreationOfAllChildProcesses(const pid_t *children)
|
||||
{
|
||||
// print a message about creation of all child processes
|
||||
for(int i = 0; i < NUM_CHILD; i++)
|
||||
{
|
||||
printf("Process children[%d] = %d created \n", i, children[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void terminateChildren(pid_t *children)
|
||||
{
|
||||
int childTerminations = 0;
|
||||
for(int i = 0; i < NUM_CHILD; i++)
|
||||
{
|
||||
pid_t waitValue = wait(NULL); // call wait in loop
|
||||
if(waitValue != -1)
|
||||
{
|
||||
childTerminations++;
|
||||
// 2.4 count child processes terminations
|
||||
printf("Number of child processes terminations:");
|
||||
printf(" %d \n", childTerminations);
|
||||
}else
|
||||
{
|
||||
printf("Termination of the child %d", getpid());
|
||||
printf(" went wrong!\n");
|
||||
}
|
||||
}
|
||||
// 2.4 print a message that there are no more child processes
|
||||
printf("There are no more child processes \n");
|
||||
printf("Number of received child processes exit codes:");
|
||||
printf(" %d \n", childTerminations);
|
||||
// 2.4 priinta message with the number of just received child processes
|
||||
// exit codes
|
||||
}
|
||||
|
||||
int noSignalsVersion()
|
||||
{
|
||||
pid_t *children = malloc(sizeof(pid_t) * NUM_CHILD);
|
||||
// allocate space for all children
|
||||
|
||||
createChildProcesses(children); // create NUM_CHILD child processes
|
||||
if(!correctChildProcesses(children))
|
||||
{
|
||||
sendSIGTERMsignal(children); // if not send sigterm signals
|
||||
return 1;
|
||||
}
|
||||
printCreationOfAllChildProcesses(children);
|
||||
terminateChildren(children);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void ourOwnKeyboardInterrupt()
|
||||
{
|
||||
printf("Received keyboard interrupt \n");
|
||||
KEYBOARD_INTERRUPT_MARK = 1;
|
||||
}
|
||||
|
||||
int signalsVersion()
|
||||
{
|
||||
struct sigaction ignoreSignals;
|
||||
ignoreSignals.sa_handler = SIG_IGN;
|
||||
for(int i = 0; i < _NSIG; i++) // 3.a Go through every single possible signal
|
||||
{
|
||||
sigaction(i, &ignoreSignals, NULL); // 3.a and ignore it
|
||||
}
|
||||
|
||||
ignoreSignals.sa_handler = SIG_DFL; // Restore to default handler
|
||||
sigaction(SIGCHLD, &ignoreSignals, NULL); // 3.a the sigchld signal
|
||||
struct sigaction ownKeyboardInterrupt; // 3.b used to set our own
|
||||
// keyboard interrupt
|
||||
ownKeyboardInterrupt.sa_handler = ourOwnKeyboardInterrupt;
|
||||
// 3.c this function just prints info about receiving keyboard
|
||||
// interrupt and sets keyboard interrupt occurance global variable
|
||||
sigaction(SIGINT, &ownKeyboardInterrupt, NULL);
|
||||
// 3.c set it so that interruption by default uses ownKeyboardInterrupt
|
||||
pid_t *children = malloc(sizeof(pid_t) * NUM_CHILD);
|
||||
// allocate memory for children
|
||||
createChildProcesses(children);
|
||||
if(!correctChildProcesses(children))
|
||||
{
|
||||
sendSIGTERMsignal(children);
|
||||
return 1;
|
||||
}
|
||||
printCreationOfAllChildProcesses(children);
|
||||
terminateChildren(children);
|
||||
struct sigaction restoreSignals;
|
||||
ignoreSignals.sa_handler = SIG_DFL;
|
||||
for(int i = 0; i < _NSIG; i++)
|
||||
{
|
||||
// old service handlers of all signals should be restored
|
||||
sigaction(i, &restoreSignals, NULL);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
#ifndef WITH_SIGNALS
|
||||
printf("Entering NO signals version! \n");
|
||||
return noSignalsVersion();
|
||||
#endif
|
||||
#ifdef WITH_SIGNALS
|
||||
printf("Entering signals version! \n");
|
||||
signalsVersion();
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
BIN
EOPSY/lab3/EOPSY_LAB_3_KRZYSZTOF_RUDNICKI.pdf
Normal file
BIN
EOPSY/lab3/report/FCFS.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
199
EOPSY/lab3/report/README.tjk
Normal file
@ -0,0 +1,199 @@
|
||||
|
||||
|
||||
WORKPLACE ORGANIZATION:
|
||||
mkdir ../work
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d sched.tgz
|
||||
tar -xvf sched.tar
|
||||
rm sched.tar
|
||||
|
||||
|
||||
READING:
|
||||
less/vi README.tjk
|
||||
netscape/lynx install_unix.html
|
||||
netscape/lynx user_guide.html
|
||||
|
||||
|
||||
COMPILE:
|
||||
javac -nowarn *.java
|
||||
|
||||
|
||||
RUN:
|
||||
java Scheduling scheduling.conf
|
||||
|
||||
|
||||
FILES:
|
||||
input file name: scheduling.conf
|
||||
output file name: Summary-Processes
|
||||
log file name: Summary-Processes
|
||||
|
||||
|
||||
--[ YOUR TASK ]-------------------------------------------------------
|
||||
|
||||
Create a configuration file in which all processes run an average
|
||||
of 2000 milliseconds with a standard deviation of zero, and which
|
||||
are blocked for input or output every 500 milliseconds. Run the
|
||||
simulation for 10000 milliseconds with 2 processes. Examine the
|
||||
two output files. Try again for 5 processes. Try again for 10
|
||||
processes. Explain what's happening.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Configuration File
|
||||
|
||||
The configuration file (scheduling.conf) is used to specify various
|
||||
parameters for the simulation, including:
|
||||
* the number of processes,
|
||||
* the mean runtime for a process,
|
||||
* the standard deviation in runtime for a process,
|
||||
* for each process, how long the process runs before it blocks for
|
||||
input or output, and
|
||||
* how long the simulation should run.
|
||||
|
||||
Configuration File Options
|
||||
|
||||
There are a number of options which can be specified in the
|
||||
configuration file. These are summarized in the table below.
|
||||
|
||||
Keyword Values Description
|
||||
numprocess n The number of processes to create for the simulation.
|
||||
meandev n The average length of time in milliseconds that a process
|
||||
should execute before terminating.
|
||||
standdev n The number of standard deviations from the average length
|
||||
of time a process should execute before terminating.
|
||||
process n The amount of time in milliseconds that the process should
|
||||
execute before blocking for input or output. There should be a
|
||||
separate process directive for each process specified by the
|
||||
numprocess directive.
|
||||
runtime n The maximum amount of time the simulation should run in
|
||||
milliseconds.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Sample Configuration File
|
||||
|
||||
The "scheduling.conf" configuration file looks like this:
|
||||
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 1100
|
||||
|
||||
// standard deviation
|
||||
standdev 510
|
||||
|
||||
// process # I/O blocking
|
||||
process 100
|
||||
process 500
|
||||
process 30
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 5000
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Summary-Results File
|
||||
|
||||
The Summary-Results file contains a summary report describing the
|
||||
simulation and includes one line of summary information for each
|
||||
process. The fields and columns in the report are described in the
|
||||
following table.
|
||||
|
||||
Field Description
|
||||
Scheduling Type: The type of the scheduling algorithm used. The value
|
||||
displayed is "hard coded" in the SchedulingAlgorithm.java file.
|
||||
Scheduling Name: The name of the scheduling algorithm used. The value
|
||||
displayed is "hard coded" in the SchedulingAlgorithm.java file.
|
||||
Simulation Run Time: The number of milliseconds that the simulation
|
||||
ran. This may be less than or equal to the total amount of time
|
||||
specified by the "runtime" configuration parameter.
|
||||
Mean: The average amount of runtime for the processes as specified by
|
||||
the "meandev" configuration parameter.
|
||||
Standard Deviation: The standard deviation from the average amount of
|
||||
runtime for the processes as specified by the "standdev" configuration
|
||||
parameter.
|
||||
Process # The process number assigned to the process by the simulator.
|
||||
The process number is between 0 and n-1, where n is the number
|
||||
specified by the "numprocess" configuration parameter.
|
||||
CPU Time The randomly generated total runtime for the process in
|
||||
milliseconds. This is determined by the "meandev" and "standdev"
|
||||
parameters in the configuration file.
|
||||
IO Blocking The amount of time the process runs before it blocks for
|
||||
input or output. This is specified for each process by a "process"
|
||||
directive in the configuration file.
|
||||
CPU Completed The amount of runtime in milliseconds completed for the
|
||||
process. Note that this may be less than the CPU Time for the process
|
||||
if the simulator runs out of time as specified by the "runtime"
|
||||
configuration parameter.
|
||||
CPU Blocked The number of times the process blocked for input or
|
||||
output during the simulation.
|
||||
|
||||
Sample Summary-Results File
|
||||
|
||||
The output "Summary-Results" file looks something like this:
|
||||
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 2750
|
||||
Mean: 1100
|
||||
Standard Deviation: 510
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 1372 (ms) 100 (ms) 1372 (ms) 13 times
|
||||
1 689 (ms) 500 (ms) 689 (ms) 1 times
|
||||
2 689 (ms) 30 (ms) 689 (ms) 22 times
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Summary-Processes File
|
||||
|
||||
The Summary-Processes file contains a log of the actions taken by the
|
||||
scheduling algorithm as it considers each process in the scheduling
|
||||
queue.
|
||||
|
||||
Each line in the log file is of the following form:
|
||||
|
||||
Process: process-number process-status... (cpu-time block-time accumulated-time
|
||||
accumulated-time)
|
||||
|
||||
The fields in the line are described in the table below.
|
||||
|
||||
Field Description
|
||||
process-number The process number assigned to the process by the
|
||||
simulator. This is a number between 0 and n-1, where n is the value
|
||||
specified for the "numprocess" configuration parameter.
|
||||
process-status The status of the process at this point in time. If
|
||||
"registered" then the process is under consideration by the scheduling
|
||||
algorithm. If "I/O blocked", then the scheduling algorithm has noticed
|
||||
that the process is blocked for input or output. If "completed", then
|
||||
the scheduling algorithm has noticed that the process has met or
|
||||
exceeded its allocated execution time.
|
||||
cpu-time The total amount of run time allowed for this process. This
|
||||
number is randomly generated for the process based on the "meandev"
|
||||
and "standdev" values specified in the configuration file.
|
||||
block-time The amount of time in milliseconds to execute before
|
||||
blocking process. This number is specified for the process by the
|
||||
"process" directive in the configuration file.
|
||||
accumulated-time The total amount of time process has executed in
|
||||
milliseconds. (This number appears twice in the log file; one should
|
||||
be removed).
|
||||
|
||||
Sample Summary-Processes File
|
||||
|
||||
The output "Summary-Processes" file looks something like this:
|
||||
|
||||
Process: 0 registered... (1372 100 0 0)
|
||||
Process: 0 I/O blocked... (1372 100 100 100)
|
||||
Process: 1 registered... (689 500 0 0)
|
||||
Process: 1 I/O blocked... (689 500 500 500)
|
||||
Process: 0 registered... (1372 100 100 100)
|
||||
Process: 0 I/O blocked... (1372 100 200 200)
|
||||
Process: 1 registered... (689 500 500 500)
|
||||
Process: 1 completed... (689 500 689 689)
|
||||
Process: 0 registered... (1372 100 200 200)
|
||||
Process: 0 I/O blocked... (1372 100 300 300)
|
||||
Process: 2 registered... (689 30 0 0)
|
||||
Process: 2 I/O blocked... (689 30 30 30)
|
||||
|
||||
39
EOPSY/lab3/report/processesfive
Normal file
@ -0,0 +1,39 @@
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
Process: 2 registered... (2000 500 0 0)
|
||||
Process: 2 I/O blocked... (2000 500 500 500)
|
||||
Process: 3 registered... (2000 500 0 0)
|
||||
Process: 3 I/O blocked... (2000 500 500 500)
|
||||
Process: 2 registered... (2000 500 500 500)
|
||||
Process: 2 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 3 registered... (2000 500 500 500)
|
||||
Process: 3 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 2 registered... (2000 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 3 registered... (2000 500 1000 1000)
|
||||
Process: 3 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 2 registered... (2000 500 1500 1500)
|
||||
Process: 2 completed... (2000 500 2000 2000)
|
||||
Process: 3 registered... (2000 500 1500 1500)
|
||||
Process: 3 completed... (2000 500 2000 2000)
|
||||
Process: 4 registered... (2000 500 0 0)
|
||||
Process: 4 I/O blocked... (2000 500 500 500)
|
||||
Process: 4 registered... (2000 500 500 500)
|
||||
Process: 4 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 4 registered... (2000 500 1000 1000)
|
||||
Process: 4 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 4 registered... (2000 500 1500 1500)
|
||||
39
EOPSY/lab3/report/processesten
Normal file
@ -0,0 +1,39 @@
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
Process: 2 registered... (2000 500 0 0)
|
||||
Process: 2 I/O blocked... (2000 500 500 500)
|
||||
Process: 3 registered... (2000 500 0 0)
|
||||
Process: 3 I/O blocked... (2000 500 500 500)
|
||||
Process: 2 registered... (2000 500 500 500)
|
||||
Process: 2 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 3 registered... (2000 500 500 500)
|
||||
Process: 3 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 2 registered... (2000 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 3 registered... (2000 500 1000 1000)
|
||||
Process: 3 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 2 registered... (2000 500 1500 1500)
|
||||
Process: 2 completed... (2000 500 2000 2000)
|
||||
Process: 3 registered... (2000 500 1500 1500)
|
||||
Process: 3 completed... (2000 500 2000 2000)
|
||||
Process: 4 registered... (2000 500 0 0)
|
||||
Process: 4 I/O blocked... (2000 500 500 500)
|
||||
Process: 5 registered... (2000 500 0 0)
|
||||
Process: 5 I/O blocked... (2000 500 500 500)
|
||||
Process: 4 registered... (2000 500 500 500)
|
||||
Process: 4 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 5 registered... (2000 500 500 500)
|
||||
16
EOPSY/lab3/report/processestwo
Normal file
@ -0,0 +1,16 @@
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
BIN
EOPSY/lab3/report/procestates.png
Normal file
|
After Width: | Height: | Size: 108 KiB |
52
EOPSY/lab3/report/report.aux
Normal file
@ -0,0 +1,52 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\citation{lab3 Manual}
|
||||
\citation{lab3 Manual}
|
||||
\citation{First come first serve}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{First come first serve}{1}{section*.1}\protected@file@percent }
|
||||
\citation{Other scheduling algorithms}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces First come first serve example graphic from \href {https://www.geeksforgeeks.org/program-for-fcfs-cpu-scheduling-set-1/}{[Geeks for Geeks]}}}{2}{figure.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Other algorithms}{2}{section*.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Explanation of types of values in summary results and summary process}{2}{section.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Summary Results}{2}{subsection.2.1}\protected@file@percent }
|
||||
\citation{lab3 Manual}
|
||||
\citation{lab3 Manual}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Summary Processes}{3}{subsection.2.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Scheduling conf settings}{3}{section.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {4}Two processes}{4}{section.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Summary Results file}{4}{subsection.4.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Summary Processes file}{4}{subsection.4.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Comments}{4}{subsection.4.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {5}Five processes}{5}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Summary Results file}{6}{subsection.5.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Summary Processes file}{6}{subsection.5.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Comments}{7}{subsection.5.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {6}Ten processes}{7}{section.6}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Summary Results file}{7}{subsection.6.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Summary Processes file}{8}{subsection.6.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {6.3}Comments}{9}{subsection.6.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {7}Getting process to be blocked 4 times}{9}{section.7}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Summary Results file}{9}{subsection.7.1}\protected@file@percent }
|
||||
\citation{First come first serve}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {8}Finishing comments}{10}{section.8}\protected@file@percent }
|
||||
\bibcite{lab3 Manual}{1}
|
||||
\bibcite{First come first serve}{2}
|
||||
\bibcite{Other scheduling algorithms}{3}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces \href {https://commons.wikimedia.org/wiki/File:Process_states.svg}{[Process states and how they switch from wikimedia]}}}{11}{figure.2}\protected@file@percent }
|
||||
81
EOPSY/lab3/report/report.fdb_latexmk
Normal file
@ -0,0 +1,81 @@
|
||||
# Fdb version 3
|
||||
["pdflatex"] 1651354217 "report.tex" "report.pdf" "report" 1651354217
|
||||
"/etc/texmf/web2c/texmf.cnf" 1649511474 475 c0e671620eb5563b2130f56340a5fde8 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tcrm1000.tfm" 1136768653 1536 e07581a4bb3136ece9eeb4c3ffab8233 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1248133631 32080 340ef9bf63678554ee606688e7b5339d ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1248133631 32722 d7379af29a190c3f453aba36302ff5a9 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb" 1248133631 32362 179c33bbf43f19adbb3825bb4e36e57a ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1573336935 6902 30fdaf7dc5636b8e3afa306210c45cae ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1576624883 18552 1e1cc7b75da0dfaacce7cdcb27d306bf ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1580683321 20023 e427dd9e17e239bf926ef3aab67fe35e ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1580683321 8446 9874cccac5fee462272c582807dbbf56 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1580683321 16932 04729abe63b66ec59ea56edcd722b058 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1580683321 9067 1b996612394a52e1efe89c8bfe8a5892 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1579642962 50630 3d9728faf8630190cf601ce2cbe470d9 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1579642962 238752 60dd338d71b6a4ab2192131f73dc908b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1579642962 13244 0070bcab7b5a88187847128d22faf4d8 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1579642962 14134 32b36577d311ddb6522413c7581ee968 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1575152344 22520 c4c2dab203104295e1e618be7e5c0f5b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def" 1580854751 25404 9d60f463a00d154207ec0048dee27cf0 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg" 1568236792 1830 bbaba8afaf42cc048ec4d4ff73467521 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty" 1568236792 80511 830f3f1d3ab7448dd84233e9c2f6462c ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty" 1568236792 77022 32914f01b528131c47be2a1040d3856d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty" 1574631863 19963 36fd8e818f9f0f32e2db8413d4970122 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575674187 9715 b051d5b493d9fe5f4bc251462d039e5f ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
|
||||
"/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e ""
|
||||
"/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1565080000 2900 1537cc8184ad1792082cd229ecc269f4 ""
|
||||
"/usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb" 1565080000 138258 6525c253f16cededa14c7fd0da7f67b2 ""
|
||||
"/usr/share/texmf/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e ""
|
||||
"/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1649511498 4770781 1ed1abab22da9c3e2cc82e4db562318b ""
|
||||
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1649511522 8256308 efb305160d4d659dcd0c4df67bdfa340 ""
|
||||
"FCFS.png" 1651350092 42317 5ebe07a101aaf2d148e57b506da358f0 ""
|
||||
"procestates.png" 1651352865 110475 1f55e2f2da8c9783d96601760f995869 ""
|
||||
"report.aux" 1651354217 4117 9b802ad34f90fabb850c26a4e32d8f46 "pdflatex"
|
||||
"report.out" 1651354217 1281 b983e77f93d96fee254255605b0880b6 "pdflatex"
|
||||
"report.tex" 1651354210 15461 4394df717bf9562e573a0b86e0de939f ""
|
||||
(generated)
|
||||
"report.pdf"
|
||||
"report.aux"
|
||||
"report.log"
|
||||
"report.out"
|
||||
136
EOPSY/lab3/report/report.fls
Normal file
@ -0,0 +1,136 @@
|
||||
PWD /home/kuchy/Zlew/Studia/NieNotatki/Projekty/nie_inzynierka/Programowanie/EOPSY/eopsy_rudnicki_lab/lab3/report
|
||||
INPUT /etc/texmf/web2c/texmf.cnf
|
||||
INPUT /usr/share/texmf/web2c/texmf.cnf
|
||||
INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf
|
||||
INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt
|
||||
INPUT report.tex
|
||||
OUTPUT report.log
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
|
||||
INPUT report.aux
|
||||
INPUT report.aux
|
||||
OUTPUT report.aux
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
OUTPUT report.pdf
|
||||
INPUT ./report.out
|
||||
INPUT ./report.out
|
||||
OUTPUT report.out
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm
|
||||
INPUT FCFS.png
|
||||
INPUT ./FCFS.png
|
||||
INPUT ./FCFS.png
|
||||
INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tcrm1000.tfm
|
||||
INPUT procestates.png
|
||||
INPUT ./procestates.png
|
||||
INPUT ./procestates.png
|
||||
INPUT report.aux
|
||||
INPUT ./report.out
|
||||
INPUT ./report.out
|
||||
INPUT /usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb
|
||||
INPUT /usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb
|
||||
291
EOPSY/lab3/report/report.log
Normal file
@ -0,0 +1,291 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2022.4.9) 30 APR 2022 23:30
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**report.tex
|
||||
(./report.tex
|
||||
LaTeX2e <2020-02-02> patch level 2
|
||||
L3 programming layer <2020-02-14> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||
File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count167
|
||||
\c@section=\count168
|
||||
\c@subsection=\count169
|
||||
\c@subsubsection=\count170
|
||||
\c@paragraph=\count171
|
||||
\c@subparagraph=\count172
|
||||
\c@figure=\count173
|
||||
\c@table=\count174
|
||||
\abovecaptionskip=\skip47
|
||||
\belowcaptionskip=\skip48
|
||||
\bibindent=\dimen134
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks14
|
||||
)
|
||||
\lst@mode=\count175
|
||||
\lst@gtempboxa=\box45
|
||||
\lst@token=\toks15
|
||||
\lst@length=\count176
|
||||
\lst@currlwidth=\dimen135
|
||||
\lst@column=\count177
|
||||
\lst@pos=\count178
|
||||
\lst@lostspace=\dimen136
|
||||
\lst@width=\dimen137
|
||||
\lst@newlines=\count179
|
||||
\lst@lineno=\count180
|
||||
\lst@maxwidth=\dimen138
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2019/09/10 1.8c (Carsten Heinz)
|
||||
\c@lstnumber=\count181
|
||||
\lst@skipnumbers=\count182
|
||||
\lst@framebox=\box46
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
File: listings.cfg 2019/09/10 1.8c listings configuration
|
||||
))
|
||||
Package: listings 2019/09/10 1.8c (Carsten Heinz)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
Package: iftex 2019/11/07 v1.0c TeX engine tests
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
|
||||
Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
|
||||
)
|
||||
Package pdftexcmds Info: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode found.
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
|
||||
Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||
Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO)
|
||||
)
|
||||
\@linkdim=\dimen139
|
||||
\Hy@linkcounter=\count183
|
||||
\Hy@pagecounter=\count184
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||
Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
|
||||
)
|
||||
\Hy@SavedSpaceFactor=\count185
|
||||
\pdfmajorversion=\count186
|
||||
Package hyperref Info: Hyper figures OFF on input line 4547.
|
||||
Package hyperref Info: Link nesting OFF on input line 4552.
|
||||
Package hyperref Info: Hyper index ON on input line 4555.
|
||||
Package hyperref Info: Plain pages OFF on input line 4562.
|
||||
Package hyperref Info: Backreferencing OFF on input line 4567.
|
||||
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
|
||||
Package hyperref Info: Bookmarks ON on input line 4800.
|
||||
\c@Hy@tempcnt=\count187
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
\Urlmuskip=\muskip16
|
||||
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||
)
|
||||
LaTeX Info: Redefining \url on input line 5159.
|
||||
\XeTeXLinkMargin=\dimen140
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO)
|
||||
))
|
||||
\Fld@menulength=\count188
|
||||
\Field@Width=\dimen141
|
||||
\Fld@charsize=\dimen142
|
||||
Package hyperref Info: Hyper figures OFF on input line 6430.
|
||||
Package hyperref Info: Link nesting OFF on input line 6435.
|
||||
Package hyperref Info: Hyper index ON on input line 6438.
|
||||
Package hyperref Info: backreferencing OFF on input line 6445.
|
||||
Package hyperref Info: Link coloring OFF on input line 6450.
|
||||
Package hyperref Info: Link coloring with OCG OFF on input line 6455.
|
||||
Package hyperref Info: PDF/A mode OFF on input line 6460.
|
||||
LaTeX Info: Redefining \ref on input line 6500.
|
||||
LaTeX Info: Redefining \pageref on input line 6504.
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO)
|
||||
)
|
||||
\Hy@abspage=\count189
|
||||
\c@Item=\count190
|
||||
\c@Hfootnote=\count191
|
||||
)
|
||||
Package hyperref Info: Driver (autodetected): hpdftex.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO)
|
||||
Package atveryend Info: \enddocument detected (standard20110627).
|
||||
)
|
||||
\Fld@listcount=\count192
|
||||
\c@bookmark@seq@number=\count193
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
|
||||
)
|
||||
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 286.
|
||||
)
|
||||
\Hy@SectionHShift=\skip49
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 105.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen143
|
||||
\Gin@req@width=\dimen144
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||
Package: float 2001/11/08 v1.3d Float enhancements (AL)
|
||||
\c@float@type=\count194
|
||||
\float@exts=\toks16
|
||||
\float@box=\box47
|
||||
\@float@everytoks=\toks17
|
||||
\@floatcapt=\box48
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
|
||||
File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode
|
||||
\l__kernel_color_stack_int=\count195
|
||||
\l__pdf_internal_box=\box49
|
||||
) (./report.aux)
|
||||
\openout1 = `report.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 6.
|
||||
LaTeX Font Info: ... okay on input line 6.
|
||||
\c@lstlisting=\count196
|
||||
\AtBeginShipoutBox=\box50
|
||||
Package hyperref Info: Link coloring OFF on input line 6.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
|
||||
)
|
||||
\c@section@level=\count197
|
||||
)
|
||||
LaTeX Info: Redefining \ref on input line 6.
|
||||
LaTeX Info: Redefining \pageref on input line 6.
|
||||
LaTeX Info: Redefining \nameref on input line 6.
|
||||
(./report.out) (./report.out)
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `report.out'.
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count198
|
||||
\scratchdimen=\dimen145
|
||||
\scratchbox=\box51
|
||||
\nofMPsegments=\count199
|
||||
\nofMParguments=\count266
|
||||
\everyMPshowfont=\toks18
|
||||
\MPscratchCnt=\count267
|
||||
\MPscratchDim=\dimen146
|
||||
\MPnumerator=\count268
|
||||
\makeMPintoPDFobject=\count269
|
||||
\everyMPtoPDFconversion=\toks19
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
|
||||
))
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <12> on input line 11.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <8> on input line 11.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <6> on input line 11.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <7> on input line 22.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <5> on input line 22.
|
||||
<FCFS.png, id=88, 505.89pt x 334.24875pt>
|
||||
File: FCFS.png Graphic file (type png)
|
||||
<use FCFS.png>
|
||||
Package pdftex.def Info: FCFS.png used on input line 31.
|
||||
(pdftex.def) Requested size: 345.0pt x 227.94916pt.
|
||||
[1
|
||||
|
||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2pdfTeX warning (ext4): destination with the same identifier (name{figure.1}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.54 \item P
|
||||
rocess \# - Process number <./FCFS.png>] [3] [4] [5] [6] [7] [8] [9]
|
||||
<procestates.png, id=288, 1204.5pt x 1204.5pt>
|
||||
File: procestates.png Graphic file (type png)
|
||||
<use procestates.png>
|
||||
Package pdftex.def Info: procestates.png used on input line 388.
|
||||
(pdftex.def) Requested size: 345.0pt x 344.99533pt.
|
||||
[10]
|
||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 399.
|
||||
[11pdfTeX warning (ext4): destination with the same identifier (name{figure.2}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.399 \end{document}
|
||||
<./procestates.png>]
|
||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 399.
|
||||
(./report.aux)
|
||||
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 399.
|
||||
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 399.
|
||||
Package rerunfilecheck Info: File `report.out' has not changed.
|
||||
(rerunfilecheck) Checksum: B983E77F93D96FEE254255605B0880B6;1281.
|
||||
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 399.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
7044 strings out of 481239
|
||||
104717 string characters out of 5920378
|
||||
391480 words of memory out of 5000000
|
||||
22045 multiletter control sequences out of 15000+600000
|
||||
536928 words of font info for 39 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
34i,6n,36p,285b,1721s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc}</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb>
|
||||
Output written on report.pdf (11 pages, 231091 bytes).
|
||||
PDF statistics:
|
||||
367 PDF objects out of 1000 (max. 8388607)
|
||||
341 compressed objects within 4 object streams
|
||||
181 named destinations out of 1000 (max. 500000)
|
||||
171 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
20
EOPSY/lab3/report/report.out
Normal file
@ -0,0 +1,20 @@
|
||||
\BOOKMARK [1][-]{section.1}{Introduction}{}% 1
|
||||
\BOOKMARK [1][-]{section.2}{Explanation of types of values in summary results and summary process}{}% 2
|
||||
\BOOKMARK [2][-]{subsection.2.1}{Summary Results}{section.2}% 3
|
||||
\BOOKMARK [2][-]{subsection.2.2}{Summary Processes}{section.2}% 4
|
||||
\BOOKMARK [1][-]{section.3}{Scheduling conf settings}{}% 5
|
||||
\BOOKMARK [1][-]{section.4}{Two processes}{}% 6
|
||||
\BOOKMARK [2][-]{subsection.4.1}{Summary Results file}{section.4}% 7
|
||||
\BOOKMARK [2][-]{subsection.4.2}{Summary Processes file}{section.4}% 8
|
||||
\BOOKMARK [2][-]{subsection.4.3}{Comments}{section.4}% 9
|
||||
\BOOKMARK [1][-]{section.5}{Five processes}{}% 10
|
||||
\BOOKMARK [2][-]{subsection.5.1}{Summary Results file}{section.5}% 11
|
||||
\BOOKMARK [2][-]{subsection.5.2}{Summary Processes file}{section.5}% 12
|
||||
\BOOKMARK [2][-]{subsection.5.3}{Comments}{section.5}% 13
|
||||
\BOOKMARK [1][-]{section.6}{Ten processes}{}% 14
|
||||
\BOOKMARK [2][-]{subsection.6.1}{Summary Results file}{section.6}% 15
|
||||
\BOOKMARK [2][-]{subsection.6.2}{Summary Processes file}{section.6}% 16
|
||||
\BOOKMARK [2][-]{subsection.6.3}{Comments}{section.6}% 17
|
||||
\BOOKMARK [1][-]{section.7}{Getting process to be blocked 4 times}{}% 18
|
||||
\BOOKMARK [2][-]{subsection.7.1}{Summary Results file}{section.7}% 19
|
||||
\BOOKMARK [1][-]{section.8}{Finishing comments}{}% 20
|
||||
BIN
EOPSY/lab3/report/report.pdf
Normal file
BIN
EOPSY/lab3/report/report.synctex.gz
Normal file
399
EOPSY/lab3/report/report.tex
Normal file
@ -0,0 +1,399 @@
|
||||
\documentclass{article}
|
||||
\usepackage{listings}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{float}
|
||||
\begin{document}
|
||||
\title{EOPSY Lab 3 Report}
|
||||
\author{Krzysztof Rudnicki, 307585}
|
||||
\date{\today}
|
||||
\maketitle
|
||||
\section{Introduction}
|
||||
ALL TEXT SURROUNDED BY [] LIKE \cite{lab3 Manual} SHOULD BE CLICKABLE AND LEAD
|
||||
EITHER TO WEBPAGE OR PLACE IN THIS DOCUMENT \\
|
||||
The goal of the laboratory was to create three scenarios using config file and
|
||||
then investigate how those scenarios played out. \\
|
||||
Scenario 1: 2 Processes \\
|
||||
Scenario 2: 5 Processes \\
|
||||
Scenario 3: 10 Processes \\
|
||||
We had to get to know how the schedulers work, how they switch. \cite{lab3
|
||||
Manual}
|
||||
\paragraph{First come first serve}
|
||||
We used First come first serve algorithm $\rightarrow$ This algorithm simply executes the process which
|
||||
arrived first. The process that requests CPU as a first process gets the CPU
|
||||
first. It is easy to implement and understand. We just use Queue data structure
|
||||
and we pick processes from the head of the queue and new procesess are added at
|
||||
the tail of the queue. \cite{First come first serve}
|
||||
\begin{figure}[H]
|
||||
\caption{First come first serve example graphic from
|
||||
\href{https://www.geeksforgeeks.org/program-for-fcfs-cpu-scheduling-set-1/}{[Geeks for
|
||||
Geeks]}}
|
||||
\includegraphics[width=\textwidth]{FCFS}
|
||||
\end{figure}
|
||||
\paragraph{Other algorithms} \cite{Other scheduling algorithms}
|
||||
\begin{enumerate}
|
||||
\item Shortest-Job-Next - Executes first processes that will take least
|
||||
time to finish
|
||||
\item Priority Scheduling - Each process gets assigned a prority and we
|
||||
execute them from the process with highest priority to the
|
||||
process with lowest prority
|
||||
\item Round Robin Scheduling - We give each process a constant time to
|
||||
execute, after this time expires regardless whether process
|
||||
finished or not we go to another process untill all of them are
|
||||
finished
|
||||
\end{enumerate}
|
||||
\section{Explanation of types of values in summary results and summary
|
||||
process}
|
||||
\subsection{Summary Results}
|
||||
\begin{itemize}
|
||||
\item Scheduling Type - Type of scheduling algorithm used
|
||||
\item Scheduling Name - Name of the scheduling algorithm
|
||||
\item Simulation Run Time - How long simulation run
|
||||
\item Mean - Average runtime for the processes
|
||||
\item Standard Deviation - Deviation from mean
|
||||
\item Process \# - Process number
|
||||
\item CPU Time - Total runtime for the process
|
||||
\item IO Blocking - How long process runs before it is blocked for
|
||||
input or output
|
||||
\item CPU Completed - How long runtime completed for the process
|
||||
\item CPU Blocked - How often the process was blocked
|
||||
\end{itemize}
|
||||
\cite{lab3 Manual}
|
||||
\subsection{Summary Processes}
|
||||
\begin{itemize}
|
||||
\item process-number - Process number assigned by simulator
|
||||
\item process-status - Registered - process can be used by scheduling
|
||||
algorithm, I/O blocked - process blocked for input or output,
|
||||
Completed - process met or exceeded execution time
|
||||
\item cpu-time - Total amount of runtime allowed for this process
|
||||
\item block-time - amount of time before blocking process
|
||||
\item accumulated-time - how long the process has already executed
|
||||
(appears twice)
|
||||
\end{itemize}
|
||||
\cite{lab3 Manual}
|
||||
|
||||
\section{Scheduling conf settings}
|
||||
\begin{lstlisting}
|
||||
// # of Process
|
||||
numprocess 2 or 5 or 10
|
||||
|
||||
// mean deivation
|
||||
meandev 2000
|
||||
|
||||
// standard deviation
|
||||
standdev 0
|
||||
|
||||
// process # I/O blocking
|
||||
process 500
|
||||
process 500
|
||||
(more if we set numprocess to 5 or 10)
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 10000
|
||||
|
||||
\end{lstlisting}
|
||||
|
||||
\section{Two processes}
|
||||
\subsection{Summary Results file}
|
||||
|
||||
|
||||
\begin{lstlisting}
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 4000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
\end{lstlisting}
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c | c | c |}
|
||||
\hline
|
||||
Process\# & CPU Time & IO Blocking & CPU Completed & CPU Blocked \\
|
||||
\hline
|
||||
0& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
1& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\subsection{Summary Processes file}
|
||||
\begin{lstlisting}
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
\end{lstlisting}
|
||||
\subsection{Comments}
|
||||
Scheduling type was Batch since I did not change it in SchedulingAlgorithm.java
|
||||
file \\
|
||||
Scheduling Name was First-Come First-Served since this is what what we use as
|
||||
described in README for this laboratory \\
|
||||
Simulation Run time is 4000 ms and NOT 10000 ms since the simulation finished
|
||||
before it exceeded this max time \\
|
||||
Mean is 2000 since this is a value I set in conf value according to laboratory
|
||||
task description, same with standard deviation equal to 0 and CPU Time equal to
|
||||
2000 ms \\
|
||||
IO Blocking is equal to 500 ms, this is a value which we specified in
|
||||
configuration file and since we did not exceeded the runtime parameter it stayed
|
||||
equal to 500 ms \\
|
||||
CPU completed is equal to 2000 since this is deviation we set in configuration
|
||||
settings and the runtime was not exceeded \\
|
||||
All processes blocked 3 times, analysing summary processes we can see that they
|
||||
blocked at 500 ms, 1000 ms and 1500 ms and at 2000 seconds they completed
|
||||
|
||||
\section{Five processes}
|
||||
\newpage
|
||||
\subsection{Summary Results file}
|
||||
\begin{lstlisting}
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
\end{lstlisting}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c | c | c |}
|
||||
\hline
|
||||
Process\# & CPU Time & IO Blocking & CPU Completed & CPU Blocked \\
|
||||
\hline
|
||||
0& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
1& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
2& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
3& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
4& 2000 (ms)& 500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\subsection{Summary Processes file}
|
||||
\begin{lstlisting}
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
Process: 2 registered... (2000 500 0 0)
|
||||
Process: 2 I/O blocked... (2000 500 500 500)
|
||||
Process: 3 registered... (2000 500 0 0)
|
||||
Process: 3 I/O blocked... (2000 500 500 500)
|
||||
Process: 2 registered... (2000 500 500 500)
|
||||
Process: 2 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 3 registered... (2000 500 500 500)
|
||||
Process: 3 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 2 registered... (2000 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 3 registered... (2000 500 1000 1000)
|
||||
Process: 3 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 2 registered... (2000 500 1500 1500)
|
||||
Process: 2 completed... (2000 500 2000 2000)
|
||||
Process: 3 registered... (2000 500 1500 1500)
|
||||
Process: 3 completed... (2000 500 2000 2000)
|
||||
Process: 4 registered... (2000 500 0 0)
|
||||
Process: 4 I/O blocked... (2000 500 500 500)
|
||||
Process: 4 registered... (2000 500 500 500)
|
||||
Process: 4 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 4 registered... (2000 500 1000 1000)
|
||||
Process: 4 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 4 registered... (2000 500 1500 1500)
|
||||
\end{lstlisting}
|
||||
\subsection{Comments}
|
||||
Scheduling type was Batch since I did not change it in SchedulingAlgorithm.java
|
||||
file \\
|
||||
Scheduling Name was First-Come First-Served since this is what what we use as
|
||||
described in README for this laboratory \\
|
||||
Simulation run time is 10000 ms since it run untill the limit I set in conf file
|
||||
according to task description \\
|
||||
CPU blocking is set everywhere to 500 ms as in conf file \\
|
||||
Mean is 2000 since this is a value I set in conf value according to laboratory
|
||||
task description, same with standard deviation equal to 0 and CPU Time equal to
|
||||
2000 ms \\
|
||||
CPU completed is equal to expected 2000 ms, this makes sense since we had run
|
||||
time equal to 10000 ms and 5 procesess so each of them could take exactly the
|
||||
amonunt of time we set them to take.
|
||||
|
||||
|
||||
\section{Ten processes}
|
||||
\subsection{Summary Results file}
|
||||
\begin{lstlisting}
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
\end{lstlisting}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c | c | c |}
|
||||
\hline
|
||||
Process\# & CPU Time & IO Blocking & CPU Completed & CPU Blocked \\
|
||||
\hline
|
||||
0 &2000 (ms) &500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
1 &2000 (ms) &500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
2 &2000 (ms) &500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
3 &2000 (ms) &500 (ms)& 2000 (ms)& 3 times \\
|
||||
\hline
|
||||
4 &2000 (ms) &500 (ms)& 1000 (ms)& 2 times \\
|
||||
\hline
|
||||
5 &2000 (ms) &500 (ms)& 1000 (ms)& 1 times \\
|
||||
\hline
|
||||
6 &2000 (ms) &500 (ms)& 0 (ms)& 0 times \\
|
||||
\hline
|
||||
7 &2000 (ms) &500 (ms)& 0 (ms)& 0 times \\
|
||||
\hline
|
||||
8 &2000 (ms) &500 (ms)& 0 (ms)& 0 times \\
|
||||
\hline
|
||||
9 &2000 (ms) &500 (ms)& 0 (ms)& 0 times \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\subsection{Summary Processes file}
|
||||
\begin{lstlisting}
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
Process: 2 registered... (2000 500 0 0)
|
||||
Process: 2 I/O blocked... (2000 500 500 500)
|
||||
Process: 3 registered... (2000 500 0 0)
|
||||
Process: 3 I/O blocked... (2000 500 500 500)
|
||||
Process: 2 registered... (2000 500 500 500)
|
||||
Process: 2 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 3 registered... (2000 500 500 500)
|
||||
Process: 3 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 2 registered... (2000 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 3 registered... (2000 500 1000 1000)
|
||||
Process: 3 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 2 registered... (2000 500 1500 1500)
|
||||
Process: 2 completed... (2000 500 2000 2000)
|
||||
Process: 3 registered... (2000 500 1500 1500)
|
||||
Process: 3 completed... (2000 500 2000 2000)
|
||||
Process: 4 registered... (2000 500 0 0)
|
||||
Process: 4 I/O blocked... (2000 500 500 500)
|
||||
Process: 5 registered... (2000 500 0 0)
|
||||
Process: 5 I/O blocked... (2000 500 500 500)
|
||||
Process: 4 registered... (2000 500 500 500)
|
||||
Process: 4 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 5 registered... (2000 500 500 500)
|
||||
\end{lstlisting}
|
||||
\subsection{Comments}
|
||||
Scheduling type was Batch since I did not change it in SchedulingAlgorithm.java
|
||||
file \\
|
||||
Scheduling Name was First-Come First-Served since this is what what we use as
|
||||
described in README for this laboratory \\
|
||||
Simulation run time is 10000 ms since it run untill the limit I set in conf file
|
||||
according to task description \\
|
||||
IO Blocking set to 500 ms as in config file \\
|
||||
Mean is 2000 since this is a value I set in conf value according to laboratory
|
||||
task description, same with standard deviation equal to 0 and CPU Time equal to
|
||||
2000 ms \\
|
||||
CPU completed this time is equal to 2000 up to 4th process and then is equal to
|
||||
1000 ms for 5th and 6th and then it is equal to 0 ms, this means that the
|
||||
simulation exceeded the runtime before it had a chance to run all processes
|
||||
|
||||
\section{Getting process to be blocked 4 times}
|
||||
Up untill now process got blocked for maximum of 3 times. This makes sense since
|
||||
since they get blocked every 500 ms and the runtime for single process is 2000
|
||||
ms, so they get blocked first time at 500 ms, second time at 1000 ms and third
|
||||
time at 1500 ms, at 2000 ms they finish execution so they do not get blocked. \\
|
||||
If we change runtime of process to 2001 ms we should get as the result them
|
||||
getting blocked 4 times! \\
|
||||
I changed meandev in scheduling.conf to 2001 and observed results:
|
||||
\subsection{Summary Results file}
|
||||
\begin{lstlisting}
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 6003
|
||||
Mean: 2001
|
||||
Standard Deviation: 0
|
||||
\end{lstlisting}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c | c | c |}
|
||||
\hline
|
||||
Process \#& CPU Time& IO Blocking& CPU Completed&
|
||||
CPU Blocked \\ \hline
|
||||
0 & 2001 (ms)& 500 (ms)& 2001 (ms)&
|
||||
4 times \\ \hline
|
||||
1 & 2001 (ms)& 500 (ms)& 2001 (ms)&
|
||||
4 times \\ \hline
|
||||
2 & 2001 (ms)& 500 (ms)& 2001 (ms)&
|
||||
4 times \\ \hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
Sure enough we got all of the processes blocked 4 times!
|
||||
\section{Finishing comments}
|
||||
We runned all the processes, get to know scheduling, get to know first come
|
||||
first served algorithm. \\
|
||||
There are upsides and downsides of first come first served algorithm:
|
||||
\\
|
||||
Upsides:
|
||||
\begin{itemize}
|
||||
\item It is easy to implement
|
||||
\item It is easy to understand
|
||||
\end{itemize}
|
||||
Downsides:
|
||||
\begin{itemize}
|
||||
\item It is very inefficient (Last experiment with 10 processes barely
|
||||
acknowledged existence of the 5th one)
|
||||
\item High average wait time (Imagine 1000 processes and how long we
|
||||
would have to wait)
|
||||
\end{itemize}
|
||||
Using pretty much any other algorithm we could get better results \cite{First
|
||||
come first serve}
|
||||
\begin{figure}[H]
|
||||
\caption{\href{https://commons.wikimedia.org/wiki/File:Process_states.svg}{[Process
|
||||
states and how they switch from wikimedia]}}
|
||||
\includegraphics[width=\textwidth]{procestates}
|
||||
\end{figure}
|
||||
|
||||
\begin{thebibliography}{9}
|
||||
\bibitem{lab3 Manual} Manual in the laboratory 3 files.
|
||||
\bibitem{First come first serve}
|
||||
\href{https://www.studytonight.com/operating-system/first-come-first-serve}{[https://www.studytonight.com/operating-system/first-come-first-serve]}
|
||||
\bibitem{Other scheduling algorithms}
|
||||
\href{https://www.tutorialspoint.com/operating_system/os_process_scheduling_algorithms.htm}{[Tutorials
|
||||
point process scheduling algorithms]}
|
||||
\end{thebibliography}
|
||||
\end{document}
|
||||
11
EOPSY/lab3/report/resultsfive
Normal file
@ -0,0 +1,11 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
2 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
3 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
4 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
16
EOPSY/lab3/report/resultsten
Normal file
@ -0,0 +1,16 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
2 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
3 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
4 2000 (ms) 500 (ms) 1000 (ms) 2 times
|
||||
5 2000 (ms) 500 (ms) 1000 (ms) 1 times
|
||||
6 2000 (ms) 500 (ms) 0 (ms) 0 times
|
||||
7 2000 (ms) 500 (ms) 0 (ms) 0 times
|
||||
8 2000 (ms) 500 (ms) 0 (ms) 0 times
|
||||
9 2000 (ms) 500 (ms) 0 (ms) 0 times
|
||||
8
EOPSY/lab3/report/resultstwo
Normal file
@ -0,0 +1,8 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 4000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
6
EOPSY/lab3/report/texput.fls
Normal file
@ -0,0 +1,6 @@
|
||||
PWD /home/kuchy/Zlew/Studia/NieNotatki/Projekty/nie_inzynierka/Programowanie/EOPSY/eopsy_krzysztof_rudnicki_lab3/report
|
||||
INPUT /etc/texmf/web2c/texmf.cnf
|
||||
INPUT /usr/share/texmf/web2c/texmf.cnf
|
||||
INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf
|
||||
INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt
|
||||
OUTPUT texput.log
|
||||
22
EOPSY/lab3/report/texput.log
Normal file
@ -0,0 +1,22 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2022.4.9) 28 APR 2022 22:05
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**report.tex
|
||||
|
||||
! Emergency stop.
|
||||
<*> report.tex
|
||||
|
||||
*** (job aborted, file error in nonstop mode)
|
||||
|
||||
|
||||
Here is how much of TeX's memory you used:
|
||||
3 strings out of 481239
|
||||
108 string characters out of 5920378
|
||||
236564 words of memory out of 5000000
|
||||
15373 multiletter control sequences out of 15000+600000
|
||||
532338 words of font info for 24 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
0i,0n,0p,1b,6s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
! ==> Fatal error occurred, no output PDF file produced!
|
||||
1
EOPSY/lab3/task3/README
Normal file
@ -0,0 +1 @@
|
||||
Change directory to ./ftp and submit "make setup".
|
||||
39
EOPSY/lab3/task3/Summary-Processes
Normal file
@ -0,0 +1,39 @@
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
Process: 2 registered... (2000 500 0 0)
|
||||
Process: 2 I/O blocked... (2000 500 500 500)
|
||||
Process: 3 registered... (2000 500 0 0)
|
||||
Process: 3 I/O blocked... (2000 500 500 500)
|
||||
Process: 2 registered... (2000 500 500 500)
|
||||
Process: 2 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 3 registered... (2000 500 500 500)
|
||||
Process: 3 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 2 registered... (2000 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 3 registered... (2000 500 1000 1000)
|
||||
Process: 3 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 2 registered... (2000 500 1500 1500)
|
||||
Process: 2 completed... (2000 500 2000 2000)
|
||||
Process: 3 registered... (2000 500 1500 1500)
|
||||
Process: 3 completed... (2000 500 2000 2000)
|
||||
Process: 4 registered... (2000 500 0 0)
|
||||
Process: 4 I/O blocked... (2000 500 500 500)
|
||||
Process: 4 registered... (2000 500 500 500)
|
||||
Process: 4 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 4 registered... (2000 500 1000 1000)
|
||||
Process: 4 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 4 registered... (2000 500 1500 1500)
|
||||
11
EOPSY/lab3/task3/Summary-Results
Normal file
@ -0,0 +1,11 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
2 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
3 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
4 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
24
EOPSY/lab3/task3/ftp/Makefile
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
default: info
|
||||
|
||||
|
||||
help:
|
||||
less README.tjk
|
||||
|
||||
compile:
|
||||
javac -nowarn *.java
|
||||
|
||||
run:
|
||||
java Scheduling scheduling.conf
|
||||
|
||||
setup:
|
||||
./setUp
|
||||
|
||||
info:
|
||||
@echo ""
|
||||
@echo "Use 'make' with one argument:"
|
||||
@echo ""
|
||||
@echo " make help"
|
||||
@echo " make compile"
|
||||
@echo " make run"
|
||||
@echo ""
|
||||
199
EOPSY/lab3/task3/ftp/README.tjk
Normal file
@ -0,0 +1,199 @@
|
||||
|
||||
|
||||
WORKPLACE ORGANIZATION:
|
||||
mkdir ../work
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d sched.tgz
|
||||
tar -xvf sched.tar
|
||||
rm sched.tar
|
||||
|
||||
|
||||
READING:
|
||||
less/vi README.tjk
|
||||
netscape/lynx install_unix.html
|
||||
netscape/lynx user_guide.html
|
||||
|
||||
|
||||
COMPILE:
|
||||
javac -nowarn *.java
|
||||
|
||||
|
||||
RUN:
|
||||
java Scheduling scheduling.conf
|
||||
|
||||
|
||||
FILES:
|
||||
input file name: scheduling.conf
|
||||
output file name: Summary-Processes
|
||||
log file name: Summary-Processes
|
||||
|
||||
|
||||
--[ YOUR TASK ]-------------------------------------------------------
|
||||
|
||||
Create a configuration file in which all processes run an average
|
||||
of 2000 milliseconds with a standard deviation of zero, and which
|
||||
are blocked for input or output every 500 milliseconds. Run the
|
||||
simulation for 10000 milliseconds with 2 processes. Examine the
|
||||
two output files. Try again for 5 processes. Try again for 10
|
||||
processes. Explain what's happening.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Configuration File
|
||||
|
||||
The configuration file (scheduling.conf) is used to specify various
|
||||
parameters for the simulation, including:
|
||||
* the number of processes,
|
||||
* the mean runtime for a process,
|
||||
* the standard deviation in runtime for a process,
|
||||
* for each process, how long the process runs before it blocks for
|
||||
input or output, and
|
||||
* how long the simulation should run.
|
||||
|
||||
Configuration File Options
|
||||
|
||||
There are a number of options which can be specified in the
|
||||
configuration file. These are summarized in the table below.
|
||||
|
||||
Keyword Values Description
|
||||
numprocess n The number of processes to create for the simulation.
|
||||
meandev n The average length of time in milliseconds that a process
|
||||
should execute before terminating.
|
||||
standdev n The number of standard deviations from the average length
|
||||
of time a process should execute before terminating.
|
||||
process n The amount of time in milliseconds that the process should
|
||||
execute before blocking for input or output. There should be a
|
||||
separate process directive for each process specified by the
|
||||
numprocess directive.
|
||||
runtime n The maximum amount of time the simulation should run in
|
||||
milliseconds.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Sample Configuration File
|
||||
|
||||
The "scheduling.conf" configuration file looks like this:
|
||||
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 1100
|
||||
|
||||
// standard deviation
|
||||
standdev 510
|
||||
|
||||
// process # I/O blocking
|
||||
process 100
|
||||
process 500
|
||||
process 30
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 5000
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Summary-Results File
|
||||
|
||||
The Summary-Results file contains a summary report describing the
|
||||
simulation and includes one line of summary information for each
|
||||
process. The fields and columns in the report are described in the
|
||||
following table.
|
||||
|
||||
Field Description
|
||||
Scheduling Type: The type of the scheduling algorithm used. The value
|
||||
displayed is "hard coded" in the SchedulingAlgorithm.java file.
|
||||
Scheduling Name: The name of the scheduling algorithm used. The value
|
||||
displayed is "hard coded" in the SchedulingAlgorithm.java file.
|
||||
Simulation Run Time: The number of milliseconds that the simulation
|
||||
ran. This may be less than or equal to the total amount of time
|
||||
specified by the "runtime" configuration parameter.
|
||||
Mean: The average amount of runtime for the processes as specified by
|
||||
the "meandev" configuration parameter.
|
||||
Standard Deviation: The standard deviation from the average amount of
|
||||
runtime for the processes as specified by the "standdev" configuration
|
||||
parameter.
|
||||
Process # The process number assigned to the process by the simulator.
|
||||
The process number is between 0 and n-1, where n is the number
|
||||
specified by the "numprocess" configuration parameter.
|
||||
CPU Time The randomly generated total runtime for the process in
|
||||
milliseconds. This is determined by the "meandev" and "standdev"
|
||||
parameters in the configuration file.
|
||||
IO Blocking The amount of time the process runs before it blocks for
|
||||
input or output. This is specified for each process by a "process"
|
||||
directive in the configuration file.
|
||||
CPU Completed The amount of runtime in milliseconds completed for the
|
||||
process. Note that this may be less than the CPU Time for the process
|
||||
if the simulator runs out of time as specified by the "runtime"
|
||||
configuration parameter.
|
||||
CPU Blocked The number of times the process blocked for input or
|
||||
output during the simulation.
|
||||
|
||||
Sample Summary-Results File
|
||||
|
||||
The output "Summary-Results" file looks something like this:
|
||||
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 2750
|
||||
Mean: 1100
|
||||
Standard Deviation: 510
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 1372 (ms) 100 (ms) 1372 (ms) 13 times
|
||||
1 689 (ms) 500 (ms) 689 (ms) 1 times
|
||||
2 689 (ms) 30 (ms) 689 (ms) 22 times
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Summary-Processes File
|
||||
|
||||
The Summary-Processes file contains a log of the actions taken by the
|
||||
scheduling algorithm as it considers each process in the scheduling
|
||||
queue.
|
||||
|
||||
Each line in the log file is of the following form:
|
||||
|
||||
Process: process-number process-status... (cpu-time block-time accumulated-time
|
||||
accumulated-time)
|
||||
|
||||
The fields in the line are described in the table below.
|
||||
|
||||
Field Description
|
||||
process-number The process number assigned to the process by the
|
||||
simulator. This is a number between 0 and n-1, where n is the value
|
||||
specified for the "numprocess" configuration parameter.
|
||||
process-status The status of the process at this point in time. If
|
||||
"registered" then the process is under consideration by the scheduling
|
||||
algorithm. If "I/O blocked", then the scheduling algorithm has noticed
|
||||
that the process is blocked for input or output. If "completed", then
|
||||
the scheduling algorithm has noticed that the process has met or
|
||||
exceeded its allocated execution time.
|
||||
cpu-time The total amount of run time allowed for this process. This
|
||||
number is randomly generated for the process based on the "meandev"
|
||||
and "standdev" values specified in the configuration file.
|
||||
block-time The amount of time in milliseconds to execute before
|
||||
blocking process. This number is specified for the process by the
|
||||
"process" directive in the configuration file.
|
||||
accumulated-time The total amount of time process has executed in
|
||||
milliseconds. (This number appears twice in the log file; one should
|
||||
be removed).
|
||||
|
||||
Sample Summary-Processes File
|
||||
|
||||
The output "Summary-Processes" file looks something like this:
|
||||
|
||||
Process: 0 registered... (1372 100 0 0)
|
||||
Process: 0 I/O blocked... (1372 100 100 100)
|
||||
Process: 1 registered... (689 500 0 0)
|
||||
Process: 1 I/O blocked... (689 500 500 500)
|
||||
Process: 0 registered... (1372 100 100 100)
|
||||
Process: 0 I/O blocked... (1372 100 200 200)
|
||||
Process: 1 registered... (689 500 500 500)
|
||||
Process: 1 completed... (689 500 689 689)
|
||||
Process: 0 registered... (1372 100 200 200)
|
||||
Process: 0 I/O blocked... (1372 100 300 300)
|
||||
Process: 2 registered... (689 30 0 0)
|
||||
Process: 2 I/O blocked... (689 30 30 30)
|
||||
|
||||
BIN
EOPSY/lab3/task3/ftp/sched.tgz
Normal file
9
EOPSY/lab3/task3/ftp/setUp
Executable file
@ -0,0 +1,9 @@
|
||||
echo "Creating ../work subdirectory"
|
||||
mkdir ../work
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d sched.tgz
|
||||
tar -xvf sched.tar
|
||||
rm sched.tar
|
||||
echo ""
|
||||
echo "Now, go to the directory ../work and call 'make'"
|
||||
4067
EOPSY/lab3/task3/processesfive
Normal file
149
EOPSY/lab3/task3/processesten
Normal file
@ -0,0 +1,149 @@
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
Process: 2 registered... (2000 500 0 0)
|
||||
Process: 2 I/O blocked... (2000 500 500 500)
|
||||
Process: 3 registered... (2000 0 0 0)
|
||||
Process: 3 I/O blocked... (2000 0 1 1)
|
||||
Process: 2 registered... (2000 500 500 500)
|
||||
Process: 2 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 3 registered... (2000 0 1 1)
|
||||
Process: 3 I/O blocked... (2000 0 2 2)
|
||||
Process: 2 registered... (2000 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 3 registered... (2000 0 2 2)
|
||||
Process: 3 I/O blocked... (2000 0 3 3)
|
||||
Process: 2 registered... (2000 500 1500 1500)
|
||||
Process: 2 completed... (2000 500 2000 2000)
|
||||
Process: 3 registered... (2000 0 3 3)
|
||||
Process: 3 I/O blocked... (2000 0 3 3)
|
||||
Process: 4 registered... (2000 100 0 0)
|
||||
Process: 4 I/O blocked... (2000 100 100 100)
|
||||
Process: 3 registered... (2000 0 3 3)
|
||||
Process: 3 I/O blocked... (2000 0 4 4)
|
||||
Process: 4 registered... (2000 100 100 100)
|
||||
Process: 4 I/O blocked... (2000 100 200 200)
|
||||
Process: 3 registered... (2000 0 4 4)
|
||||
Process: 3 I/O blocked... (2000 0 5 5)
|
||||
Process: 4 registered... (2000 100 200 200)
|
||||
Process: 4 I/O blocked... (2000 100 300 300)
|
||||
Process: 3 registered... (2000 0 5 5)
|
||||
Process: 3 I/O blocked... (2000 0 6 6)
|
||||
Process: 4 registered... (2000 100 300 300)
|
||||
Process: 4 I/O blocked... (2000 100 400 400)
|
||||
Process: 3 registered... (2000 0 6 6)
|
||||
Process: 3 I/O blocked... (2000 0 7 7)
|
||||
Process: 4 registered... (2000 100 400 400)
|
||||
Process: 4 I/O blocked... (2000 100 500 500)
|
||||
Process: 3 registered... (2000 0 7 7)
|
||||
Process: 3 I/O blocked... (2000 0 8 8)
|
||||
Process: 4 registered... (2000 100 500 500)
|
||||
Process: 4 I/O blocked... (2000 100 600 600)
|
||||
Process: 3 registered... (2000 0 8 8)
|
||||
Process: 3 I/O blocked... (2000 0 9 9)
|
||||
Process: 4 registered... (2000 100 600 600)
|
||||
Process: 4 I/O blocked... (2000 100 700 700)
|
||||
Process: 3 registered... (2000 0 9 9)
|
||||
Process: 3 I/O blocked... (2000 0 10 10)
|
||||
Process: 4 registered... (2000 100 700 700)
|
||||
Process: 4 I/O blocked... (2000 100 800 800)
|
||||
Process: 3 registered... (2000 0 10 10)
|
||||
Process: 3 I/O blocked... (2000 0 11 11)
|
||||
Process: 4 registered... (2000 100 800 800)
|
||||
Process: 4 I/O blocked... (2000 100 900 900)
|
||||
Process: 3 registered... (2000 0 11 11)
|
||||
Process: 3 I/O blocked... (2000 0 12 12)
|
||||
Process: 4 registered... (2000 100 900 900)
|
||||
Process: 4 I/O blocked... (2000 100 1000 1000)
|
||||
Process: 3 registered... (2000 0 12 12)
|
||||
Process: 3 I/O blocked... (2000 0 13 13)
|
||||
Process: 4 registered... (2000 100 1000 1000)
|
||||
Process: 4 I/O blocked... (2000 100 1100 1100)
|
||||
Process: 3 registered... (2000 0 13 13)
|
||||
Process: 3 I/O blocked... (2000 0 14 14)
|
||||
Process: 4 registered... (2000 100 1100 1100)
|
||||
Process: 4 I/O blocked... (2000 100 1200 1200)
|
||||
Process: 3 registered... (2000 0 14 14)
|
||||
Process: 3 I/O blocked... (2000 0 15 15)
|
||||
Process: 4 registered... (2000 100 1200 1200)
|
||||
Process: 4 I/O blocked... (2000 100 1300 1300)
|
||||
Process: 3 registered... (2000 0 15 15)
|
||||
Process: 3 I/O blocked... (2000 0 16 16)
|
||||
Process: 4 registered... (2000 100 1300 1300)
|
||||
Process: 4 I/O blocked... (2000 100 1400 1400)
|
||||
Process: 3 registered... (2000 0 16 16)
|
||||
Process: 3 I/O blocked... (2000 0 17 17)
|
||||
Process: 4 registered... (2000 100 1400 1400)
|
||||
Process: 4 I/O blocked... (2000 100 1500 1500)
|
||||
Process: 3 registered... (2000 0 17 17)
|
||||
Process: 3 I/O blocked... (2000 0 18 18)
|
||||
Process: 4 registered... (2000 100 1500 1500)
|
||||
Process: 4 I/O blocked... (2000 100 1600 1600)
|
||||
Process: 3 registered... (2000 0 18 18)
|
||||
Process: 3 I/O blocked... (2000 0 19 19)
|
||||
Process: 4 registered... (2000 100 1600 1600)
|
||||
Process: 4 I/O blocked... (2000 100 1700 1700)
|
||||
Process: 3 registered... (2000 0 19 19)
|
||||
Process: 3 I/O blocked... (2000 0 20 20)
|
||||
Process: 4 registered... (2000 100 1700 1700)
|
||||
Process: 4 I/O blocked... (2000 100 1800 1800)
|
||||
Process: 3 registered... (2000 0 20 20)
|
||||
Process: 3 I/O blocked... (2000 0 21 21)
|
||||
Process: 4 registered... (2000 100 1800 1800)
|
||||
Process: 4 I/O blocked... (2000 100 1900 1900)
|
||||
Process: 3 registered... (2000 0 21 21)
|
||||
Process: 3 I/O blocked... (2000 0 22 22)
|
||||
Process: 4 registered... (2000 100 1900 1900)
|
||||
Process: 4 completed... (2000 100 2000 2000)
|
||||
Process: 3 registered... (2000 0 22 22)
|
||||
Process: 3 I/O blocked... (2000 0 22 22)
|
||||
Process: 5 registered... (2000 200 0 0)
|
||||
Process: 5 I/O blocked... (2000 200 200 200)
|
||||
Process: 3 registered... (2000 0 22 22)
|
||||
Process: 3 I/O blocked... (2000 0 23 23)
|
||||
Process: 5 registered... (2000 200 200 200)
|
||||
Process: 5 I/O blocked... (2000 200 400 400)
|
||||
Process: 3 registered... (2000 0 23 23)
|
||||
Process: 3 I/O blocked... (2000 0 24 24)
|
||||
Process: 5 registered... (2000 200 400 400)
|
||||
Process: 5 I/O blocked... (2000 200 600 600)
|
||||
Process: 3 registered... (2000 0 24 24)
|
||||
Process: 3 I/O blocked... (2000 0 25 25)
|
||||
Process: 5 registered... (2000 200 600 600)
|
||||
Process: 5 I/O blocked... (2000 200 800 800)
|
||||
Process: 3 registered... (2000 0 25 25)
|
||||
Process: 3 I/O blocked... (2000 0 26 26)
|
||||
Process: 5 registered... (2000 200 800 800)
|
||||
Process: 5 I/O blocked... (2000 200 1000 1000)
|
||||
Process: 3 registered... (2000 0 26 26)
|
||||
Process: 3 I/O blocked... (2000 0 27 27)
|
||||
Process: 5 registered... (2000 200 1000 1000)
|
||||
Process: 5 I/O blocked... (2000 200 1200 1200)
|
||||
Process: 3 registered... (2000 0 27 27)
|
||||
Process: 3 I/O blocked... (2000 0 28 28)
|
||||
Process: 5 registered... (2000 200 1200 1200)
|
||||
Process: 5 I/O blocked... (2000 200 1400 1400)
|
||||
Process: 3 registered... (2000 0 28 28)
|
||||
Process: 3 I/O blocked... (2000 0 29 29)
|
||||
Process: 5 registered... (2000 200 1400 1400)
|
||||
Process: 5 I/O blocked... (2000 200 1600 1600)
|
||||
Process: 3 registered... (2000 0 29 29)
|
||||
Process: 3 I/O blocked... (2000 0 30 30)
|
||||
Process: 5 registered... (2000 200 1600 1600)
|
||||
Process: 5 I/O blocked... (2000 200 1800 1800)
|
||||
Process: 3 registered... (2000 0 30 30)
|
||||
Process: 3 I/O blocked... (2000 0 31 31)
|
||||
Process: 5 registered... (2000 200 1800 1800)
|
||||
16
EOPSY/lab3/task3/processestwo
Normal file
@ -0,0 +1,16 @@
|
||||
Process: 0 registered... (2000 500 0 0)
|
||||
Process: 0 I/O blocked... (2000 500 500 500)
|
||||
Process: 1 registered... (2000 500 0 0)
|
||||
Process: 1 I/O blocked... (2000 500 500 500)
|
||||
Process: 0 registered... (2000 500 500 500)
|
||||
Process: 0 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 1 registered... (2000 500 500 500)
|
||||
Process: 1 I/O blocked... (2000 500 1000 1000)
|
||||
Process: 0 registered... (2000 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 1 registered... (2000 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2000 500 1500 1500)
|
||||
Process: 0 registered... (2000 500 1500 1500)
|
||||
Process: 0 completed... (2000 500 2000 2000)
|
||||
Process: 1 registered... (2000 500 1500 1500)
|
||||
Process: 1 completed... (2000 500 2000 2000)
|
||||
11
EOPSY/lab3/task3/resultsfive
Normal file
@ -0,0 +1,11 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
2 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
3 2000 (ms) 0 (ms) 2000 (ms) 2001 times
|
||||
4 2000 (ms) 100 (ms) 2000 (ms) 19 times
|
||||
16
EOPSY/lab3/task3/resultsten
Normal file
@ -0,0 +1,16 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 10000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
2 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
3 2000 (ms) 0 (ms) 31 (ms) 33 times
|
||||
4 2000 (ms) 100 (ms) 2000 (ms) 19 times
|
||||
5 2000 (ms) 200 (ms) 1969 (ms) 9 times
|
||||
6 2000 (ms) 300 (ms) 0 (ms) 0 times
|
||||
7 2000 (ms) 400 (ms) 0 (ms) 0 times
|
||||
8 2000 (ms) 500 (ms) 0 (ms) 0 times
|
||||
9 2000 (ms) 600 (ms) 0 (ms) 0 times
|
||||
8
EOPSY/lab3/task3/resultstwo
Normal file
@ -0,0 +1,8 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 4000
|
||||
Mean: 2000
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
1 2000 (ms) 500 (ms) 2000 (ms) 3 times
|
||||
340
EOPSY/lab3/task3/work/COPYING.TXT
Normal file
@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
||||
BIN
EOPSY/lab3/task3/work/Common.class
Normal file
56
EOPSY/lab3/task3/work/Common.java
Normal file
@ -0,0 +1,56 @@
|
||||
public class Common {
|
||||
|
||||
static public int s2i (String s) {
|
||||
int i = 0;
|
||||
|
||||
try {
|
||||
i = Integer.parseInt(s.trim());
|
||||
} catch (NumberFormatException nfe) {
|
||||
System.out.println("NumberFormatException: " + nfe.getMessage());
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
static public double R1 () {
|
||||
java.util.Random generator = new java.util.Random(System.currentTimeMillis());
|
||||
double U = generator.nextDouble();
|
||||
while (U < 0 || U >= 1) {
|
||||
U = generator.nextDouble();
|
||||
}
|
||||
double V = generator.nextDouble();
|
||||
while (V < 0 || V >= 1) {
|
||||
V = generator.nextDouble();
|
||||
}
|
||||
double X = Math.sqrt((8/Math.E)) * (V - 0.5)/U;
|
||||
if (!(R2(X,U))) { return -1; }
|
||||
if (!(R3(X,U))) { return -1; }
|
||||
if (!(R4(X,U))) { return -1; }
|
||||
return X;
|
||||
}
|
||||
|
||||
static public boolean R2 (double X, double U) {
|
||||
if ((X * X) <= (5 - 4 * Math.exp(.25) * U)) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static public boolean R3 (double X, double U) {
|
||||
if ((X * X) >= (4 * Math.exp(-1.35) / U + 1.4)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
static public boolean R4 (double X, double U) {
|
||||
if ((X * X) < (-4 * Math.log(U))) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
24
EOPSY/lab3/task3/work/Makefile
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
default: info
|
||||
|
||||
|
||||
help:
|
||||
less README.tjk
|
||||
|
||||
compile:
|
||||
javac -nowarn *.java
|
||||
|
||||
run:
|
||||
java Scheduling scheduling.conf
|
||||
|
||||
setup:
|
||||
./setUp
|
||||
|
||||
info:
|
||||
@echo ""
|
||||
@echo "Use 'make' with one argument:"
|
||||
@echo ""
|
||||
@echo " make help"
|
||||
@echo " make compile"
|
||||
@echo " make run"
|
||||
@echo ""
|
||||
BIN
EOPSY/lab3/task3/work/Process.class
Normal file
15
EOPSY/lab3/task3/work/Process.java
Normal file
@ -0,0 +1,15 @@
|
||||
public class Process {
|
||||
public int cputime;
|
||||
public int ioblocking;
|
||||
public int cpudone;
|
||||
public int ionext;
|
||||
public int numblocked;
|
||||
|
||||
public Process(int cputime, int ioblocking, int cpudone, int ionext, int numblocked) {
|
||||
this.cputime = cputime;
|
||||
this.ioblocking = ioblocking;
|
||||
this.cpudone = cpudone;
|
||||
this.ionext = ionext;
|
||||
this.numblocked = numblocked;
|
||||
}
|
||||
}
|
||||
199
EOPSY/lab3/task3/work/README.tjk
Normal file
@ -0,0 +1,199 @@
|
||||
|
||||
|
||||
WORKPLACE ORGANIZATION:
|
||||
mkdir ../work
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d sched.tgz
|
||||
tar -xvf sched.tar
|
||||
rm sched.tar
|
||||
|
||||
|
||||
READING:
|
||||
less/vi README.tjk
|
||||
netscape/lynx install_unix.html
|
||||
netscape/lynx user_guide.html
|
||||
|
||||
|
||||
COMPILE:
|
||||
javac -nowarn *.java
|
||||
|
||||
|
||||
RUN:
|
||||
java Scheduling scheduling.conf
|
||||
|
||||
|
||||
FILES:
|
||||
input file name: scheduling.conf
|
||||
output file name: Summary-Processes
|
||||
log file name: Summary-Processes
|
||||
|
||||
|
||||
--[ YOUR TASK ]-------------------------------------------------------
|
||||
|
||||
Create a configuration file in which all processes run an average
|
||||
of 2000 milliseconds with a standard deviation of zero, and which
|
||||
are blocked for input or output every 500 milliseconds. Run the
|
||||
simulation for 10000 milliseconds with 2 processes. Examine the
|
||||
two output files. Try again for 5 processes. Try again for 10
|
||||
processes. Explain what's happening.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Configuration File
|
||||
|
||||
The configuration file (scheduling.conf) is used to specify various
|
||||
parameters for the simulation, including:
|
||||
* the number of processes,
|
||||
* the mean runtime for a process,
|
||||
* the standard deviation in runtime for a process,
|
||||
* for each process, how long the process runs before it blocks for
|
||||
input or output, and
|
||||
* how long the simulation should run.
|
||||
|
||||
Configuration File Options
|
||||
|
||||
There are a number of options which can be specified in the
|
||||
configuration file. These are summarized in the table below.
|
||||
|
||||
Keyword Values Description
|
||||
numprocess n The number of processes to create for the simulation.
|
||||
meandev n The average length of time in milliseconds that a process
|
||||
should execute before terminating.
|
||||
standdev n The number of standard deviations from the average length
|
||||
of time a process should execute before terminating.
|
||||
process n The amount of time in milliseconds that the process should
|
||||
execute before blocking for input or output. There should be a
|
||||
separate process directive for each process specified by the
|
||||
numprocess directive.
|
||||
runtime n The maximum amount of time the simulation should run in
|
||||
milliseconds.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
Sample Configuration File
|
||||
|
||||
The "scheduling.conf" configuration file looks like this:
|
||||
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 1100
|
||||
|
||||
// standard deviation
|
||||
standdev 510
|
||||
|
||||
// process # I/O blocking
|
||||
process 100
|
||||
process 500
|
||||
process 30
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 5000
|
||||
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Summary-Results File
|
||||
|
||||
The Summary-Results file contains a summary report describing the
|
||||
simulation and includes one line of summary information for each
|
||||
process. The fields and columns in the report are described in the
|
||||
following table.
|
||||
|
||||
Field Description
|
||||
Scheduling Type: The type of the scheduling algorithm used. The value
|
||||
displayed is "hard coded" in the SchedulingAlgorithm.java file.
|
||||
Scheduling Name: The name of the scheduling algorithm used. The value
|
||||
displayed is "hard coded" in the SchedulingAlgorithm.java file.
|
||||
Simulation Run Time: The number of milliseconds that the simulation
|
||||
ran. This may be less than or equal to the total amount of time
|
||||
specified by the "runtime" configuration parameter.
|
||||
Mean: The average amount of runtime for the processes as specified by
|
||||
the "meandev" configuration parameter.
|
||||
Standard Deviation: The standard deviation from the average amount of
|
||||
runtime for the processes as specified by the "standdev" configuration
|
||||
parameter.
|
||||
Process # The process number assigned to the process by the simulator.
|
||||
The process number is between 0 and n-1, where n is the number
|
||||
specified by the "numprocess" configuration parameter.
|
||||
CPU Time The randomly generated total runtime for the process in
|
||||
milliseconds. This is determined by the "meandev" and "standdev"
|
||||
parameters in the configuration file.
|
||||
IO Blocking The amount of time the process runs before it blocks for
|
||||
input or output. This is specified for each process by a "process"
|
||||
directive in the configuration file.
|
||||
CPU Completed The amount of runtime in milliseconds completed for the
|
||||
process. Note that this may be less than the CPU Time for the process
|
||||
if the simulator runs out of time as specified by the "runtime"
|
||||
configuration parameter.
|
||||
CPU Blocked The number of times the process blocked for input or
|
||||
output during the simulation.
|
||||
|
||||
Sample Summary-Results File
|
||||
|
||||
The output "Summary-Results" file looks something like this:
|
||||
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 2750
|
||||
Mean: 1100
|
||||
Standard Deviation: 510
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 1372 (ms) 100 (ms) 1372 (ms) 13 times
|
||||
1 689 (ms) 500 (ms) 689 (ms) 1 times
|
||||
2 689 (ms) 30 (ms) 689 (ms) 22 times
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
The Summary-Processes File
|
||||
|
||||
The Summary-Processes file contains a log of the actions taken by the
|
||||
scheduling algorithm as it considers each process in the scheduling
|
||||
queue.
|
||||
|
||||
Each line in the log file is of the following form:
|
||||
|
||||
Process: process-number process-status... (cpu-time block-time accumulated-time
|
||||
accumulated-time)
|
||||
|
||||
The fields in the line are described in the table below.
|
||||
|
||||
Field Description
|
||||
process-number The process number assigned to the process by the
|
||||
simulator. This is a number between 0 and n-1, where n is the value
|
||||
specified for the "numprocess" configuration parameter.
|
||||
process-status The status of the process at this point in time. If
|
||||
"registered" then the process is under consideration by the scheduling
|
||||
algorithm. If "I/O blocked", then the scheduling algorithm has noticed
|
||||
that the process is blocked for input or output. If "completed", then
|
||||
the scheduling algorithm has noticed that the process has met or
|
||||
exceeded its allocated execution time.
|
||||
cpu-time The total amount of run time allowed for this process. This
|
||||
number is randomly generated for the process based on the "meandev"
|
||||
and "standdev" values specified in the configuration file.
|
||||
block-time The amount of time in milliseconds to execute before
|
||||
blocking process. This number is specified for the process by the
|
||||
"process" directive in the configuration file.
|
||||
accumulated-time The total amount of time process has executed in
|
||||
milliseconds. (This number appears twice in the log file; one should
|
||||
be removed).
|
||||
|
||||
Sample Summary-Processes File
|
||||
|
||||
The output "Summary-Processes" file looks something like this:
|
||||
|
||||
Process: 0 registered... (1372 100 0 0)
|
||||
Process: 0 I/O blocked... (1372 100 100 100)
|
||||
Process: 1 registered... (689 500 0 0)
|
||||
Process: 1 I/O blocked... (689 500 500 500)
|
||||
Process: 0 registered... (1372 100 100 100)
|
||||
Process: 0 I/O blocked... (1372 100 200 200)
|
||||
Process: 1 registered... (689 500 500 500)
|
||||
Process: 1 completed... (689 500 689 689)
|
||||
Process: 0 registered... (1372 100 200 200)
|
||||
Process: 0 I/O blocked... (1372 100 300 300)
|
||||
Process: 2 registered... (689 30 0 0)
|
||||
Process: 2 I/O blocked... (689 30 30 30)
|
||||
|
||||
BIN
EOPSY/lab3/task3/work/Results.class
Normal file
11
EOPSY/lab3/task3/work/Results.java
Normal file
@ -0,0 +1,11 @@
|
||||
public class Results {
|
||||
public String schedulingType;
|
||||
public String schedulingName;
|
||||
public int compuTime;
|
||||
|
||||
public Results (String schedulingType, String schedulingName, int compuTime) {
|
||||
this.schedulingType = schedulingType;
|
||||
this.schedulingName = schedulingName;
|
||||
this.compuTime = compuTime;
|
||||
}
|
||||
}
|
||||
BIN
EOPSY/lab3/task3/work/Scheduling.class
Normal file
144
EOPSY/lab3/task3/work/Scheduling.java
Normal file
@ -0,0 +1,144 @@
|
||||
// This file contains the main() function for the Scheduling
|
||||
// simulation. Init() initializes most of the variables by
|
||||
// reading from a provided file. SchedulingAlgorithm.Run() is
|
||||
// called from main() to run the simulation. Summary-Results
|
||||
// is where the summary results are written, and Summary-Processes
|
||||
// is where the process scheduling summary is written.
|
||||
|
||||
// Created by Alexander Reeder, 2001 January 06
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
public class Scheduling {
|
||||
|
||||
private static int processnum = 5;
|
||||
private static int meanDev = 1000;
|
||||
private static int standardDev = 100;
|
||||
private static int runtime = 1000;
|
||||
private static Vector processVector = new Vector();
|
||||
private static Results result = new Results("null","null",0);
|
||||
private static String resultsFile = "Summary-Results";
|
||||
|
||||
private static void Init(String file) {
|
||||
File f = new File(file);
|
||||
String line;
|
||||
String tmp;
|
||||
int cputime = 0;
|
||||
int ioblocking = 0;
|
||||
double X = 0.0;
|
||||
|
||||
try {
|
||||
//BufferedReader in = new BufferedReader(new FileReader(f));
|
||||
DataInputStream in = new DataInputStream(new FileInputStream(f));
|
||||
while ((line = in.readLine()) != null) {
|
||||
if (line.startsWith("numprocess")) {
|
||||
StringTokenizer st = new StringTokenizer(line);
|
||||
st.nextToken();
|
||||
processnum = Common.s2i(st.nextToken());
|
||||
}
|
||||
if (line.startsWith("meandev")) {
|
||||
StringTokenizer st = new StringTokenizer(line);
|
||||
st.nextToken();
|
||||
meanDev = Common.s2i(st.nextToken());
|
||||
}
|
||||
if (line.startsWith("standdev")) {
|
||||
StringTokenizer st = new StringTokenizer(line);
|
||||
st.nextToken();
|
||||
standardDev = Common.s2i(st.nextToken());
|
||||
}
|
||||
if (line.startsWith("process")) {
|
||||
StringTokenizer st = new StringTokenizer(line);
|
||||
st.nextToken();
|
||||
ioblocking = Common.s2i(st.nextToken());
|
||||
X = Common.R1();
|
||||
while (X == -1.0) {
|
||||
X = Common.R1();
|
||||
}
|
||||
X = X * standardDev;
|
||||
cputime = (int) X + meanDev;
|
||||
processVector.addElement(new sProcess(cputime, ioblocking, 0, 0, 0));
|
||||
}
|
||||
if (line.startsWith("runtime")) {
|
||||
StringTokenizer st = new StringTokenizer(line);
|
||||
st.nextToken();
|
||||
runtime = Common.s2i(st.nextToken());
|
||||
}
|
||||
}
|
||||
in.close();
|
||||
} catch (IOException e) { /* Handle exceptions */ }
|
||||
}
|
||||
|
||||
private static void debug() {
|
||||
int i = 0;
|
||||
|
||||
System.out.println("processnum " + processnum);
|
||||
System.out.println("meandevm " + meanDev);
|
||||
System.out.println("standdev " + standardDev);
|
||||
int size = processVector.size();
|
||||
for (i = 0; i < size; i++) {
|
||||
sProcess process = (sProcess) processVector.elementAt(i);
|
||||
System.out.println("process " + i + " " + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.numblocked);
|
||||
}
|
||||
System.out.println("runtime " + runtime);
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
int i = 0;
|
||||
|
||||
if (args.length != 1) {
|
||||
System.out.println("Usage: 'java Scheduling <INIT FILE>'");
|
||||
System.exit(-1);
|
||||
}
|
||||
File f = new File(args[0]);
|
||||
if (!(f.exists())) {
|
||||
System.out.println("Scheduling: error, file '" + f.getName() + "' does not exist.");
|
||||
System.exit(-1);
|
||||
}
|
||||
if (!(f.canRead())) {
|
||||
System.out.println("Scheduling: error, read of " + f.getName() + " failed.");
|
||||
System.exit(-1);
|
||||
}
|
||||
System.out.println("Working...");
|
||||
Init(args[0]);
|
||||
if (processVector.size() < processnum) {
|
||||
i = 0;
|
||||
while (processVector.size() < processnum) {
|
||||
double X = Common.R1();
|
||||
while (X == -1.0) {
|
||||
X = Common.R1();
|
||||
}
|
||||
X = X * standardDev;
|
||||
int cputime = (int) X + meanDev;
|
||||
processVector.addElement(new sProcess(cputime,i*100,0,0,0));
|
||||
i++;
|
||||
}
|
||||
}
|
||||
result = SchedulingAlgorithm.Run(runtime, processVector, result);
|
||||
try {
|
||||
//BufferedWriter out = new BufferedWriter(new FileWriter(resultsFile));
|
||||
PrintStream out = new PrintStream(new FileOutputStream(resultsFile));
|
||||
out.println("Scheduling Type: " + result.schedulingType);
|
||||
out.println("Scheduling Name: " + result.schedulingName);
|
||||
out.println("Simulation Run Time: " + result.compuTime);
|
||||
out.println("Mean: " + meanDev);
|
||||
out.println("Standard Deviation: " + standardDev);
|
||||
out.println("Process #\tCPU Time\tIO Blocking\tCPU Completed\tCPU Blocked");
|
||||
for (i = 0; i < processVector.size(); i++) {
|
||||
sProcess process = (sProcess) processVector.elementAt(i);
|
||||
out.print(Integer.toString(i));
|
||||
if (i < 100) { out.print("\t\t"); } else { out.print("\t"); }
|
||||
out.print(Integer.toString(process.cputime));
|
||||
if (process.cputime < 100) { out.print(" (ms)\t\t"); } else { out.print(" (ms)\t"); }
|
||||
out.print(Integer.toString(process.ioblocking));
|
||||
if (process.ioblocking < 100) { out.print(" (ms)\t\t"); } else { out.print(" (ms)\t"); }
|
||||
out.print(Integer.toString(process.cpudone));
|
||||
if (process.cpudone < 100) { out.print(" (ms)\t\t"); } else { out.print(" (ms)\t"); }
|
||||
out.println(process.numblocked + " times");
|
||||
}
|
||||
out.close();
|
||||
} catch (IOException e) { /* Handle exceptions */ }
|
||||
System.out.println("Completed.");
|
||||
}
|
||||
}
|
||||
|
||||
BIN
EOPSY/lab3/task3/work/SchedulingAlgorithm.class
Normal file
70
EOPSY/lab3/task3/work/SchedulingAlgorithm.java
Normal file
@ -0,0 +1,70 @@
|
||||
// Run() is called from Scheduling.main() and is where
|
||||
// the scheduling algorithm written by the user resides.
|
||||
// User modification should occur within the Run() function.
|
||||
|
||||
import java.util.Vector;
|
||||
import java.io.*;
|
||||
|
||||
public class SchedulingAlgorithm {
|
||||
|
||||
public static Results Run(int runtime, Vector processVector, Results result) {
|
||||
int i = 0;
|
||||
int comptime = 0;
|
||||
int currentProcess = 0;
|
||||
int previousProcess = 0;
|
||||
int size = processVector.size();
|
||||
int completed = 0;
|
||||
String resultsFile = "Summary-Processes";
|
||||
|
||||
result.schedulingType = "Batch (Nonpreemptive)";
|
||||
result.schedulingName = "First-Come First-Served";
|
||||
try {
|
||||
//BufferedWriter out = new BufferedWriter(new FileWriter(resultsFile));
|
||||
//OutputStream out = new FileOutputStream(resultsFile);
|
||||
PrintStream out = new PrintStream(new FileOutputStream(resultsFile));
|
||||
sProcess process = (sProcess) processVector.elementAt(currentProcess);
|
||||
out.println("Process: " + currentProcess + " registered... (" + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.cpudone + ")");
|
||||
while (comptime < runtime) {
|
||||
if (process.cpudone == process.cputime) {
|
||||
completed++;
|
||||
out.println("Process: " + currentProcess + " completed... (" + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.cpudone + ")");
|
||||
if (completed == size) {
|
||||
result.compuTime = comptime;
|
||||
out.close();
|
||||
return result;
|
||||
}
|
||||
for (i = size - 1; i >= 0; i--) {
|
||||
process = (sProcess) processVector.elementAt(i);
|
||||
if (process.cpudone < process.cputime) {
|
||||
currentProcess = i;
|
||||
}
|
||||
}
|
||||
process = (sProcess) processVector.elementAt(currentProcess);
|
||||
out.println("Process: " + currentProcess + " registered... (" + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.cpudone + ")");
|
||||
}
|
||||
if (process.ioblocking == process.ionext) {
|
||||
out.println("Process: " + currentProcess + " I/O blocked... (" + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.cpudone + ")");
|
||||
process.numblocked++;
|
||||
process.ionext = 0;
|
||||
previousProcess = currentProcess;
|
||||
for (i = size - 1; i >= 0; i--) {
|
||||
process = (sProcess) processVector.elementAt(i);
|
||||
if (process.cpudone < process.cputime && previousProcess != i) {
|
||||
currentProcess = i;
|
||||
}
|
||||
}
|
||||
process = (sProcess) processVector.elementAt(currentProcess);
|
||||
out.println("Process: " + currentProcess + " registered... (" + process.cputime + " " + process.ioblocking + " " + process.cpudone + " " + process.cpudone + ")");
|
||||
}
|
||||
process.cpudone++;
|
||||
if (process.ioblocking > 0) {
|
||||
process.ionext++;
|
||||
}
|
||||
comptime++;
|
||||
}
|
||||
out.close();
|
||||
} catch (IOException e) { /* Handle exceptions */ }
|
||||
result.compuTime = comptime;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
30
EOPSY/lab3/task3/work/Summary-Processes
Normal file
@ -0,0 +1,30 @@
|
||||
Process: 0 registered... (2001 500 0 0)
|
||||
Process: 0 I/O blocked... (2001 500 500 500)
|
||||
Process: 1 registered... (2001 500 0 0)
|
||||
Process: 1 I/O blocked... (2001 500 500 500)
|
||||
Process: 0 registered... (2001 500 500 500)
|
||||
Process: 0 I/O blocked... (2001 500 1000 1000)
|
||||
Process: 1 registered... (2001 500 500 500)
|
||||
Process: 1 I/O blocked... (2001 500 1000 1000)
|
||||
Process: 0 registered... (2001 500 1000 1000)
|
||||
Process: 0 I/O blocked... (2001 500 1500 1500)
|
||||
Process: 1 registered... (2001 500 1000 1000)
|
||||
Process: 1 I/O blocked... (2001 500 1500 1500)
|
||||
Process: 0 registered... (2001 500 1500 1500)
|
||||
Process: 0 I/O blocked... (2001 500 2000 2000)
|
||||
Process: 1 registered... (2001 500 1500 1500)
|
||||
Process: 1 I/O blocked... (2001 500 2000 2000)
|
||||
Process: 0 registered... (2001 500 2000 2000)
|
||||
Process: 0 completed... (2001 500 2001 2001)
|
||||
Process: 1 registered... (2001 500 2000 2000)
|
||||
Process: 1 completed... (2001 500 2001 2001)
|
||||
Process: 2 registered... (2001 500 0 0)
|
||||
Process: 2 I/O blocked... (2001 500 500 500)
|
||||
Process: 2 registered... (2001 500 500 500)
|
||||
Process: 2 I/O blocked... (2001 500 1000 1000)
|
||||
Process: 2 registered... (2001 500 1000 1000)
|
||||
Process: 2 I/O blocked... (2001 500 1500 1500)
|
||||
Process: 2 registered... (2001 500 1500 1500)
|
||||
Process: 2 I/O blocked... (2001 500 2000 2000)
|
||||
Process: 2 registered... (2001 500 2000 2000)
|
||||
Process: 2 completed... (2001 500 2001 2001)
|
||||
9
EOPSY/lab3/task3/work/Summary-Results
Normal file
@ -0,0 +1,9 @@
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 6003
|
||||
Mean: 2001
|
||||
Standard Deviation: 0
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 2001 (ms) 500 (ms) 2001 (ms) 4 times
|
||||
1 2001 (ms) 500 (ms) 2001 (ms) 4 times
|
||||
2 2001 (ms) 500 (ms) 2001 (ms) 4 times
|
||||
8
EOPSY/lab3/task3/work/description.txt
Normal file
@ -0,0 +1,8 @@
|
||||
The scheduling simulator illustrates the behavior of scheduling
|
||||
algorithms against a simulated mix of process loads. The user can
|
||||
specify the number of processes, the mean and standard deviation
|
||||
for compute time and I/O blocking time for each process, and the
|
||||
duration of the simulation. At the end of the simulation a
|
||||
statistical summary is presented. Students may also be asked to
|
||||
write their own scheduling algorithms to be used with process
|
||||
loads defined by the instructor.
|
||||
512
EOPSY/lab3/task3/work/install_unix.html
Normal file
@ -0,0 +1,512 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>MOSS | Scheduling Simlulator | Installation |
|
||||
|
||||
|
||||
Unix
|
||||
|
||||
</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<h1>MOSS Scheduling Simulator
|
||||
|
||||
|
||||
<br>Installation on Unix/Linux/Solaris/HP-UX Systems</h1>
|
||||
|
||||
|
||||
<h2>Purpose</h2>
|
||||
|
||||
<p>
|
||||
This document provides instructions for the installation
|
||||
of the MOSS Scheduling Simulator on
|
||||
|
||||
|
||||
Unix
|
||||
|
||||
operating systems. This procedure should be the same or similar on
|
||||
|
||||
|
||||
Unix, Linux, Solaris, HP-UX and other Unix-compatible
|
||||
|
||||
systems.
|
||||
The MOSS software
|
||||
is designed for use with
|
||||
<a href="http://www.cs.vu.nl/~ast/">Andrew S. Tanenbaum</a>,
|
||||
<a href="http://vig.prenhall.com/catalog/academic/product/1,4096,0130313580,00.html">Modern Operating Systems, 2nd Edition</a>
|
||||
(<a href="http://www.prenhall.com/">Prentice Hall</a>, 2001).
|
||||
The Scheduling Simulator was written by
|
||||
<a href="http://www.cs.earlham.edu/~odo/">Alex Reeder</a>
|
||||
(<a href="mailto:alexr@e-sa.org"><i>alexr@e-sa.org</i></a>).
|
||||
This installation guide was written by
|
||||
<a href="http://www.ontko.com/~rayo/">Ray Ontko</a>
|
||||
(<a href="mailto:rayo@ontko.com"><i>rayo@ontko.com</i></a>).
|
||||
<p>
|
||||
This installation guide only provides information about installing
|
||||
the software and testing the configuration for
|
||||
|
||||
Unix-like operating systems. To install on Windows
|
||||
operating systems, please read the
|
||||
<a href="install_windows.html">Installation Guide for
|
||||
Win95/98/Me/NT/2000 Systems</a>.
|
||||
|
||||
|
||||
For more detailed information about the simulator, please read the
|
||||
<a href="user_guide.html">User Guide</a>.
|
||||
</p>
|
||||
<h2>Requirements</h2>
|
||||
|
||||
The following software components are required
|
||||
to install and use the MOSS Scheduling
|
||||
Simulator.
|
||||
<ul>
|
||||
|
||||
|
||||
<li>X-windows environment for running Java Application Window Toolkit (AWT) programs
|
||||
|
||||
<li>Java Development Kit (JDK) 1.0 or greater
|
||||
<li>Text program editor (e.g., notepad)
|
||||
</ul>
|
||||
|
||||
<h2>Pre-Installation</h2>
|
||||
<p>
|
||||
Before installation, you should verify:
|
||||
</p>
|
||||
<ul>
|
||||
<li>that you have a working java runtime environment,
|
||||
<li>that you have a working java development environment, and
|
||||
<li>that the working directory is in the classpath for the runtime environment.
|
||||
</ul>
|
||||
<p>
|
||||
If you're using a standard command-line java compiler, the following
|
||||
instructions will help determine if your environment is configured
|
||||
correctly.
|
||||
</p>
|
||||
<ol>
|
||||
<li>Verify that you have java installed and configured in your environment.
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
$ java -version
|
||||
</pre></blockquote>
|
||||
|
||||
You should see a message like this with possibly a different version number.
|
||||
<blockquote><pre>
|
||||
java version "1.1.8"
|
||||
</pre></blockquote>
|
||||
If you get a message like:
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
java: Command not found.
|
||||
</pre></blockquote>
|
||||
|
||||
Then java may not be installed on your system, or may not be configured
|
||||
for your use.
|
||||
<p>
|
||||
If you think that Java may already be installed on your system
|
||||
but may not be in your "path", you can find it by
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
$ find /usr -name java -print
|
||||
</pre></blockquote>
|
||||
On my system, for example, the following is returned.
|
||||
<blockquote><pre>
|
||||
/usr/lib/netscape/477/communicator/java
|
||||
/usr/lib/netscape/477/netscape/java
|
||||
/usr/lib/jdk1.1/bin/java
|
||||
/usr/lib/jdk1.1/bin/ia32/green_threads/java
|
||||
/usr/share/java
|
||||
/usr/bin/java
|
||||
/usr/src/kernel-source-2.2.17/include/config/binfmt/java
|
||||
</pre></blockquote>
|
||||
On my system, I also searched for "javac" and found
|
||||
that it exists in /usr/bin/java. I'll use this jdk for my
|
||||
installation.
|
||||
|
||||
<p>
|
||||
If Java isn't available on your system, you should check with
|
||||
your instructor or system administrator. If you administer your
|
||||
own system, then you should be able to find a copy of Java
|
||||
for your operating system.
|
||||
<p>
|
||||
If you find that java is installed but not configured for
|
||||
your use, then perhaps you need to add it to your path. Consult
|
||||
your instructor or system administrator if you need help adding this
|
||||
to your path.
|
||||
</p>
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Verify that the java compiler is installed and configured in
|
||||
your environment.
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
$ javac
|
||||
</pre></blockquote>
|
||||
|
||||
If you're using a standard java command-line compiler, you should
|
||||
see a message similar to this.
|
||||
<blockquote><pre>
|
||||
use: javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-deprecation][-d dir][-J<runtime flag>] file.java...
|
||||
</pre></blockquote>
|
||||
If you get a message like:
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
javac: Command not found.
|
||||
</pre></blockquote>
|
||||
|
||||
then the java compiler may not be installed on your system, or
|
||||
may not be configured for your use. Consult your instructor
|
||||
or system administrator.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Verify that that the current directory is in your classpath.
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
$ echo $CLASSPATH
|
||||
</pre></blockquote>
|
||||
You should see a list of directories separated by colons (":")
|
||||
or possibly just a blank line. If you don't see the directory
|
||||
"." (a single period, which stands for the current directory), then
|
||||
you should add it to the claspath.
|
||||
<p>
|
||||
Determine which shell you're using:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
$ echo $SHELL
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
If you're using sh, ksh, or bash:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
$ CLASSPATH=.:$CLASSPATH
|
||||
$ export CLASSPATH
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
If you're using csh, or tcsh:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
% set CLASSPATH=.:$CLASSPATH
|
||||
</pre></blockquote>
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
</ol>
|
||||
<p>
|
||||
If you have a working java runtime environment, a working java
|
||||
compiler, and the current directory is in your path, then you're
|
||||
ready to proceed with the installation.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Installation</h2>
|
||||
|
||||
Installation of the software can be accomplished with
|
||||
these simple steps:
|
||||
<ol>
|
||||
<li>
|
||||
|
||||
|
||||
Create a directory in which you wish to install the
|
||||
simulator (e.g., "moss/sched").
|
||||
<blockquote><pre>
|
||||
$ cd
|
||||
$ mkdir moss
|
||||
$ cd moss
|
||||
$ mkdir sched
|
||||
$ cd sched
|
||||
</pre></blockquote>
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
Download the compressed tar archive (sched.tgz) into
|
||||
the directory.
|
||||
The latest release for this file can always be found at
|
||||
<a href="http://www.ontko.com/moss/sched/sched.tgz">http://www.ontko.com/moss/sched/sched.tgz</a>.
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>
|
||||
|
||||
|
||||
Expand the compressed tar archive.
|
||||
<blockquote><pre>
|
||||
$ tar -xzf sched.tgz
|
||||
</pre></blockquote>
|
||||
or
|
||||
<blockquote><pre>
|
||||
$ gunzip sched.tgz
|
||||
$ tar xf sched.tar
|
||||
</pre></blockquote>
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
</ol>
|
||||
<h2>Files</h2>
|
||||
<p>
|
||||
The directory should now contain the following files:
|
||||
</p>
|
||||
<table border="1" cellspacing="0">
|
||||
<tr>
|
||||
<th>Files
|
||||
<th>Description
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
|
||||
sched.tgz
|
||||
<td>Compressed tar
|
||||
|
||||
archive which contains all the other files.
|
||||
<tr>
|
||||
<td>Common.java
|
||||
<br>Process.java
|
||||
<br>Results.java
|
||||
<br>Scheduling.java
|
||||
<br>SchedulingAlgorithm.java
|
||||
<br>sProcess.java
|
||||
<td valign="top">
|
||||
Java source files (*.java)
|
||||
<tr>
|
||||
<td>Common.class
|
||||
<br>Process.class
|
||||
<br>Results.class
|
||||
<br>Scheduling.class
|
||||
<br>SchedulingAlgorithm.class
|
||||
<br>sProcess.class
|
||||
<td valign="top">
|
||||
Compiled Java class files (*.class)
|
||||
<tr>
|
||||
<td>scheduling.conf
|
||||
<td>Sample configuration file
|
||||
<tr>
|
||||
<td>install_unix.html
|
||||
<br>install_windows.html
|
||||
<br>user_guide.html
|
||||
<td valign="top">
|
||||
Documentation
|
||||
<tr>
|
||||
<td>COPYING.TXT</td>
|
||||
<td>Gnu General Public License: Terms and Conditions
|
||||
for Copying, Distribution, and Modification
|
||||
</table>
|
||||
|
||||
<h2>Compilation</h2>
|
||||
|
||||
<p>
|
||||
The distribution includes compiled class files as
|
||||
well as the source java files. You should not need
|
||||
to recompile unless you decide to change the code.
|
||||
If you wish to compile the code,
|
||||
the following commands should work if you're using
|
||||
a Java compiler that accepts the normal "javac" command
|
||||
line.
|
||||
|
||||
|
||||
<p>
|
||||
To determine which shell you're using:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
$ echo $SHELL
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
If you're using sh, ksh, bash:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
$ CLASSPATH=.
|
||||
$ export CLASSPATH
|
||||
$ javac -nowarn *.java
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
If you're using csh, tcsh:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
% set CLASSPATH=.
|
||||
% javac -nowarn *.java
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
The <tt>-nowarn</tt> flag supresses warning messges, of which
|
||||
there may be several. For backward compatability we use only
|
||||
those features of Java which have been present from the beginning,
|
||||
some of which are deprecated and are usually reported by the
|
||||
compiler with warning messages.
|
||||
|
||||
<h2>Test</h2>
|
||||
|
||||
<p>
|
||||
To test the program, enter the following commands.
|
||||
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
$ java Scheduling scheduling.conf
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
<p>
|
||||
The program will simply run the simulation based on the
|
||||
information provided in <tt>scheduling.conf</tt> and write its
|
||||
output to the <tt>Summary-Results</tt> and
|
||||
<tt>Summary-Processes</tt> files. You should see the following
|
||||
output.
|
||||
<blockquote><pre>
|
||||
Working...
|
||||
Completed.
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
The simulation configuration information is read from a file called
|
||||
"scheduling.conf".
|
||||
The "scheduling.conf" file looks something like this:
|
||||
<blockquote><pre>
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 1100
|
||||
|
||||
// standard deviation
|
||||
standdev 510
|
||||
|
||||
// process # I/O blocking
|
||||
process 100
|
||||
process 500
|
||||
process 30
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 5000
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
If things are working correctly, the "Summary-Results" file should look
|
||||
something like this:
|
||||
|
||||
<blockquote><pre>
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 2750
|
||||
Mean: 1100
|
||||
Standard Deviation: 510
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 1372 (ms) 100 (ms) 1372 (ms) 13 times
|
||||
1 689 (ms) 500 (ms) 689 (ms) 1 times
|
||||
2 689 (ms) 30 (ms) 689 (ms) 22 times
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
and the "Summary-Processes" file should look something like
|
||||
this:
|
||||
|
||||
<blockquote><pre>
|
||||
Process: 0 registered... (1372 100 0 0)
|
||||
Process: 0 I/O blocked... (1372 100 100 100)
|
||||
Process: 1 registered... (689 500 0 0)
|
||||
Process: 1 I/O blocked... (689 500 500 500)
|
||||
Process: 0 registered... (1372 100 100 100)
|
||||
Process: 0 I/O blocked... (1372 100 200 200)
|
||||
Process: 1 registered... (689 500 500 500)
|
||||
Process: 1 completed... (689 500 689 689)
|
||||
Process: 0 registered... (1372 100 200 200)
|
||||
Process: 0 I/O blocked... (1372 100 300 300)
|
||||
Process: 2 registered... (689 30 0 0)
|
||||
Process: 2 I/O blocked... (689 30 30 30)
|
||||
Process: 0 registered... (1372 100 300 300)
|
||||
Process: 0 I/O blocked... (1372 100 400 400)
|
||||
Process: 2 registered... (689 30 30 30)
|
||||
Process: 2 I/O blocked... (689 30 60 60)
|
||||
Process: 0 registered... (1372 100 400 400)
|
||||
Process: 0 I/O blocked... (1372 100 500 500)
|
||||
Process: 2 registered... (689 30 60 60)
|
||||
Process: 2 I/O blocked... (689 30 90 90)
|
||||
Process: 0 registered... (1372 100 500 500)
|
||||
Process: 0 I/O blocked... (1372 100 600 600)
|
||||
Process: 2 registered... (689 30 90 90)
|
||||
Process: 2 I/O blocked... (689 30 120 120)
|
||||
Process: 0 registered... (1372 100 600 600)
|
||||
Process: 0 I/O blocked... (1372 100 700 700)
|
||||
Process: 2 registered... (689 30 120 120)
|
||||
Process: 2 I/O blocked... (689 30 150 150)
|
||||
Process: 0 registered... (1372 100 700 700)
|
||||
Process: 0 I/O blocked... (1372 100 800 800)
|
||||
Process: 2 registered... (689 30 150 150)
|
||||
Process: 2 I/O blocked... (689 30 180 180)
|
||||
Process: 0 registered... (1372 100 800 800)
|
||||
Process: 0 I/O blocked... (1372 100 900 900)
|
||||
Process: 2 registered... (689 30 180 180)
|
||||
Process: 2 I/O blocked... (689 30 210 210)
|
||||
Process: 0 registered... (1372 100 900 900)
|
||||
Process: 0 I/O blocked... (1372 100 1000 1000)
|
||||
Process: 2 registered... (689 30 210 210)
|
||||
Process: 2 I/O blocked... (689 30 240 240)
|
||||
Process: 0 registered... (1372 100 1000 1000)
|
||||
Process: 0 I/O blocked... (1372 100 1100 1100)
|
||||
Process: 2 registered... (689 30 240 240)
|
||||
Process: 2 I/O blocked... (689 30 270 270)
|
||||
Process: 0 registered... (1372 100 1100 1100)
|
||||
Process: 0 I/O blocked... (1372 100 1200 1200)
|
||||
Process: 2 registered... (689 30 270 270)
|
||||
Process: 2 I/O blocked... (689 30 300 300)
|
||||
Process: 0 registered... (1372 100 1200 1200)
|
||||
Process: 0 I/O blocked... (1372 100 1300 1300)
|
||||
Process: 2 registered... (689 30 300 300)
|
||||
Process: 2 I/O blocked... (689 30 330 330)
|
||||
Process: 0 registered... (1372 100 1300 1300)
|
||||
Process: 0 completed... (1372 100 1372 1372)
|
||||
Process: 2 registered... (689 30 330 330)
|
||||
Process: 2 I/O blocked... (689 30 360 360)
|
||||
Process: 2 registered... (689 30 360 360)
|
||||
Process: 2 I/O blocked... (689 30 390 390)
|
||||
Process: 2 registered... (689 30 390 390)
|
||||
Process: 2 I/O blocked... (689 30 420 420)
|
||||
Process: 2 registered... (689 30 420 420)
|
||||
Process: 2 I/O blocked... (689 30 450 450)
|
||||
Process: 2 registered... (689 30 450 450)
|
||||
Process: 2 I/O blocked... (689 30 480 480)
|
||||
Process: 2 registered... (689 30 480 480)
|
||||
Process: 2 I/O blocked... (689 30 510 510)
|
||||
Process: 2 registered... (689 30 510 510)
|
||||
Process: 2 I/O blocked... (689 30 540 540)
|
||||
Process: 2 registered... (689 30 540 540)
|
||||
Process: 2 I/O blocked... (689 30 570 570)
|
||||
Process: 2 registered... (689 30 570 570)
|
||||
Process: 2 I/O blocked... (689 30 600 600)
|
||||
Process: 2 registered... (689 30 600 600)
|
||||
Process: 2 I/O blocked... (689 30 630 630)
|
||||
Process: 2 registered... (689 30 630 630)
|
||||
Process: 2 I/O blocked... (689 30 660 660)
|
||||
Process: 2 registered... (689 30 660 660)
|
||||
Process: 2 completed... (689 30 689 689)
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
The program and its input and output files are described
|
||||
more fully in the <i>MOSS Scheduling Simulator
|
||||
<a href="user_guide.html">User Guide</a></i>.
|
||||
<p>
|
||||
© Copyright 2001, Prentice-Hall, Inc.
|
||||
This program is free software; it is distributed under the
|
||||
terms of the Gnu General Public License.
|
||||
See <a href="COPYING.TXT">COPYING.TXT</a>,
|
||||
included with this distribution.
|
||||
<p>
|
||||
Please send suggestions, corrections, and comments to
|
||||
Ray Ontko (<A href="mailto:rayo@ontko.com"><i>rayo@ontko.com</i></a>).
|
||||
<p>
|
||||
<i>Last updated: July 7, 2001</i>
|
||||
</body>
|
||||
</html>
|
||||
467
EOPSY/lab3/task3/work/install_windows.html
Normal file
@ -0,0 +1,467 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>MOSS | Scheduling Simlulator | Installation |
|
||||
|
||||
Windows
|
||||
|
||||
|
||||
</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
|
||||
<h1>MOSS Scheduling Simulator
|
||||
|
||||
<br>Installation on Windows 95/98/Me/NT/2000 Systems</h1>
|
||||
|
||||
|
||||
|
||||
<h2>Purpose</h2>
|
||||
|
||||
<p>
|
||||
This document provides instructions for the installation
|
||||
of the MOSS Scheduling Simulator on
|
||||
|
||||
Microsoft Windows
|
||||
|
||||
|
||||
operating systems. This procedure should be the same or similar on
|
||||
|
||||
Windows 95, 98, Me, NT, and 2000
|
||||
|
||||
|
||||
systems.
|
||||
The MOSS software
|
||||
is designed for use with
|
||||
<a href="http://www.cs.vu.nl/~ast/">Andrew S. Tanenbaum</a>,
|
||||
<a href="http://vig.prenhall.com/catalog/academic/product/1,4096,0130313580,00.html">Modern Operating Systems, 2nd Edition</a>
|
||||
(<a href="http://www.prenhall.com/">Prentice Hall</a>, 2001).
|
||||
The Scheduling Simulator was written by
|
||||
<a href="http://www.cs.earlham.edu/~odo/">Alex Reeder</a>
|
||||
(<a href="mailto:alexr@e-sa.org"><i>alexr@e-sa.org</i></a>).
|
||||
This installation guide was written by
|
||||
<a href="http://www.ontko.com/~rayo/">Ray Ontko</a>
|
||||
(<a href="mailto:rayo@ontko.com"><i>rayo@ontko.com</i></a>).
|
||||
<p>
|
||||
This installation guide only provides information about installing
|
||||
the software and testing the configuration for
|
||||
|
||||
|
||||
Windows operating systems. To install on Unix-like
|
||||
operating systems, please read the
|
||||
<a href="install_unix.html">Installation Guide for
|
||||
Unix/Linux/Solaris/HP-UX Systems</a>.
|
||||
|
||||
For more detailed information about the simulator, please read the
|
||||
<a href="user_guide.html">User Guide</a>.
|
||||
</p>
|
||||
<h2>Requirements</h2>
|
||||
|
||||
The following software components are required
|
||||
to install and use the MOSS Scheduling
|
||||
Simulator.
|
||||
<ul>
|
||||
|
||||
<li>Microsoft Windows 95, 98, Me, NT, or 2000
|
||||
|
||||
|
||||
<li>Java Development Kit (JDK) 1.0 or greater
|
||||
<li>Text program editor (e.g., notepad)
|
||||
</ul>
|
||||
|
||||
<h2>Pre-Installation</h2>
|
||||
<p>
|
||||
Before installation, you should verify:
|
||||
</p>
|
||||
<ul>
|
||||
<li>that you have a working java runtime environment,
|
||||
<li>that you have a working java development environment, and
|
||||
<li>that the working directory is in the classpath for the runtime environment.
|
||||
</ul>
|
||||
<p>
|
||||
If you're using a standard command-line java compiler, the following
|
||||
instructions will help determine if your environment is configured
|
||||
correctly.
|
||||
</p>
|
||||
<ol>
|
||||
<li>Verify that you have java installed and configured in your environment.
|
||||
|
||||
<blockquote><pre>
|
||||
C:\WINDOWS> java -version
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
You should see a message like this with possibly a different version number.
|
||||
<blockquote><pre>
|
||||
java version "1.1.8"
|
||||
</pre></blockquote>
|
||||
If you get a message like:
|
||||
|
||||
<blockquote><pre>
|
||||
Bad command or file name
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
Then java may not be installed on your system, or may not be configured
|
||||
for your use.
|
||||
<p>
|
||||
If you think that Java may already be installed on your system
|
||||
but may not be in your "path", you can find it by
|
||||
|
||||
choosing Start -> Find -> Files or Folders
|
||||
and enter "java.exe" in the "Named:" field and click the Find Now button.
|
||||
If found, make note of the directory folder in which it resides (e.g.,
|
||||
"C:\jdk1.1.8\bin").
|
||||
<p>
|
||||
While you're at it, also seach for javac.exe to see if the Java
|
||||
compiler is installed and whether it's in the same directory as
|
||||
the java.exe file.
|
||||
|
||||
|
||||
<p>
|
||||
If Java isn't available on your system, you should check with
|
||||
your instructor or system administrator. If you administer your
|
||||
own system, then you should be able to find a copy of Java
|
||||
for your operating system.
|
||||
<p>
|
||||
If you find that java is installed but not configured for
|
||||
your use, then perhaps you need to add it to your path. Consult
|
||||
your instructor or system administrator if you need help adding this
|
||||
to your path.
|
||||
</p>
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Verify that the java compiler is installed and configured in
|
||||
your environment.
|
||||
|
||||
<blockquote><pre>
|
||||
C:\WINDOWS> javac
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
If you're using a standard java command-line compiler, you should
|
||||
see a message similar to this.
|
||||
<blockquote><pre>
|
||||
use: javac [-g][-O][-debug][-depend][-nowarn][-verbose][-classpath path][-nowrite][-deprecation][-d dir][-J<runtime flag>] file.java...
|
||||
</pre></blockquote>
|
||||
If you get a message like:
|
||||
|
||||
<blockquote><pre>
|
||||
Bad command or file name
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
then the java compiler may not be installed on your system, or
|
||||
may not be configured for your use. Consult your instructor
|
||||
or system administrator.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Verify that that the current directory is in your classpath.
|
||||
|
||||
<blockquote><pre>
|
||||
C:\WINDOWS> echo "%CLASSPATH%"
|
||||
</pre></blockquote>
|
||||
You should see a list of directories separated by semi-colons (";")
|
||||
or possibly just "". If you don't see the directory "." (a single
|
||||
period, which stands for the current directory), then you should
|
||||
add it to the classpath.
|
||||
<blockquote><pre>
|
||||
C:\WINDOWS> set CLASSPATH=.;%CLASSPATH%
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
</ol>
|
||||
<p>
|
||||
If you have a working java runtime environment, a working java
|
||||
compiler, and the current directory is in your path, then you're
|
||||
ready to proceed with the installation.
|
||||
</p>
|
||||
|
||||
|
||||
<h2>Installation</h2>
|
||||
|
||||
Installation of the software can be accomplished with
|
||||
these simple steps:
|
||||
<ol>
|
||||
<li>
|
||||
|
||||
Create a directory folder in which you wish to install
|
||||
the simulator (e.g., "C:\moss\sched"). You can do
|
||||
this using the Windows explorer, or from the MS-DOS
|
||||
prompt. To create the directory from the MS-DOS
|
||||
prompt:
|
||||
<blockquote><pre>
|
||||
C:\WINDOWS> cd \
|
||||
C:\> mkdir moss
|
||||
C:\> cd moss
|
||||
C:\moss> mkdir sched
|
||||
C:\moss> cd sched
|
||||
C:\moss\sched>
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>
|
||||
|
||||
Download the self-extracting ZIP archive (sched.exe) into
|
||||
the directory folder.
|
||||
The latest release for this file can always be found at
|
||||
<a href="http://www.ontko.com/moss/sched/sched.exe">http://www.ontko.com/moss/sched/sched.exe</a>.
|
||||
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>
|
||||
|
||||
Double-click on the file you downloaded (sched.exe),
|
||||
or invoke it using Start -> Run..., or invoke it
|
||||
from an MS-DOS command prompt:
|
||||
<blockquote><pre>
|
||||
C:\moss\sched> sched.exe
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
<p><!-- --></p>
|
||||
|
||||
</ol>
|
||||
<h2>Files</h2>
|
||||
<p>
|
||||
The directory should now contain the following files:
|
||||
</p>
|
||||
<table border="1" cellspacing="0">
|
||||
<tr>
|
||||
<th>Files
|
||||
<th>Description
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
sched.exe
|
||||
<td>Self-extracting ZIP
|
||||
|
||||
|
||||
archive which contains all the other files.
|
||||
<tr>
|
||||
<td>Common.java
|
||||
<br>Process.java
|
||||
<br>Results.java
|
||||
<br>Scheduling.java
|
||||
<br>SchedulingAlgorithm.java
|
||||
<br>sProcess.java
|
||||
<td valign="top">
|
||||
Java source files (*.java)
|
||||
<tr>
|
||||
<td>Common.class
|
||||
<br>Process.class
|
||||
<br>Results.class
|
||||
<br>Scheduling.class
|
||||
<br>SchedulingAlgorithm.class
|
||||
<br>sProcess.class
|
||||
<td valign="top">
|
||||
Compiled Java class files (*.class)
|
||||
<tr>
|
||||
<td>scheduling.conf
|
||||
<td>Sample configuration file
|
||||
<tr>
|
||||
<td>install_unix.html
|
||||
<br>install_windows.html
|
||||
<br>user_guide.html
|
||||
<td valign="top">
|
||||
Documentation
|
||||
<tr>
|
||||
<td>COPYING.TXT</td>
|
||||
<td>Gnu General Public License: Terms and Conditions
|
||||
for Copying, Distribution, and Modification
|
||||
</table>
|
||||
|
||||
<h2>Compilation</h2>
|
||||
|
||||
<p>
|
||||
The distribution includes compiled class files as
|
||||
well as the source java files. You should not need
|
||||
to recompile unless you decide to change the code.
|
||||
If you wish to compile the code,
|
||||
the following commands should work if you're using
|
||||
a Java compiler that accepts the normal "javac" command
|
||||
line.
|
||||
|
||||
<blockquote><pre>
|
||||
C:\moss\sched> javac -nowarn *.java
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
|
||||
The <tt>-nowarn</tt> flag supresses warning messges, of which
|
||||
there may be several. For backward compatability we use only
|
||||
those features of Java which have been present from the beginning,
|
||||
some of which are deprecated and are usually reported by the
|
||||
compiler with warning messages.
|
||||
|
||||
<h2>Test</h2>
|
||||
|
||||
<p>
|
||||
To test the program, enter the following commands.
|
||||
|
||||
|
||||
<blockquote><pre>
|
||||
C:\moss\sched> java Scheduling scheduling.conf
|
||||
</pre></blockquote>
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
The program will simply run the simulation based on the
|
||||
information provided in <tt>scheduling.conf</tt> and write its
|
||||
output to the <tt>Summary-Results</tt> and
|
||||
<tt>Summary-Processes</tt> files. You should see the following
|
||||
output.
|
||||
<blockquote><pre>
|
||||
Working...
|
||||
Completed.
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
The simulation configuration information is read from a file called
|
||||
"scheduling.conf".
|
||||
The "scheduling.conf" file looks something like this:
|
||||
<blockquote><pre>
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 1100
|
||||
|
||||
// standard deviation
|
||||
standdev 510
|
||||
|
||||
// process # I/O blocking
|
||||
process 100
|
||||
process 500
|
||||
process 30
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 5000
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
If things are working correctly, the "Summary-Results" file should look
|
||||
something like this:
|
||||
|
||||
<blockquote><pre>
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 2750
|
||||
Mean: 1100
|
||||
Standard Deviation: 510
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 1372 (ms) 100 (ms) 1372 (ms) 13 times
|
||||
1 689 (ms) 500 (ms) 689 (ms) 1 times
|
||||
2 689 (ms) 30 (ms) 689 (ms) 22 times
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
and the "Summary-Processes" file should look something like
|
||||
this:
|
||||
|
||||
<blockquote><pre>
|
||||
Process: 0 registered... (1372 100 0 0)
|
||||
Process: 0 I/O blocked... (1372 100 100 100)
|
||||
Process: 1 registered... (689 500 0 0)
|
||||
Process: 1 I/O blocked... (689 500 500 500)
|
||||
Process: 0 registered... (1372 100 100 100)
|
||||
Process: 0 I/O blocked... (1372 100 200 200)
|
||||
Process: 1 registered... (689 500 500 500)
|
||||
Process: 1 completed... (689 500 689 689)
|
||||
Process: 0 registered... (1372 100 200 200)
|
||||
Process: 0 I/O blocked... (1372 100 300 300)
|
||||
Process: 2 registered... (689 30 0 0)
|
||||
Process: 2 I/O blocked... (689 30 30 30)
|
||||
Process: 0 registered... (1372 100 300 300)
|
||||
Process: 0 I/O blocked... (1372 100 400 400)
|
||||
Process: 2 registered... (689 30 30 30)
|
||||
Process: 2 I/O blocked... (689 30 60 60)
|
||||
Process: 0 registered... (1372 100 400 400)
|
||||
Process: 0 I/O blocked... (1372 100 500 500)
|
||||
Process: 2 registered... (689 30 60 60)
|
||||
Process: 2 I/O blocked... (689 30 90 90)
|
||||
Process: 0 registered... (1372 100 500 500)
|
||||
Process: 0 I/O blocked... (1372 100 600 600)
|
||||
Process: 2 registered... (689 30 90 90)
|
||||
Process: 2 I/O blocked... (689 30 120 120)
|
||||
Process: 0 registered... (1372 100 600 600)
|
||||
Process: 0 I/O blocked... (1372 100 700 700)
|
||||
Process: 2 registered... (689 30 120 120)
|
||||
Process: 2 I/O blocked... (689 30 150 150)
|
||||
Process: 0 registered... (1372 100 700 700)
|
||||
Process: 0 I/O blocked... (1372 100 800 800)
|
||||
Process: 2 registered... (689 30 150 150)
|
||||
Process: 2 I/O blocked... (689 30 180 180)
|
||||
Process: 0 registered... (1372 100 800 800)
|
||||
Process: 0 I/O blocked... (1372 100 900 900)
|
||||
Process: 2 registered... (689 30 180 180)
|
||||
Process: 2 I/O blocked... (689 30 210 210)
|
||||
Process: 0 registered... (1372 100 900 900)
|
||||
Process: 0 I/O blocked... (1372 100 1000 1000)
|
||||
Process: 2 registered... (689 30 210 210)
|
||||
Process: 2 I/O blocked... (689 30 240 240)
|
||||
Process: 0 registered... (1372 100 1000 1000)
|
||||
Process: 0 I/O blocked... (1372 100 1100 1100)
|
||||
Process: 2 registered... (689 30 240 240)
|
||||
Process: 2 I/O blocked... (689 30 270 270)
|
||||
Process: 0 registered... (1372 100 1100 1100)
|
||||
Process: 0 I/O blocked... (1372 100 1200 1200)
|
||||
Process: 2 registered... (689 30 270 270)
|
||||
Process: 2 I/O blocked... (689 30 300 300)
|
||||
Process: 0 registered... (1372 100 1200 1200)
|
||||
Process: 0 I/O blocked... (1372 100 1300 1300)
|
||||
Process: 2 registered... (689 30 300 300)
|
||||
Process: 2 I/O blocked... (689 30 330 330)
|
||||
Process: 0 registered... (1372 100 1300 1300)
|
||||
Process: 0 completed... (1372 100 1372 1372)
|
||||
Process: 2 registered... (689 30 330 330)
|
||||
Process: 2 I/O blocked... (689 30 360 360)
|
||||
Process: 2 registered... (689 30 360 360)
|
||||
Process: 2 I/O blocked... (689 30 390 390)
|
||||
Process: 2 registered... (689 30 390 390)
|
||||
Process: 2 I/O blocked... (689 30 420 420)
|
||||
Process: 2 registered... (689 30 420 420)
|
||||
Process: 2 I/O blocked... (689 30 450 450)
|
||||
Process: 2 registered... (689 30 450 450)
|
||||
Process: 2 I/O blocked... (689 30 480 480)
|
||||
Process: 2 registered... (689 30 480 480)
|
||||
Process: 2 I/O blocked... (689 30 510 510)
|
||||
Process: 2 registered... (689 30 510 510)
|
||||
Process: 2 I/O blocked... (689 30 540 540)
|
||||
Process: 2 registered... (689 30 540 540)
|
||||
Process: 2 I/O blocked... (689 30 570 570)
|
||||
Process: 2 registered... (689 30 570 570)
|
||||
Process: 2 I/O blocked... (689 30 600 600)
|
||||
Process: 2 registered... (689 30 600 600)
|
||||
Process: 2 I/O blocked... (689 30 630 630)
|
||||
Process: 2 registered... (689 30 630 630)
|
||||
Process: 2 I/O blocked... (689 30 660 660)
|
||||
Process: 2 registered... (689 30 660 660)
|
||||
Process: 2 completed... (689 30 689 689)
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
The program and its input and output files are described
|
||||
more fully in the <i>MOSS Scheduling Simulator
|
||||
<a href="user_guide.html">User Guide</a></i>.
|
||||
<p>
|
||||
© Copyright 2001, Prentice-Hall, Inc.
|
||||
This program is free software; it is distributed under the
|
||||
terms of the Gnu General Public License.
|
||||
See <a href="COPYING.TXT">COPYING.TXT</a>,
|
||||
included with this distribution.
|
||||
<p>
|
||||
Please send suggestions, corrections, and comments to
|
||||
Ray Ontko (<A href="mailto:rayo@ontko.com"><i>rayo@ontko.com</i></a>).
|
||||
<p>
|
||||
<i>Last updated: July 7, 2001</i>
|
||||
</body>
|
||||
</html>
|
||||
BIN
EOPSY/lab3/task3/work/sProcess.class
Normal file
15
EOPSY/lab3/task3/work/sProcess.java
Normal file
@ -0,0 +1,15 @@
|
||||
public class sProcess {
|
||||
public int cputime;
|
||||
public int ioblocking;
|
||||
public int cpudone;
|
||||
public int ionext;
|
||||
public int numblocked;
|
||||
|
||||
public sProcess (int cputime, int ioblocking, int cpudone, int ionext, int numblocked) {
|
||||
this.cputime = cputime;
|
||||
this.ioblocking = ioblocking;
|
||||
this.cpudone = cpudone;
|
||||
this.ionext = ionext;
|
||||
this.numblocked = numblocked;
|
||||
}
|
||||
}
|
||||
16
EOPSY/lab3/task3/work/scheduling.conf
Normal file
@ -0,0 +1,16 @@
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 2001
|
||||
|
||||
// standard deviation
|
||||
standdev 0
|
||||
|
||||
// process # I/O blocking
|
||||
process 500
|
||||
process 500
|
||||
process 500
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 10000
|
||||
9
EOPSY/lab3/task3/work/setUp
Executable file
@ -0,0 +1,9 @@
|
||||
echo "Creating ../work subdirectory"
|
||||
mkdir ../work
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d sched.tgz
|
||||
tar -xvf sched.tar
|
||||
rm sched.tar
|
||||
echo ""
|
||||
echo "Now, go to the directory ../work and call 'make'"
|
||||
2
EOPSY/lab3/task3/work/stdout.txt
Normal file
@ -0,0 +1,2 @@
|
||||
Working...
|
||||
Completed.
|
||||
574
EOPSY/lab3/task3/work/user_guide.html
Normal file
@ -0,0 +1,574 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Moss | Scheduling Simulator | User Guide</title>
|
||||
</head>
|
||||
<body bgcolor="#ffffff">
|
||||
<h1>
|
||||
MOSS Scheduling Simulator
|
||||
<br>User Guide</h1>
|
||||
|
||||
<h2>Purpose</h2>
|
||||
|
||||
<p>
|
||||
This document is a user guide for the MOSS
|
||||
Scheduling Simulator. It explains how to use the simulator
|
||||
and describes the various input and output files used
|
||||
by the simulator.
|
||||
The MOSS software
|
||||
is designed for use with
|
||||
<a href="http://www.cs.vu.nl/~ast/">Andrew S. Tanenbaum</a>,
|
||||
<a href="http://vig.prenhall.com/catalog/academic/product/1,4096,0130313580,00.html">Modern Operating Systems, 2nd Edition</a>
|
||||
(<a href="http://www.prenhall.com/">Prentice Hall</a>, 2001).
|
||||
The Scheduling Simulator was written by
|
||||
<a href="http://www.cs.earlham.edu/~odo/">Alex Reeder</a>
|
||||
(<a href="mailto:alexr@e-sa.org"><i>alexr@e-sa.org</i></a>).
|
||||
This user guide was written by
|
||||
<a href="http://www.ontko.com/~rayo/">Ray Ontko</a>
|
||||
(<a href="mailto:rayo@ontko.com"><i>rayo@ontko.com</i></a>).
|
||||
|
||||
<p>
|
||||
This user guide assumes that you have already installed and tested
|
||||
the simulator. If you are looking for installation information,
|
||||
please read the
|
||||
<a href="install_unix.html">Installation Guide for
|
||||
Unix/Linux/Solaris/HP-UX Systems</a> or the
|
||||
<a href="install_windows.html">Installation Guide for
|
||||
Win95/98/Me/NT/2000 Systems</a>.
|
||||
</p>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
<p>
|
||||
The scheduling simulator illustrates the behavior of scheduling
|
||||
algorithms against a simulated mix of process loads. The user can
|
||||
specify the number of processes, the mean and standard deviation
|
||||
for compute time and I/O blocking time for each process, and the
|
||||
duration of the simulation. At the end of the simulation a
|
||||
statistical summary is presented. Students may also be asked to
|
||||
write their own scheduling algorithms to be used with process
|
||||
loads defined by the instructor.
|
||||
|
||||
|
||||
<h2>Running the Simulator</h2>
|
||||
|
||||
<p>
|
||||
The program reads
|
||||
a configuration file (<tt>scheduling.conf</tt>)
|
||||
and writes two output files (<tt>Summary-Results</tt>
|
||||
and <tt>Summary-Processes</tt>).
|
||||
<p>
|
||||
To run the program, enter the following command line.
|
||||
|
||||
<blockquote><pre>
|
||||
$ java Scheduling scheduling.conf
|
||||
</pre></blockquote>
|
||||
|
||||
<p>
|
||||
The program will display "Working..." while the simulation
|
||||
is working, and "Completed." when the simulation is complete.
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
Working...
|
||||
Completed.
|
||||
|
||||
</pre></blockquote>
|
||||
<p>
|
||||
The simulator reads parameters from the configuration file
|
||||
("scheduling.conf").
|
||||
It creates a
|
||||
specified number of processes, each of which blocks for
|
||||
input or output after a number of milliseconds that can be specified
|
||||
for each process. Each process is allowed to run for a
|
||||
randomly generated amount of time, with the amount of time
|
||||
constrained by a specified average (mean) in milliseconds,
|
||||
and standard deviations from that average. The simulation
|
||||
may also be bounded in the total length of its run.
|
||||
<p>
|
||||
After reading the configuration file, the
|
||||
scheduling algorithm then "runs" the processes, causing
|
||||
each to block for input or output after the specified interval
|
||||
until all processes have completed their randomly generated
|
||||
amount of runtime, or until the maximum amount of runtime for
|
||||
the simulation is exceeded.
|
||||
<p>
|
||||
As the simulation proceeds, a log file ("Summary-Processes")
|
||||
is generated which shows the activity of the scheduling algorithm
|
||||
as it considers each process in the process queue.
|
||||
<p>
|
||||
After the simulation halts, a summary report ("Summary-Results")
|
||||
is generated which shows statistics for each process and for the
|
||||
simulation as a whole.
|
||||
</p>
|
||||
|
||||
<h2>The Configuration File</h2>
|
||||
|
||||
<p>
|
||||
The configuration file (<tt>scheduling.conf</tt>)
|
||||
is used to specify various parameters for the
|
||||
simulation, including:
|
||||
</p>
|
||||
<ul>
|
||||
<li>the number of processes,
|
||||
<li>the mean runtime for a process,
|
||||
<li>the standard deviation in runtime for a process,
|
||||
<li>for each process, how long the process runs before it blocks for input or
|
||||
output, and
|
||||
<li>how long the simulation should run.
|
||||
</ul>
|
||||
|
||||
<h3>Configuration File Options</h3>
|
||||
|
||||
<p>There are a number of options which can
|
||||
be specified in the configuration file. These are
|
||||
summarized in the table below.
|
||||
</p>
|
||||
|
||||
<table border="1" cellspacing="0">
|
||||
<tr>
|
||||
<th>Keyword</th>
|
||||
<th>Values</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><tt>numprocess</tt></td>
|
||||
<td valign="top"><i>n</i></td>
|
||||
<td valign="top">The number of processes to create for
|
||||
the simulation.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><tt>meandev</tt></td>
|
||||
<td valign="top"><i>n</i></td>
|
||||
<td valign="top">The average length of time in milliseconds
|
||||
that a process should execute before terminating.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><tt>standdev</tt></td>
|
||||
<td valign="top"><i>n</i></td>
|
||||
<td valign="top">The number of standard deviations from the
|
||||
average length of time a process should execute before terminating.<td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><tt>process</tt></td>
|
||||
<td valign="top"><i>n</i></td>
|
||||
<td valign="top">The amount of time in milliseconds that
|
||||
the process should execute before blocking for input or output.
|
||||
There should be a separate <tt>process</tt> directive for
|
||||
each process specified by the <tt>numprocess</tt> directive.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><tt>runtime</tt></td>
|
||||
<td valign="top"><i>n</i></td>
|
||||
<td valign="top">The maximum amount of time the simulation should run
|
||||
in milliseconds.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Sample Configuration File</h3>
|
||||
<p>
|
||||
The "scheduling.conf" configuration file looks like this:
|
||||
|
||||
<blockquote><pre>
|
||||
// # of Process
|
||||
numprocess 3
|
||||
|
||||
// mean deivation
|
||||
meandev 1100
|
||||
|
||||
// standard deviation
|
||||
standdev 510
|
||||
|
||||
// process # I/O blocking
|
||||
process 100
|
||||
process 500
|
||||
process 30
|
||||
|
||||
// duration of the simulation in milliseconds
|
||||
runtime 5000
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<h2>The Summary-Results File</h2>
|
||||
|
||||
<p>
|
||||
The Summary-Results file contains a summary report describing
|
||||
the simulation and includes one line of summary information
|
||||
for each process. The fields and columns in the report
|
||||
are described in the following table.
|
||||
</p>
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">Scheduling Type:</td>
|
||||
<td valign="top">The type of the scheduling algorithm used.
|
||||
The value displayed is "hard coded" in the SchedulingAlgorithm.java
|
||||
file.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">Scheduling Name:</td>
|
||||
<td valign="top">The name of the scheduling algorithm used.
|
||||
The value displayed is "hard coded" in the SchedulingAlgorithm.java
|
||||
file.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">Simulation Run Time:</td>
|
||||
<td valign="top">The number of milliseconds that the simulation
|
||||
ran. This may be less than or equal to the total amount of
|
||||
time specified by the "runtime" configuration parameter.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">Mean:</td>
|
||||
<td valign="top">The average amount of runtime for the processes
|
||||
as specified by the "meandev" configuration parameter.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">Standard Deviation:</td>
|
||||
<td valign="top">The standard deviation from the average
|
||||
amount of runtime for the processes as specified by the
|
||||
"standdev" configuration parameter.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">Process #</td>
|
||||
<td valign="top">The process number assigned to the process
|
||||
by the simulator. The process number is between 0 and n-1,
|
||||
where n is the number specified by the "numprocess" configuration
|
||||
parameter.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">CPU Time</td>
|
||||
<td valign="top">The randomly generated total runtime for the
|
||||
process in milliseconds. This is determined by the
|
||||
"meandev" and "standdev" parameters in the configuration
|
||||
file.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">IO Blocking</td>
|
||||
<td valign="top">The amount of time the process runs before it
|
||||
blocks for input or output. This is specified for each process
|
||||
by a "process" directive in the configuration file.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">CPU Completed</td>
|
||||
<td valign="top">The amount of runtime in milliseconds completed for
|
||||
the process. Note that this may be less than the CPU Time
|
||||
for the process if the simulator runs out of time as specified
|
||||
by the "runtime" configuration parameter.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top">CPU Blocked</td>
|
||||
<td valign="top">The number of times the process blocked for
|
||||
input or output during the simulation.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Sample Summary-Results File</h3>
|
||||
|
||||
<p>
|
||||
The output "Summary-Results" file looks something like this:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
Scheduling Type: Batch (Nonpreemptive)
|
||||
Scheduling Name: First-Come First-Served
|
||||
Simulation Run Time: 2750
|
||||
Mean: 1100
|
||||
Standard Deviation: 510
|
||||
Process # CPU Time IO Blocking CPU Completed CPU Blocked
|
||||
0 1372 (ms) 100 (ms) 1372 (ms) 13 times
|
||||
1 689 (ms) 500 (ms) 689 (ms) 1 times
|
||||
2 689 (ms) 30 (ms) 689 (ms) 22 times
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<h2>The Summary-Processes File</h2>
|
||||
|
||||
<p>
|
||||
The Summary-Processes file contains a log of the actions
|
||||
taken by the scheduling algorithm as it considers each
|
||||
process in the scheduling queue.
|
||||
</p>
|
||||
<p>
|
||||
Each line in the log file is of the following form:
|
||||
<blockquote><pre>
|
||||
Process: <i>process-number</i> <i>process-status</i>... (<i>cpu-time</i> <i>block-time</i> <i>accumulated-time</i> <i>accumulated-time</i>)
|
||||
</pre></blockquote>
|
||||
<p>
|
||||
The fields in the line are described in the table below.
|
||||
</p>
|
||||
|
||||
<table border="1">
|
||||
<tr>
|
||||
<th>Field</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i>process-number</i></td>
|
||||
<td valign="top">The process number assigned to the process by the simulator.
|
||||
This is a number between 0 and n-1, where n is the
|
||||
value specified for the "numprocess" configuration parameter.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i>process-status</i></td>
|
||||
<td valign="top">The status of the process at this point
|
||||
in time. If "registered" then the process is under consideration
|
||||
by the scheduling algorithm. If "I/O blocked", then the
|
||||
scheduling algorithm has noticed that the process is blocked
|
||||
for input or output.
|
||||
If "completed", then the scheduling algorithm has noticed
|
||||
that the process has met or exceeded its allocated execution
|
||||
time.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i>cpu-time</i></td>
|
||||
<td valign="top">The total amount of run time allowed for this
|
||||
process. This number is randomly generated for the process
|
||||
based on the
|
||||
"meandev" and "standdev" values specified in the configuration
|
||||
file.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i>block-time</i></td>
|
||||
<td valign="top">The amount of time in milliseconds to execute
|
||||
before blocking process. This number is specified for the process
|
||||
by the "process" directive in the configuration file.</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td valign="top"><i>accumulated-time</i></td>
|
||||
<td valign="top">The total amount of time process has executed in
|
||||
milliseconds. (This number appears twice in the log file; one
|
||||
should be removed).
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
<h3>Sample Summary-Processes File</h3>
|
||||
|
||||
<p>
|
||||
The output "Summary-Processes" file looks something like this:
|
||||
</p>
|
||||
<blockquote><pre>
|
||||
Process: 0 registered... (1372 100 0 0)
|
||||
Process: 0 I/O blocked... (1372 100 100 100)
|
||||
Process: 1 registered... (689 500 0 0)
|
||||
Process: 1 I/O blocked... (689 500 500 500)
|
||||
Process: 0 registered... (1372 100 100 100)
|
||||
Process: 0 I/O blocked... (1372 100 200 200)
|
||||
Process: 1 registered... (689 500 500 500)
|
||||
Process: 1 completed... (689 500 689 689)
|
||||
Process: 0 registered... (1372 100 200 200)
|
||||
Process: 0 I/O blocked... (1372 100 300 300)
|
||||
Process: 2 registered... (689 30 0 0)
|
||||
Process: 2 I/O blocked... (689 30 30 30)
|
||||
Process: 0 registered... (1372 100 300 300)
|
||||
Process: 0 I/O blocked... (1372 100 400 400)
|
||||
Process: 2 registered... (689 30 30 30)
|
||||
Process: 2 I/O blocked... (689 30 60 60)
|
||||
Process: 0 registered... (1372 100 400 400)
|
||||
Process: 0 I/O blocked... (1372 100 500 500)
|
||||
Process: 2 registered... (689 30 60 60)
|
||||
Process: 2 I/O blocked... (689 30 90 90)
|
||||
Process: 0 registered... (1372 100 500 500)
|
||||
Process: 0 I/O blocked... (1372 100 600 600)
|
||||
Process: 2 registered... (689 30 90 90)
|
||||
Process: 2 I/O blocked... (689 30 120 120)
|
||||
Process: 0 registered... (1372 100 600 600)
|
||||
Process: 0 I/O blocked... (1372 100 700 700)
|
||||
Process: 2 registered... (689 30 120 120)
|
||||
Process: 2 I/O blocked... (689 30 150 150)
|
||||
Process: 0 registered... (1372 100 700 700)
|
||||
Process: 0 I/O blocked... (1372 100 800 800)
|
||||
Process: 2 registered... (689 30 150 150)
|
||||
Process: 2 I/O blocked... (689 30 180 180)
|
||||
Process: 0 registered... (1372 100 800 800)
|
||||
Process: 0 I/O blocked... (1372 100 900 900)
|
||||
Process: 2 registered... (689 30 180 180)
|
||||
Process: 2 I/O blocked... (689 30 210 210)
|
||||
Process: 0 registered... (1372 100 900 900)
|
||||
Process: 0 I/O blocked... (1372 100 1000 1000)
|
||||
Process: 2 registered... (689 30 210 210)
|
||||
Process: 2 I/O blocked... (689 30 240 240)
|
||||
Process: 0 registered... (1372 100 1000 1000)
|
||||
Process: 0 I/O blocked... (1372 100 1100 1100)
|
||||
Process: 2 registered... (689 30 240 240)
|
||||
Process: 2 I/O blocked... (689 30 270 270)
|
||||
Process: 0 registered... (1372 100 1100 1100)
|
||||
Process: 0 I/O blocked... (1372 100 1200 1200)
|
||||
Process: 2 registered... (689 30 270 270)
|
||||
Process: 2 I/O blocked... (689 30 300 300)
|
||||
Process: 0 registered... (1372 100 1200 1200)
|
||||
Process: 0 I/O blocked... (1372 100 1300 1300)
|
||||
Process: 2 registered... (689 30 300 300)
|
||||
Process: 2 I/O blocked... (689 30 330 330)
|
||||
Process: 0 registered... (1372 100 1300 1300)
|
||||
Process: 0 completed... (1372 100 1372 1372)
|
||||
Process: 2 registered... (689 30 330 330)
|
||||
Process: 2 I/O blocked... (689 30 360 360)
|
||||
Process: 2 registered... (689 30 360 360)
|
||||
Process: 2 I/O blocked... (689 30 390 390)
|
||||
Process: 2 registered... (689 30 390 390)
|
||||
Process: 2 I/O blocked... (689 30 420 420)
|
||||
Process: 2 registered... (689 30 420 420)
|
||||
Process: 2 I/O blocked... (689 30 450 450)
|
||||
Process: 2 registered... (689 30 450 450)
|
||||
Process: 2 I/O blocked... (689 30 480 480)
|
||||
Process: 2 registered... (689 30 480 480)
|
||||
Process: 2 I/O blocked... (689 30 510 510)
|
||||
Process: 2 registered... (689 30 510 510)
|
||||
Process: 2 I/O blocked... (689 30 540 540)
|
||||
Process: 2 registered... (689 30 540 540)
|
||||
Process: 2 I/O blocked... (689 30 570 570)
|
||||
Process: 2 registered... (689 30 570 570)
|
||||
Process: 2 I/O blocked... (689 30 600 600)
|
||||
Process: 2 registered... (689 30 600 600)
|
||||
Process: 2 I/O blocked... (689 30 630 630)
|
||||
Process: 2 registered... (689 30 630 630)
|
||||
Process: 2 I/O blocked... (689 30 660 660)
|
||||
Process: 2 registered... (689 30 660 660)
|
||||
Process: 2 completed... (689 30 689 689)
|
||||
|
||||
</pre></blockquote>
|
||||
|
||||
<h2>Suggested Exercises</h2>
|
||||
|
||||
<ol>
|
||||
<li>Create a configuration file in which all processes run
|
||||
an average of 2000 milliseconds with a standard deviation of
|
||||
zero, and which are blocked for input or output every 500 milliseconds.
|
||||
Run the simulation for 10000 milliseconds with 2 processes.
|
||||
Examine the two output files. Try again for 5 processes. Try again for
|
||||
10 processes. Explain what's happening.
|
||||
<p><!-- --></p>
|
||||
<li>Implement a round-robin scheduling algorithm. (Hint:
|
||||
see the Run() method in SchedulingAlgorithm.java).
|
||||
<p><!-- --></p>
|
||||
</ol>
|
||||
|
||||
<h2>To Do</h2>
|
||||
|
||||
<ol>
|
||||
<li>Consider changing the configuration parameter "meandev"
|
||||
to "run_time_average". The word "dev"
|
||||
doesn't belong here. It would be nice if this were
|
||||
the average amount of time a process runs before
|
||||
blocking for input or output instead of the total runtime.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider changing the configuration parameter "standdev"
|
||||
to "run_time_stddev".
|
||||
It would be nice if this were the
|
||||
number of standard deviations from the average time a
|
||||
process runs before blocking for input or output instead
|
||||
of the total runtime.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider renaming the "Run()" method in SchedulingAlgorithm
|
||||
to "run()". By convention in java, method names begin with
|
||||
a lowercase letter. Also, add some internal documentation
|
||||
to SchedulingAlgorithm to facilitate understanding by students
|
||||
and instructors, and add external documentation regarding
|
||||
the implementation of new scheduling algorithms to this user guide.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider adding a configuration parameter for "block_time_average"
|
||||
which would be the average amount of time in milliseconds that a process
|
||||
remains blocked for input or output before resuming execution.
|
||||
This would help eliminate the need for the "process" directive.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider adding a configuration parameter for "block_time_stddev"
|
||||
which would be the number of standard deviations from the average
|
||||
time a process remains blocked for input out output before
|
||||
resuming execution. This would help eliminate the need for the
|
||||
"process" directive.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider adding a configuration parameter for "quantum" which
|
||||
specifies the number of milliseconds that a process is allowed to
|
||||
execute before being re-considered by the scheduling algorithm.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider modifying the format of the Summary-Processes log file.
|
||||
The total cpu time for the process is repeated in the last column
|
||||
and should be eliminated. It would be nice if the total elapsed
|
||||
milliseconds (system clock) were present at the beginning of the line
|
||||
so that we can see when things happened exactly during the simulation.
|
||||
If we switch to the meanings of the various parameters as suggested
|
||||
above, we may want to rethink the overall format of the lines as
|
||||
well.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider adding a configuration parameter for "summary_file" so that
|
||||
the name for the Summary-Results file can be specified
|
||||
in the configuration file.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider adding a configuration parameter for "log_file" so
|
||||
that the name for the Summary-Processes file can be
|
||||
specified in the configuration file.
|
||||
<p><!-- --></p>
|
||||
|
||||
<li>Consider adding a graphical user
|
||||
interface that allowed the user to view the simulation
|
||||
as it proceeded. This might show a summary of the
|
||||
number of blocked processes and executable processes,
|
||||
the percentage of idle time, and even the current status
|
||||
of each process. This might be enabled by a configuration
|
||||
parameter "show_graphics true". A "step" button might
|
||||
allow the simulation to proceed 1000 milliseconds at a
|
||||
time, or a "run" button might allow it to update every
|
||||
1000 milliseconds until the simulation completes. A
|
||||
"reset" button might restart the simulation to its original
|
||||
values, and there might be menu options to allow the user
|
||||
to override the parameter values given in the configuration file.
|
||||
<p><!-- --></p>
|
||||
|
||||
</ol>
|
||||
|
||||
<h2>Copyright</h2>
|
||||
|
||||
© Copyright 2001, Prentice-Hall, Inc.
|
||||
<p>
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
<p>
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
<p>
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program (see <a href="COPYING.TXT">COPYING.TXT</a>);
|
||||
if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
<p>
|
||||
|
||||
Please send suggestions, corrections, and comments to
|
||||
<a href="http://www.ontko.com/~rayo/">Ray Ontko</a>
|
||||
(<a href="mailto:rayo@ontko.com"><i>rayo@ontko.com</i></a>).
|
||||
<p>
|
||||
<i>Last updated: May 23, 2001</i>
|
||||
</body>
|
||||
</html>
|
||||
BIN
EOPSY/lab4/EOPSY_LAB_4_KRZYSZTOF_RUDNICKI.pdf
Normal file
BIN
EOPSY/lab4/report/mm1.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
EOPSY/lab4/report/mm2.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
EOPSY/lab4/report/mm3.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
EOPSY/lab4/report/mm4.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
EOPSY/lab4/report/mm5.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
EOPSY/lab4/report/mm6.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
EOPSY/lab4/report/mm7.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
51
EOPSY/lab4/report/report.aux
Normal file
@ -0,0 +1,51 @@
|
||||
\relax
|
||||
\providecommand\hyper@newdestlabel[2]{}
|
||||
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
|
||||
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
|
||||
\global\let\oldcontentsline\contentsline
|
||||
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
|
||||
\global\let\oldnewlabel\newlabel
|
||||
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
|
||||
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
|
||||
\AtEndDocument{\ifx\hyper@anchor\@undefined
|
||||
\let\contentsline\oldcontentsline
|
||||
\let\newlabel\oldnewlabel
|
||||
\fi}
|
||||
\fi}
|
||||
\global\let\hyper@last\relax
|
||||
\gdef\HyperFirstAtBeginDocument#1{#1}
|
||||
\providecommand\HyField@AuxAddToFields[1]{}
|
||||
\providecommand\HyField@AuxAddToCoFields[2]{}
|
||||
\citation{Page Replacement Algorithms}
|
||||
\citation{Page Replacement Algorithms}
|
||||
\citation{Page Replacement Algorithms}
|
||||
\citation{pageWiki}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Page replacement algorithms}{1}{subsection.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{First in First out}{1}{section*.1}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces PageFault.java file}}{1}{figure.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Optimal Page Replacement}{1}{section*.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Least Recently Used}{1}{section*.3}\protected@file@percent }
|
||||
\citation{mmuWiki}
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Other}{2}{subsection.1.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Memory Management Unit}{2}{section*.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {paragraph}{Page fault}{2}{section*.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {2}Laboratory}{2}{section.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Instruction}{2}{subsection.2.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Configuration}{2}{subsection.2.2}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces memory.conf file}}{3}{figure.2}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces commands file}}{4}{figure.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Procedure}{5}{subsection.2.3}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces tracefile}}{6}{figure.4}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces Very start of application}}{8}{figure.5}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces First step correctly mapped}}{9}{figure.6}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces 16th page correctly mapped}}{10}{figure.7}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces First page fault on 32th step}}{11}{figure.8}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces First in First out, we map page 0 physical to the page we just got page fault on}}{12}{figure.9}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Again first in, first out}}{13}{figure.10}\protected@file@percent }
|
||||
\bibcite{mmuWiki}{1}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Final view of application}}{14}{figure.11}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {3}Finishing comments}{14}{section.3}\protected@file@percent }
|
||||
\bibcite{faultWiki}{2}
|
||||
\bibcite{Page Replacement Algorithms}{3}
|
||||
\bibcite{pageWiki}{4}
|
||||
94
EOPSY/lab4/report/report.fdb_latexmk
Normal file
@ -0,0 +1,94 @@
|
||||
# Fdb version 3
|
||||
["pdflatex"] 1651873378 "report.tex" "report.pdf" "report" 1651873378
|
||||
"/etc/texmf/web2c/texmf.cnf" 1649511474 475 c0e671620eb5563b2130f56340a5fde8 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tcti1000.tfm" 1136768653 2048 3777f70f4372b17e2d3fda2b5684af05 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmti10.tfm" 1136768653 1480 aa8e34af0eb6a2941b776984cf1dfdc4 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb" 1248133631 32080 340ef9bf63678554ee606688e7b5339d ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb" 1248133631 32722 d7379af29a190c3f453aba36302ff5a9 ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb" 1248133631 32362 179c33bbf43f19adbb3825bb4e36e57a ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d ""
|
||||
"/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb" 1248133631 37944 359e864bd06cde3b1cf57bb20757fb06 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1573336935 6902 30fdaf7dc5636b8e3afa306210c45cae ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty" 1572645307 1057 525c2192b5febbd8c1f662c9468335bb ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1576624883 18552 1e1cc7b75da0dfaacce7cdcb27d306bf ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/base/article.cls" 1580683321 20023 e427dd9e17e239bf926ef3aab67fe35e ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd" 1580683321 2471 93c7889092ef3d83d375b915c5381dfe ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd" 1580683321 2470 59e43b502a8bea3a12f4954945302e40 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1580683321 8446 9874cccac5fee462272c582807dbbf56 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1578002852 41601 9cf6c5257b1bc7af01a58859749dd37a ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1580683321 16932 04729abe63b66ec59ea56edcd722b058 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1580683321 9067 1b996612394a52e1efe89c8bfe8a5892 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1579642962 50630 3d9728faf8630190cf601ce2cbe470d9 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1579642962 238752 60dd338d71b6a4ab2192131f73dc908b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1579642962 13244 0070bcab7b5a88187847128d22faf4d8 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1579642962 14134 32b36577d311ddb6522413c7581ee968 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1575152344 22520 c4c2dab203104295e1e618be7e5c0f5b ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def" 1580854751 25404 9d60f463a00d154207ec0048dee27cf0 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg" 1568236792 1830 bbaba8afaf42cc048ec4d4ff73467521 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty" 1568236792 80511 830f3f1d3ab7448dd84233e9c2f6462c ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty" 1568236792 204271 6a0ce6b8dafb6c4a13b9036ab1717c77 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty" 1568236792 77022 32914f01b528131c47be2a1040d3856d ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty" 1574631863 19963 36fd8e818f9f0f32e2db8413d4970122 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575674187 9715 b051d5b493d9fe5f4bc251462d039e5f ""
|
||||
"/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 ""
|
||||
"/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e ""
|
||||
"/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1565080000 2900 1537cc8184ad1792082cd229ecc269f4 ""
|
||||
"/usr/share/texmf/fonts/type1/public/cm-super/sfti1000.pfb" 1565080000 186554 e8f0fa8ca05e038f257a06405232745f ""
|
||||
"/usr/share/texmf/web2c/texmf.cnf" 1581979058 38841 ce3692aa899bb693b90b87eaa5d4d84e ""
|
||||
"/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1649511498 4770781 1ed1abab22da9c3e2cc82e4db562318b ""
|
||||
"/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1649511522 8256308 efb305160d4d659dcd0c4df67bdfa340 ""
|
||||
"mm1.png" 1651872367 13028 31af420353ece32f7494128003dbffaf ""
|
||||
"mm2.png" 1651872375 13116 c3e873b1ba354ba43d7b6eb9470b0bd6 ""
|
||||
"mm3.png" 1651872399 13219 94c9555ab465af789980738d5f1c2536 ""
|
||||
"mm4.png" 1651872411 13219 831ca09a484aef81b028f35bcb2477a5 ""
|
||||
"mm5.png" 1651872418 13185 8d670ae1494b8c40c74135a114fafefa ""
|
||||
"mm6.png" 1651872426 13206 35c1d3862e02fa30a217bc45585960f1 ""
|
||||
"mm7.png" 1651872466 14687 d757d7ec7fd0db9517bbf4d9bce1e180 ""
|
||||
"report.aux" 1651873378 3899 9d93be87e479de6fc8cb4c757de8f751 "pdflatex"
|
||||
"report.out" 1651873378 455 4916b4a3abc871847d3be1481c7d301d "pdflatex"
|
||||
"report.tex" 1651873377 9779 3df555b282997bb28c357aee6eddcac8 ""
|
||||
(generated)
|
||||
"report.pdf"
|
||||
"report.aux"
|
||||
"report.log"
|
||||
"report.out"
|
||||
164
EOPSY/lab4/report/report.fls
Normal file
@ -0,0 +1,164 @@
|
||||
PWD /home/kuchy/Zlew/Studia/NieNotatki/Projekty/nie_inzynierka/Programowanie/EOPSY/eopsy_rudnicki_lab/lab4/report
|
||||
INPUT /etc/texmf/web2c/texmf.cnf
|
||||
INPUT /usr/share/texmf/web2c/texmf.cnf
|
||||
INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf
|
||||
INPUT /var/lib/texmf/web2c/pdftex/pdflatex.fmt
|
||||
INPUT report.tex
|
||||
OUTPUT report.log
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
|
||||
INPUT report.aux
|
||||
INPUT report.aux
|
||||
OUTPUT report.aux
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
INPUT report.out
|
||||
OUTPUT report.pdf
|
||||
INPUT ./report.out
|
||||
INPUT ./report.out
|
||||
OUTPUT report.out
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmti10.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tcti1000.tfm
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd
|
||||
INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd
|
||||
INPUT /var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map
|
||||
INPUT mm1.png
|
||||
INPUT ./mm1.png
|
||||
INPUT ./mm1.png
|
||||
INPUT mm2.png
|
||||
INPUT ./mm2.png
|
||||
INPUT ./mm2.png
|
||||
INPUT mm3.png
|
||||
INPUT ./mm3.png
|
||||
INPUT ./mm3.png
|
||||
INPUT mm4.png
|
||||
INPUT ./mm4.png
|
||||
INPUT ./mm4.png
|
||||
INPUT mm5.png
|
||||
INPUT ./mm5.png
|
||||
INPUT ./mm5.png
|
||||
INPUT mm6.png
|
||||
INPUT ./mm6.png
|
||||
INPUT ./mm6.png
|
||||
INPUT mm7.png
|
||||
INPUT ./mm7.png
|
||||
INPUT ./mm7.png
|
||||
INPUT report.aux
|
||||
INPUT ./report.out
|
||||
INPUT ./report.out
|
||||
INPUT /usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb
|
||||
INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb
|
||||
INPUT /usr/share/texmf/fonts/type1/public/cm-super/sfti1000.pfb
|
||||
436
EOPSY/lab4/report/report.log
Normal file
@ -0,0 +1,436 @@
|
||||
This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2022.4.9) 6 MAY 2022 23:42
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**report.tex
|
||||
(./report.tex
|
||||
LaTeX2e <2020-02-02> patch level 2
|
||||
L3 programming layer <2020-02-14> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
|
||||
Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo
|
||||
File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count167
|
||||
\c@section=\count168
|
||||
\c@subsection=\count169
|
||||
\c@subsubsection=\count170
|
||||
\c@paragraph=\count171
|
||||
\c@subparagraph=\count172
|
||||
\c@figure=\count173
|
||||
\c@table=\count174
|
||||
\abovecaptionskip=\skip47
|
||||
\belowcaptionskip=\skip48
|
||||
\bibindent=\dimen134
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks14
|
||||
)
|
||||
\lst@mode=\count175
|
||||
\lst@gtempboxa=\box45
|
||||
\lst@token=\toks15
|
||||
\lst@length=\count176
|
||||
\lst@currlwidth=\dimen135
|
||||
\lst@column=\count177
|
||||
\lst@pos=\count178
|
||||
\lst@lostspace=\dimen136
|
||||
\lst@width=\dimen137
|
||||
\lst@newlines=\count179
|
||||
\lst@lineno=\count180
|
||||
\lst@maxwidth=\dimen138
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty
|
||||
File: lstmisc.sty 2019/09/10 1.8c (Carsten Heinz)
|
||||
\c@lstnumber=\count181
|
||||
\lst@skipnumbers=\count182
|
||||
\lst@framebox=\box46
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg
|
||||
File: listings.cfg 2019/09/10 1.8c listings configuration
|
||||
))
|
||||
Package: listings 2019/09/10 1.8c (Carsten Heinz)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
|
||||
Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty
|
||||
Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
Package: iftex 2019/11/07 v1.0c TeX engine tests
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty
|
||||
Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty
|
||||
Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO)
|
||||
)
|
||||
Package pdftexcmds Info: \pdf@primitive is available.
|
||||
Package pdftexcmds Info: \pdf@ifprimitive is available.
|
||||
Package pdftexcmds Info: \pdfdraftmode found.
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty
|
||||
Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty
|
||||
Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty
|
||||
Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty
|
||||
Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty
|
||||
Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty
|
||||
Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty
|
||||
Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO)
|
||||
)
|
||||
\@linkdim=\dimen139
|
||||
\Hy@linkcounter=\count183
|
||||
\Hy@pagecounter=\count184
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
|
||||
File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO)
|
||||
Now handling font encoding PD1 ...
|
||||
... no UTF-8 mapping file for font encoding PD1
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty
|
||||
Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty
|
||||
Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO)
|
||||
)
|
||||
\Hy@SavedSpaceFactor=\count185
|
||||
\pdfmajorversion=\count186
|
||||
Package hyperref Info: Hyper figures OFF on input line 4547.
|
||||
Package hyperref Info: Link nesting OFF on input line 4552.
|
||||
Package hyperref Info: Hyper index ON on input line 4555.
|
||||
Package hyperref Info: Plain pages OFF on input line 4562.
|
||||
Package hyperref Info: Backreferencing OFF on input line 4567.
|
||||
Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
|
||||
Package hyperref Info: Bookmarks ON on input line 4800.
|
||||
\c@Hy@tempcnt=\count187
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty
|
||||
\Urlmuskip=\muskip16
|
||||
Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
|
||||
)
|
||||
LaTeX Info: Redefining \url on input line 5159.
|
||||
\XeTeXLinkMargin=\dimen140
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty
|
||||
Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty
|
||||
Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO)
|
||||
))
|
||||
\Fld@menulength=\count188
|
||||
\Field@Width=\dimen141
|
||||
\Fld@charsize=\dimen142
|
||||
Package hyperref Info: Hyper figures OFF on input line 6430.
|
||||
Package hyperref Info: Link nesting OFF on input line 6435.
|
||||
Package hyperref Info: Hyper index ON on input line 6438.
|
||||
Package hyperref Info: backreferencing OFF on input line 6445.
|
||||
Package hyperref Info: Link coloring OFF on input line 6450.
|
||||
Package hyperref Info: Link coloring with OCG OFF on input line 6455.
|
||||
Package hyperref Info: PDF/A mode OFF on input line 6460.
|
||||
LaTeX Info: Redefining \ref on input line 6500.
|
||||
LaTeX Info: Redefining \pageref on input line 6504.
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty
|
||||
Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO)
|
||||
)
|
||||
\Hy@abspage=\count189
|
||||
\c@Item=\count190
|
||||
\c@Hfootnote=\count191
|
||||
)
|
||||
Package hyperref Info: Driver (autodetected): hpdftex.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def
|
||||
File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty
|
||||
Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO)
|
||||
Package atveryend Info: \enddocument detected (standard20110627).
|
||||
)
|
||||
\Fld@listcount=\count192
|
||||
\c@bookmark@seq@number=\count193
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty
|
||||
Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO)
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty
|
||||
Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO)
|
||||
)
|
||||
Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 286.
|
||||
)
|
||||
\Hy@SectionHShift=\skip49
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 105.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen143
|
||||
\Gin@req@width=\dimen144
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty
|
||||
Package: float 2001/11/08 v1.3d Float enhancements (AL)
|
||||
\c@float@type=\count194
|
||||
\float@exts=\toks16
|
||||
\float@box=\box47
|
||||
\@float@everytoks=\toks17
|
||||
\@floatcapt=\box48
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
Package: geometry 2020/01/02 v5.9 Page Geometry
|
||||
(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
|
||||
)
|
||||
\Gm@cnth=\count195
|
||||
\Gm@cntv=\count196
|
||||
\c@Gm@tempcnt=\count197
|
||||
\Gm@bindingoffset=\dimen145
|
||||
\Gm@wd@mp=\dimen146
|
||||
\Gm@odd@mp=\dimen147
|
||||
\Gm@even@mp=\dimen148
|
||||
\Gm@layoutwidth=\dimen149
|
||||
\Gm@layoutheight=\dimen150
|
||||
\Gm@layouthoffset=\dimen151
|
||||
\Gm@layoutvoffset=\dimen152
|
||||
\Gm@dimlist=\toks18
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def
|
||||
File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode
|
||||
\l__kernel_color_stack_int=\count198
|
||||
\l__pdf_internal_box=\box49
|
||||
) (./report.aux)
|
||||
\openout1 = `report.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 7.
|
||||
LaTeX Font Info: ... okay on input line 7.
|
||||
\c@lstlisting=\count199
|
||||
\AtBeginShipoutBox=\box50
|
||||
Package hyperref Info: Link coloring OFF on input line 7.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
|
||||
Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty
|
||||
Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO)
|
||||
) (/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty
|
||||
Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO)
|
||||
)
|
||||
\c@section@level=\count266
|
||||
)
|
||||
LaTeX Info: Redefining \ref on input line 7.
|
||||
LaTeX Info: Redefining \pageref on input line 7.
|
||||
LaTeX Info: Redefining \nameref on input line 7.
|
||||
(./report.out) (./report.out)
|
||||
\@outlinefile=\write3
|
||||
\openout3 = `report.out'.
|
||||
|
||||
(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count267
|
||||
\scratchdimen=\dimen153
|
||||
\scratchbox=\box51
|
||||
\nofMPsegments=\count268
|
||||
\nofMParguments=\count269
|
||||
\everyMPshowfont=\toks19
|
||||
\MPscratchCnt=\count270
|
||||
\MPscratchDim=\dimen154
|
||||
\MPnumerator=\count271
|
||||
\makeMPintoPDFobject=\count272
|
||||
\everyMPtoPDFconversion=\toks20
|
||||
) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 485.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Live
|
||||
))
|
||||
*geometry* driver: auto-detecting
|
||||
*geometry* detected driver: pdftex
|
||||
*geometry* verbose mode - [ preamble ] result:
|
||||
* driver: pdftex
|
||||
* paper: <default>
|
||||
* layout: <same size as paper>
|
||||
* layoutoffset:(h,v)=(0.0pt,0.0pt)
|
||||
* modes:
|
||||
* h-part:(L,W,R)=(90.3375pt, 433.62001pt, 90.3375pt)
|
||||
* v-part:(T,H,B)=(90.3375pt, 614.295pt, 90.3375pt)
|
||||
* \paperwidth=614.295pt
|
||||
* \paperheight=794.96999pt
|
||||
* \textwidth=433.62001pt
|
||||
* \textheight=614.295pt
|
||||
* \oddsidemargin=18.0675pt
|
||||
* \evensidemargin=18.0675pt
|
||||
* \topmargin=-18.9325pt
|
||||
* \headheight=12.0pt
|
||||
* \headsep=25.0pt
|
||||
* \topskip=10.0pt
|
||||
* \footskip=30.0pt
|
||||
* \marginparwidth=65.0pt
|
||||
* \marginparsep=11.0pt
|
||||
* \columnsep=10.0pt
|
||||
* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
|
||||
* \hoffset=0.0pt
|
||||
* \voffset=0.0pt
|
||||
* \mag=1000
|
||||
* \@twocolumnfalse
|
||||
* \@twosidefalse
|
||||
* \@mparswitchfalse
|
||||
* \@reversemarginfalse
|
||||
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
|
||||
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <12> on input line 12.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <8> on input line 12.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <6> on input line 12.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/listings/lstlang1.sty
|
||||
File: lstlang1.sty 2019/09/10 1.8c listings language file
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for OMS+cmr on input line 22.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/omscmr.fd
|
||||
File: omscmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions
|
||||
)
|
||||
LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available
|
||||
(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 22.
|
||||
LaTeX Font Info: Trying to load font information for OML+cmr on input line 27.
|
||||
(/usr/share/texlive/texmf-dist/tex/latex/base/omlcmr.fd
|
||||
File: omlcmr.fd 2019/12/16 v2.5j Standard LaTeX font definitions
|
||||
)
|
||||
LaTeX Font Info: Font shape `OML/cmr/m/it' in size <10> not available
|
||||
(Font) Font shape `OML/cmm/m/it' tried instead on input line 27.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <7> on input line 29.
|
||||
LaTeX Font Info: External font `cmex10' loaded for size
|
||||
(Font) <5> on input line 29.
|
||||
[1
|
||||
|
||||
{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}pdfTeX warning (ext4): destination with the same identifier (name{figure.1}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.62 \subsection
|
||||
{Other}]
|
||||
LaTeX Font Info: Font shape `OML/cmr/m/n' in size <10> not available
|
||||
(Font) Font shape `OML/cmm/m/it' tried instead on input line 102.
|
||||
[2] [3pdfTeX warning (ext4): destination with the same identifier (name{figure.2}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.242 \end{figure}
|
||||
] [4pdfTeX warning (ext4): destination with the same identifier (name{figure.3}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.242 \end{figure}
|
||||
] [5]
|
||||
<mm1.png, id=185, 356.34119pt x 416.44693pt>
|
||||
File: mm1.png Graphic file (type png)
|
||||
<use mm1.png>
|
||||
Package pdftex.def Info: mm1.png used on input line 256.
|
||||
(pdftex.def) Requested size: 433.62001pt x 506.79997pt.
|
||||
[6pdfTeX warning (ext4): destination with the same identifier (name{figure.4}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.257 \end{figure}
|
||||
]
|
||||
<mm2.png, id=242, 356.34119pt x 416.44693pt>
|
||||
File: mm2.png Graphic file (type png)
|
||||
<use mm2.png>
|
||||
Package pdftex.def Info: mm2.png used on input line 260.
|
||||
(pdftex.def) Requested size: 433.62001pt x 506.79997pt.
|
||||
[7]
|
||||
<mm3.png, id=248, 356.34119pt x 416.44693pt>
|
||||
File: mm3.png Graphic file (type png)
|
||||
<use mm3.png>
|
||||
Package pdftex.def Info: mm3.png used on input line 264.
|
||||
(pdftex.def) Requested size: 433.62001pt x 506.79997pt.
|
||||
[8pdfTeX warning (ext4): destination with the same identifier (name{figure.5}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.265 \end{figure}
|
||||
<./mm1.png>]
|
||||
<mm4.png, id=255, 356.34119pt x 416.44693pt>
|
||||
File: mm4.png Graphic file (type png)
|
||||
<use mm4.png>
|
||||
Package pdftex.def Info: mm4.png used on input line 268.
|
||||
(pdftex.def) Requested size: 433.62001pt x 506.79997pt.
|
||||
[9pdfTeX warning (ext4): destination with the same identifier (name{figure.6}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.269 \end{figure}
|
||||
<./mm2.png>]
|
||||
<mm5.png, id=262, 356.34119pt x 416.44693pt>
|
||||
File: mm5.png Graphic file (type png)
|
||||
<use mm5.png>
|
||||
Package pdftex.def Info: mm5.png used on input line 273.
|
||||
(pdftex.def) Requested size: 433.62001pt x 506.79997pt.
|
||||
[10pdfTeX warning (ext4): destination with the same identifier (name{figure.7}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.274 \end{figure}
|
||||
<./mm3.png>]
|
||||
<mm6.png, id=269, 356.34119pt x 416.44693pt>
|
||||
File: mm6.png Graphic file (type png)
|
||||
<use mm6.png>
|
||||
Package pdftex.def Info: mm6.png used on input line 277.
|
||||
(pdftex.def) Requested size: 433.62001pt x 506.79997pt.
|
||||
[11pdfTeX warning (ext4): destination with the same identifier (name{figure.8}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.278 \end{figure}
|
||||
<./mm4.png>]
|
||||
<mm7.png, id=276, 370.65208pt x 389.25624pt>
|
||||
File: mm7.png Graphic file (type png)
|
||||
<use mm7.png>
|
||||
Package pdftex.def Info: mm7.png used on input line 281.
|
||||
(pdftex.def) Requested size: 433.62001pt x 455.41608pt.
|
||||
[12pdfTeX warning (ext4): destination with the same identifier (name{figure.9}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.282 \end{figure}
|
||||
<./mm5.png>] [13pdfTeX warning (ext4): destination with the same identifier (name{figure.10}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.283 \section
|
||||
{Finishing comments} <./mm6.png>] [14pdfTeX warning (ext4): destination with the same identifier (name{figure.11}) has been already used, duplicate ignored
|
||||
|
||||
\AtBegShi@Output ...ipout \box \AtBeginShipoutBox
|
||||
\fi \fi
|
||||
l.291 \bibitem{faultWiki}
|
||||
\href{https://en.wikipedia.org/wiki/Page_fault}{[... <./mm7.png>]
|
||||
Package atveryend Info: Empty hook `BeforeClearDocument' on input line 299.
|
||||
[15]
|
||||
Package atveryend Info: Empty hook `AfterLastShipout' on input line 299.
|
||||
(./report.aux)
|
||||
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 299.
|
||||
Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 299.
|
||||
Package rerunfilecheck Info: File `report.out' has not changed.
|
||||
(rerunfilecheck) Checksum: 4916B4A3ABC871847D3BE1481C7D301D;455.
|
||||
Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 299.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
7738 strings out of 481239
|
||||
114084 string characters out of 5920378
|
||||
628834 words of memory out of 5000000
|
||||
22707 multiletter control sequences out of 15000+600000
|
||||
537316 words of font info for 40 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
34i,6n,42p,226b,1493s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc}</usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr12.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/share/texmf/fonts/type1/public/cm-super/sfti1000.pfb>
|
||||
Output written on report.pdf (15 pages, 205194 bytes).
|
||||
PDF statistics:
|
||||
380 PDF objects out of 1000 (max. 8388607)
|
||||
336 compressed objects within 4 object streams
|
||||
196 named destinations out of 1000 (max. 500000)
|
||||
100 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
8
EOPSY/lab4/report/report.out
Normal file
@ -0,0 +1,8 @@
|
||||
\BOOKMARK [1][-]{section.1}{Introduction}{}% 1
|
||||
\BOOKMARK [2][-]{subsection.1.1}{Page replacement algorithms}{section.1}% 2
|
||||
\BOOKMARK [2][-]{subsection.1.2}{Other}{section.1}% 3
|
||||
\BOOKMARK [1][-]{section.2}{Laboratory}{}% 4
|
||||
\BOOKMARK [2][-]{subsection.2.1}{Instruction}{section.2}% 5
|
||||
\BOOKMARK [2][-]{subsection.2.2}{Configuration}{section.2}% 6
|
||||
\BOOKMARK [2][-]{subsection.2.3}{Procedure}{section.2}% 7
|
||||
\BOOKMARK [1][-]{section.3}{Finishing comments}{}% 8
|
||||
BIN
EOPSY/lab4/report/report.pdf
Normal file
BIN
EOPSY/lab4/report/report.synctex.gz
Normal file
299
EOPSY/lab4/report/report.tex
Normal file
@ -0,0 +1,299 @@
|
||||
\documentclass{article}
|
||||
\usepackage{listings}
|
||||
\usepackage{hyperref}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{float}
|
||||
\usepackage[margin=1.25in]{geometry}
|
||||
\begin{document}
|
||||
\title{EOPSY Lab 4 Report}
|
||||
\author{Krzysztof Rudnicki, 307585}
|
||||
\date{\today}
|
||||
\maketitle
|
||||
\section{Introduction}
|
||||
\subsection{Page replacement algorithms}
|
||||
\paragraph{First in First out}
|
||||
What page replacament algorithm is being used? \\
|
||||
We use FIFO (First in First out) page replacement algorithm for those laboratories as indicated
|
||||
by the PageFault.java file line 18
|
||||
\begin{figure}[H]
|
||||
\caption{PageFault.java file}
|
||||
\begin{lstlisting}[language=Java]
|
||||
[...]
|
||||
public class PageFault {
|
||||
|
||||
/**
|
||||
* The page replacement algorithm for the memory management sumulator.
|
||||
* This method gets called whenever a page needs to be replaced.
|
||||
* <p>
|
||||
* The page replacement algorithm included with the simulator is
|
||||
* FIFO (first-in first-out). A while or for loop should be used
|
||||
* to search through the current memory contents for a canidate
|
||||
* replacement page. In the case of FIFO the while loop is used
|
||||
* to find the proper page while making sure that virtPageNum is
|
||||
* not exceeded.
|
||||
[...]
|
||||
\end{lstlisting}
|
||||
\end{figure}
|
||||
All pages are stored in memory in a queue. Oldest page (First that came in) is
|
||||
in front of this queue. \\ When we need to replace the page we remove the page that
|
||||
is first in queue (so the one that came in as a first one, first in, first out)
|
||||
\\
|
||||
It is easy to explain and implement but in practical application it performs
|
||||
poorly. It is still used but usually we use modified version of it.
|
||||
\cite{Page Replacement Algorithms}
|
||||
\paragraph{Optimal Page Replacement}
|
||||
We replace pages which in the future will not be used for the longest time.
|
||||
This is purely theoretical algorithm. It is perfect but not doable in practice
|
||||
since operating systems can not know future requests. \\
|
||||
It is used as a benchmark against which we compare other algorithms.
|
||||
\cite{Page Replacement Algorithms}
|
||||
\paragraph{Least Recently Used}
|
||||
We replace page which was not used for the longest time. \\
|
||||
It is based on the idea that we will in future work on pages which we used
|
||||
heavily in the past. In theory its performance can be close to optimal one but
|
||||
in practice it is expensive to implement. \\
|
||||
Most expensive way of implementing this algorithm is using linked lists. Most
|
||||
recently used pages in front, least recently used in the back. Every time we
|
||||
reference memory we have to move elements in list which takes a lot of time. \\
|
||||
We can also use operating system counter \\
|
||||
This algorithm is often used in different cheaper modified versions.
|
||||
\cite{Page Replacement Algorithms}
|
||||
\cite{pageWiki}
|
||||
\subsection{Other}
|
||||
\paragraph{Memory Management Unit}
|
||||
Hardware unit which translates virtual memory to physical one.
|
||||
\cite{mmuWiki}
|
||||
\paragraph{Page fault}
|
||||
Exception raised when process wants to access page without preparations.
|
||||
Preparation consists of adding the mapping to process's virtual address space
|
||||
and/or loading page from a disk. MMU detects the fault but it is up to kernel
|
||||
and/or loading page from a disk.
|
||||
|
||||
\section{Laboratory}
|
||||
\subsection{Instruction}
|
||||
\begin{enumerate}
|
||||
\item Map 8 pages of physical memory to the first 8 pages of virtual
|
||||
memory
|
||||
\item Go through each virtual page and read from one virtual memory
|
||||
address
|
||||
\end{enumerate}
|
||||
\subsection{Configuration}
|
||||
In memory.conf file I changed the memset and mapped first 8 pages of virtual
|
||||
memory to first 8 pages of physical memory (we could use any physical memory
|
||||
pages we wanted so I settled for this for sake of simplicity)
|
||||
\begin{figure}[H]
|
||||
\caption{memory.conf file}
|
||||
\begin{lstlisting}
|
||||
// memset virt page # physical page # R (read from)
|
||||
// M (modified) inMemTime (ns) lastTouchTime (ns)
|
||||
memset 0 0 0 0 0 0
|
||||
memset 1 1 0 0 0 0
|
||||
memset 2 2 0 0 0 0
|
||||
memset 3 3 0 0 0 0
|
||||
memset 4 4 0 0 0 0
|
||||
memset 5 5 0 0 0 0
|
||||
memset 6 6 0 0 0 0
|
||||
memset 7 7 0 0 0 0
|
||||
|
||||
// enable_logging 'true' or 'false'
|
||||
// When true specify a log_file or leave blank for stdout
|
||||
enable_logging true
|
||||
|
||||
// log_file <FILENAME>
|
||||
// Where <FILENAME> is the name of the file you want output
|
||||
// to be print to.
|
||||
log_file tracefile
|
||||
|
||||
// page size, defaults to 2^14 and cannot be greater than 2^26
|
||||
// pagesize <single page size (base 10)> or <'power' num (base 2)>
|
||||
pagesize 16384
|
||||
|
||||
// addressradix sets the radix
|
||||
// in which numerical values are displayed
|
||||
// 2 is the default value
|
||||
// addressradix <radix>
|
||||
addressradix 16
|
||||
|
||||
// numpages sets the number of pages (physical and virtual)
|
||||
// 64 is the default value
|
||||
// numpages must be at least 2 and no more than 64
|
||||
// numpages <num>
|
||||
numpages 64
|
||||
\end{lstlisting}
|
||||
\end{figure}
|
||||
We want to access each virtual page and read from one virtualk memory address of
|
||||
each page. \\
|
||||
To achieve this we need to read from pages in increments of pagesize. Which is
|
||||
set by default to 16384 and I do not change that. \\
|
||||
We have 64 pages so the last address we will read from will be address
|
||||
\[ 64 \cdot 16384 = 1048576 \]
|
||||
And since we start from address number 0 we need to substract
|
||||
\[ 1048576 - 16384 = 1032192 \]
|
||||
And so the last address we will read from is \textbf{1032192} \\
|
||||
We modify the commands file accordingly
|
||||
\begin{figure}
|
||||
\caption{commands file}
|
||||
\begin{lstlisting}
|
||||
READ 0
|
||||
READ 16384
|
||||
READ 32768
|
||||
READ 49152
|
||||
READ 65536
|
||||
READ 81920
|
||||
READ 98304
|
||||
READ 114688
|
||||
READ 131072
|
||||
READ 147456
|
||||
READ 163840
|
||||
READ 180224
|
||||
READ 196608
|
||||
READ 212992
|
||||
READ 229376
|
||||
READ 245760
|
||||
READ 262144
|
||||
READ 278528
|
||||
READ 294912
|
||||
READ 311296
|
||||
READ 327680
|
||||
READ 344064
|
||||
READ 360448
|
||||
READ 376832
|
||||
READ 393216
|
||||
READ 409600
|
||||
[...]
|
||||
READ 704512
|
||||
READ 720896
|
||||
READ 737280
|
||||
READ 753664
|
||||
READ 770048
|
||||
READ 786432
|
||||
READ 802816
|
||||
READ 819200
|
||||
READ 835584
|
||||
READ 851968
|
||||
READ 868352
|
||||
READ 884736
|
||||
READ 901120
|
||||
READ 917504
|
||||
READ 933888
|
||||
READ 950272
|
||||
READ 966656
|
||||
READ 983040
|
||||
READ 999424
|
||||
READ 1015808
|
||||
READ 1032192
|
||||
\end{lstlisting}
|
||||
\end{figure}
|
||||
\subsection{Procedure}
|
||||
After modifying config files I run the simulation using make compile and make
|
||||
run in work directory and go step by step through the program.
|
||||
\begin{figure}[H]
|
||||
\caption{tracefile}
|
||||
\begin{lstlisting}
|
||||
READ 0 ... okay
|
||||
READ 4000 ... okay
|
||||
READ 8000 ... okay
|
||||
READ c000 ... okay
|
||||
READ 10000 ... okay
|
||||
READ 14000 ... okay
|
||||
READ 18000 ... okay
|
||||
READ 1c000 ... okay
|
||||
READ 20000 ... okay
|
||||
READ 24000 ... okay
|
||||
READ 28000 ... okay
|
||||
READ 2c000 ... okay
|
||||
READ 30000 ... okay
|
||||
READ 34000 ... okay
|
||||
READ 38000 ... okay
|
||||
READ 3c000 ... okay
|
||||
READ 40000 ... okay
|
||||
READ 44000 ... okay
|
||||
[...]
|
||||
READ 54000 ... okay
|
||||
READ 58000 ... okay
|
||||
READ 5c000 ... okay
|
||||
READ 60000 ... okay
|
||||
READ 64000 ... okay
|
||||
READ 68000 ... okay
|
||||
READ 6c000 ... okay
|
||||
READ 70000 ... okay
|
||||
READ 74000 ... okay
|
||||
READ 78000 ... okay
|
||||
READ 7c000 ... okay
|
||||
READ 80000 ... page fault
|
||||
READ 84000 ... page fault
|
||||
READ 88000 ... page fault
|
||||
READ 8c000 ... page fault
|
||||
READ 90000 ... page fault
|
||||
READ 94000 ... page fault
|
||||
READ 98000 ... page fault
|
||||
READ 9c000 ... page fault
|
||||
READ a0000 ... page fault
|
||||
READ a4000 ... page fault
|
||||
[...]
|
||||
READ e4000 ... page fault
|
||||
READ e8000 ... page fault
|
||||
READ ec000 ... page fault
|
||||
READ f0000 ... page fault
|
||||
READ f4000 ... page fault
|
||||
READ f8000 ... page fault
|
||||
READ fc000 ... page fault%
|
||||
\end{lstlisting}
|
||||
\end{figure}
|
||||
As we can see mapping first 8 pages was successful. Their mapping was specified
|
||||
in memory.conf file and they were mapped as expected. \\
|
||||
Then pages up to 32 were also mapped correctly \\
|
||||
Then we get to page number 32 and we get page fault. We do not have mapping
|
||||
between this page and physical page so we use algorithm of first in first out
|
||||
and map page 32 to page 0, which was mapped to virtual page 0 in the first step.
|
||||
\\
|
||||
This process gets repeated up to the last page. We take the virtual page which
|
||||
was mapped to physical one as a first one and we map it to virtual page which
|
||||
got page fault error. \\
|
||||
This can be observed on following screens:
|
||||
\begin{figure}[H]
|
||||
\caption{Very start of application}
|
||||
\includegraphics[width=\linewidth]{mm1}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\caption{First step correctly mapped}
|
||||
\includegraphics[width=\linewidth]{mm2}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\caption{16th page correctly mapped}
|
||||
\includegraphics[width=\linewidth]{mm3}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\caption{First page fault on 32th step}
|
||||
\includegraphics[width=\linewidth]{mm4}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\caption{First in First out, we map page 0 physical to the page we just
|
||||
got page fault on}
|
||||
\includegraphics[width=\linewidth]{mm5}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\caption{Again first in, first out}
|
||||
\includegraphics[width=\linewidth]{mm6}
|
||||
\end{figure}
|
||||
\begin{figure}[H]
|
||||
\caption{Final view of application}
|
||||
\includegraphics[width=\linewidth]{mm7}
|
||||
\end{figure}
|
||||
\section{Finishing comments}
|
||||
Both by looking at the source code and simulation results we can say that the
|
||||
simulation uses First in First out algorithm. First 8 pages were mapped
|
||||
correctly because of the memory.conf file, pages up to 32 were mapped correctly
|
||||
because they are mapped by default by the application. \\
|
||||
Then we got page faults which were resolved by first in first out algorithm.
|
||||
\begin{thebibliography}{9}
|
||||
\bibitem{mmuWiki} \href{https://en.wikipedia.org/wiki/Memory_management_unit}{Wiki Memory Management Unit}
|
||||
\bibitem{faultWiki} \href{https://en.wikipedia.org/wiki/Page_fault}{[Wiki Page Fault]}
|
||||
\bibitem{Page Replacement Algorithms}
|
||||
\href{https://www.geeksforgeeks.org/page-replacement-algorithms-in-operating-systems/}{[Geeks
|
||||
for Geeks page replacament algorithms]}
|
||||
\bibitem{pageWiki}
|
||||
\href{https://en.wikipedia.org/wiki/Page_replacement_algorithm}{Wikipedia Page
|
||||
replacament algorithm}
|
||||
\end{thebibliography}
|
||||
\end{document}
|
||||
1
EOPSY/lab4/task4/README
Normal file
@ -0,0 +1 @@
|
||||
Change directory to ./ftp and submit "make setup".
|
||||
24
EOPSY/lab4/task4/ftp/Makefile
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
default: info
|
||||
|
||||
|
||||
help:
|
||||
less README.tjk
|
||||
|
||||
compile:
|
||||
javac -nowarn *.java
|
||||
|
||||
run:
|
||||
java MemoryManagement commands memory.conf
|
||||
|
||||
setup:
|
||||
./setUp
|
||||
|
||||
info:
|
||||
@echo ""
|
||||
@echo "Use 'make' with one argument:"
|
||||
@echo ""
|
||||
@echo " make help"
|
||||
@echo " make compile"
|
||||
@echo " make run"
|
||||
@echo ""
|
||||
45
EOPSY/lab4/task4/ftp/README.tjk
Normal file
@ -0,0 +1,45 @@
|
||||
|
||||
|
||||
WORKPLACE ORGANIZATION:
|
||||
mkdir ../work
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d memory.tgz
|
||||
tar -xvf memory.tar
|
||||
rm memory.tar
|
||||
|
||||
|
||||
READING:
|
||||
more/less/vi/vim README.tjk
|
||||
netscape/lynx/links install_unix.html
|
||||
netscape/lynx/links user_guide.html
|
||||
|
||||
|
||||
COMPILE:
|
||||
javac -nowarn *.java
|
||||
|
||||
|
||||
RUN:
|
||||
java MemoryManagement commands memory.conf
|
||||
|
||||
|
||||
FILES:
|
||||
input file name: commands
|
||||
initial content of the VM map: memory.conf
|
||||
output file name: tracefile
|
||||
|
||||
|
||||
--[ YOUR TASK ]-------------------------------------------------------
|
||||
|
||||
Create a command file that maps any 8 pages of physical memory to the
|
||||
first 8 pages of virtual memory, and then reads from one virtual memory
|
||||
address on each of the 64 virtual pages. Step through the simulator one
|
||||
operation at a time and see if you can predict which virtual memory
|
||||
addresses cause page faults. What page replacement algorithm is being
|
||||
used?
|
||||
|
||||
Locate in the sources and describe to the instructor the page
|
||||
replacement algorithm.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
|
||||
BIN
EOPSY/lab4/task4/ftp/memory.tgz
Normal file
9
EOPSY/lab4/task4/ftp/setUp
Executable file
@ -0,0 +1,9 @@
|
||||
echo "Creating ../work subdirectory"
|
||||
mkdir ../work 2>/dev/null
|
||||
cd ../work
|
||||
cp ../ftp/* .
|
||||
gzip -d memory.tgz
|
||||
tar -xvf memory.tar
|
||||
rm memory.tar
|
||||
echo ""
|
||||
echo "Now, go to the directory ../work and submit 'make'"
|
||||
BIN
EOPSY/lab4/task4/work/Common.class
Normal file
58
EOPSY/lab4/task4/work/Common.java
Normal file
@ -0,0 +1,58 @@
|
||||
public class Common {
|
||||
|
||||
static public long s2l ( String s )
|
||||
{
|
||||
long i = 0;
|
||||
|
||||
try {
|
||||
i = Long.parseLong(s.trim());
|
||||
} catch (NumberFormatException nfe) {
|
||||
System.out.println("NumberFormatException: " + nfe.getMessage());
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static public int s2i ( String s )
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
try {
|
||||
i = Integer.parseInt(s.trim());
|
||||
} catch (NumberFormatException nfe) {
|
||||
System.out.println("NumberFormatException: " + nfe.getMessage());
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static public byte s2b ( String s )
|
||||
{
|
||||
int i = 0;
|
||||
byte b = 0;
|
||||
|
||||
try {
|
||||
i = Integer.parseInt(s.trim());
|
||||
} catch (NumberFormatException nfe) {
|
||||
System.out.println("NumberFormatException: " + nfe.getMessage());
|
||||
}
|
||||
b = (byte) i;
|
||||
return b;
|
||||
}
|
||||
|
||||
public static long randomLong( long MAX )
|
||||
{
|
||||
long i = -1;
|
||||
|
||||
java.util.Random generator = new
|
||||
java.util.Random(System.currentTimeMillis());
|
||||
while (i > MAX || i < 0)
|
||||
{
|
||||
int intOne = generator.nextInt();
|
||||
int intTwo = generator.nextInt();
|
||||
i = (long) intOne + intTwo;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||