The OS is a program that uses various data structures. Like
all programs in execution, you can determine the
performance and other behavior of the OS by inspecting its
state - the values stored in its data structures. In this
part of the assignment, we study some aspects of the
organization and behavior of a Linux system by observing
values of kernel data structures exposed through the /proc
virtual file system.
The /proc virtual file system:
Linux uses the /proc file system to collect information
from kernel data structures. The /proc implementation
provided with Linux can read many different kernel data
structures. If you cd to /proc on a Linux machine, you will
see a number of files and directories at that location.
Files in this directory subtree each corresponds to some
kernel data structure. The subdirectories with numeric
names contain virtual files with information about the
process whose process ID is the same as the directory name.
Files in /proc can be read like ordinary ASCII files. You
can open each file and read it using library routines such
as fgets() or fscanf(). The proc (5) manual page explains
the virtual files and their content available through
the /proc file system.
Requirements in detail:
In this part, you are asked to write a program to report
the behavior of the Linux kernel. Your program should run
in two different versions. The default version should print
the following values on stdout:
• Processor type
• Kernel version
• The amount of memory configured into this computer
• Amount of time since the system was last booted
A second version of the program should run continuously and
print lists of the following dynamic values (each value in
the lists is the average over a specified interval):
• The percentage of time the processor(s) spend in
user mode, system mode, and the percentage of time the
processor(s) are idle
• The amount and percentage of available (or free)
memory
• The rate (number of sectors per second) of disk
read/write in the system
• The rate (number per second) of context switches in
the kernel
• The rate (number per second) of process creations
in the system
If your program (compiled executable) is called proc_parse,
running it without any parameter should print out
information required for the first version. Running it with
two parameters "proc_parse <read_rate> <printout_rate>"
should print out information required for the second
version. read_rate represents the time interval between two
consecutive reads on the /proc file system. printout_rate
indicates the time interval over which the average values
should be calculated. Both read_rate and printout_rate are
in seconds. For instance, proc_parse 2 60 should read
kernel data structures once every two seconds. It should
then print out averaged kernel statistics once a minute
(average of 30 samples). The second version of your program
doesn't need to terminate.
The purpose of this exercise is to benchmark file writing
and reading speed. This exercise is divided into two parts.
a). Write a file character by character such that the total
file size becomes approximately >10K. After writing close
the file handler, open a new stream and read the file
character by character. Record both times. Execute this
exercise at least 4 times
b). Create a buffer capable of storing 100 characters. Now
after generating the characters, first store them in the
buffer. Once the buffer is filled up, store all the
elements in the file. Repeat the process until the total
file size becomes approximately >10K.While reading read a
while line, store it in buffer and once buffer gets filled
up, display the whole buffer. Repeat the exercise at least
4 times with different size of buffer (50, 100, 150 …).
Records the times.
c). Do an analysis of the differences in times and submit
it in class.
how can i access a direct (absolute, not the offset) memory
address?
here is what i tried:
wrote a program that ask's for an address from the user,
creates a FAR pointer to that adress and shows it. then the
user can increment/decrement the value in that address by
pressing p(inc+) and m(dec-).
NOW, i compiled that program and opened it twice (in 2
different windows) and gave twice the same address to it.
now look what happen - if i change the value in
one "window" of the program, it DOES NOT change in the
other! even if they point to the same address in the memory!
here is the code snippet:
//------------------------------------------------------
#include <stdio.h> //INCLUDE EVERY KNOWN HEADER FILE
#include <conio.h> //FOR ANY CASE...
#include <iostream.h>
#include <dos.h>
#include <process.h>
main()
{
int far *ptr; //FAR POINTER!!!
long address;
char key=0; //A KEY FROM THE KEYBOARD
int temp=0;
clrscr();
cout<<"Enter Address:";
cin>>hex>>address; //GETS THE ADDRESS
clrscr();
(long)ptr=address; temp=*ptr; //PUTS THE ADDRESS IN THE PTR
cout<<"["<<hex<<(unsigned long)ptr<<"]="<<*ptr<<" = "<<
(char)(*ptr);
//SHOWS: [address]=value=ASCII symbol.
while (key!=27) //WHILE YOU DONT PRESS ESC.
{
while(!kbhit()) //WHILE KEY IS NOT PRESSED
{
if (temp!=*ptr) { temp=*ptr; clrscr(); cout<<"["<<hex<<
(unsigned long)ptr<<"]="<<*ptr<<" = "<<(char)(*ptr); };
//IF THE VALUE HAS CHANGED, CLEAR THE SCREEN AND SHOW
//AGAIN
if (key=='p') {key=0; (*ptr)++; } //INCREMENT VALUE
if (key=='m') {key=0; (*ptr)--; } //DEC. VALUE
};
key=getch(); //IF A KEY IS PRESSED, READ IT FROM THE
//KEYBOARD
};
return 0; //IF ESC WAS THE KEY, EXIT THE PROGRAM
}
//---------------------------------------------------------
2. Counting in Lojban, an artificial language developed
over the last fourty years, is easier than in most languages
The numbers from zero to nine are:
0 no
1 pa
2 re
3 ci
4 vo
5 mk
6 xa
7 ze
8 bi
9 so
Larger numbers are created by gluing the digit togather.
For Examle 123 is pareci
Write a program that reads in a lojban string(representing
a no less than or equal to 1,000,000) and output it in
numbers.
'Interface not supported' . what does this error mean?
6
What parameters are used to run a JCL JOB on a perticular
DAY and TIME and DATE
51
How to Provide lookup capability?
8
The OS is a program that uses various data structures. Like
all programs in execution, you can determine the
performance and other behavior of the OS by inspecting its
state - the values stored in its data structures. In this
part of the assignment, we study some aspects of the
organization and behavior of a Linux system by observing
values of kernel data structures exposed through the /proc
virtual file system.
The /proc virtual file system:
Linux uses the /proc file system to collect information
from kernel data structures. The /proc implementation
provided with Linux can read many different kernel data
structures. If you cd to /proc on a Linux machine, you will
see a number of files and directories at that location.
Files in this directory subtree each corresponds to some
kernel data structure. The subdirectories with numeric
names contain virtual files with information about the
process whose process ID is the same as the directory name.
Files in /proc can be read like ordinary ASCII files. You
can open each file and read it using library routines such
as fgets() or fscanf(). The proc (5) manual page explains
the virtual files and their content available through
the /proc file system.
Requirements in detail:
In this part, you are asked to write a program to report
the behavior of the Linux kernel. Your program should run
in two different versions. The default version should print
the following values on stdout:
• Processor type
• Kernel version
• The amount of memory configured into this computer
• Amount of time since the system was last booted
A second version of the program should run continuously and
print lists of the following dynamic values (each value in
the lists is the average over a specified interval):
• The percentage of time the processor(s) spend in
user mode, system mode, and the percentage of time the
processor(s) are idle
• The amount and percentage of available (or free)
memory
• The rate (number of sectors per second) of disk
read/write in the system
• The rate (number per second) of context switches in
the kernel
• The rate (number per second) of process creations
in the system
If your program (compiled executable) is called proc_parse,
running it without any parameter should print out
information required for the first version. Running it with
two parameters "proc_parse <read_rate> <printout_rate>"
should print out information required for the second
version. read_rate represents the time interval between two
consecutive reads on the /proc file system. printout_rate
indicates the time interval over which the average values
should be calculated. Both read_rate and printout_rate are
in seconds. For instance, proc_parse 2 60 should read
kernel data structures once every two seconds. It should
then print out averaged kernel statistics once a minute
(average of 30 samples). The second version of your program
doesn't need to terminate.
6
How to Find all files (or files of a certain type) in a
given directory?
31
What DLLs needed to ship with control?
90
what is the use of call back function in c?tell me with
example
17
pgm in c to reverse string by word using array(god is love
becomes love is god)
(no additional array can used,space is only delimiter
between words )