views:

298

answers:

5

Hi,

me and my schoolmate were tasked to come up with an idea for a project that would have something to do with simulating things that concern the operation system (e.g. animation of disk algorithms such as FCFS; implementing your own virtual file system- with FUSE for example etc.). The problem is that all of the mentioned ideas are already taken and we can't come up with one.

So we would be grateful if anyone could lend us a hand at coming up with an idea for a project. The requirements are that it's not too complicated (max. 2 weeks of work) and it's possible to implement it with Java.

Thanks.

+2  A: 

How about process scheduling? Preemptive or cooperative, either one.

tvanfosson
+4  A: 

A project that I had a lot of fun with was simulating the system memory for Operating Systems. This involves creating a cache, main memory, and optionally depending on your scope, a swap file. Then, use these virtual memory objects to do cache/main memory lookup, check for hits/misses that defer to the next layer, etc.

JoshJordan
+1, I was typing that when your post appeared :)
Arnold Spence
:) Its a very interesting project. I actually remember getting confused between objects in my program's memory and the memory I was trying to simulate.
JoshJordan
Good suggestion, but unfortunately already taken :P
Daniel
A: 

Perhaps you could simulate a really basic desktop system that allows multiple logins and switching between users?.. too involved?

Arnold Spence
A: 

You could try to implement a buddy allocator. It's a memory allocation method that is used in operating systems such as the Linux kernel. You could also try a standard malloc-like allocator. Also, as somebody already said, process or thread scheduling is another great thing.

Zifre
+1  A: 

From Operating Systems (Deitel), some project ideas:

  1. Create a simulation program to compare various deadlock prevention schemes, e.g. denying the “wait-for” condition, or denying the “no-preemption”. You can generate a sample user population, user arrival times, user resource needs (assume the system has n identical resources) in terms both of maximum needs and of when the resources are actually required, and so on. Each simulation should accumulate statistics on job turnaround times, resource utilization, number of jobs progressing at once, and the like. Observe the results of your simulations and draw conclusions about the relative effectiveness of these deadlock prevention schemes.

  2. Develop several aging algorithms and write simulation programs to examine their relative performance. For example, a process’s priority may be made to increase linearly with time. For each of the aging algorithms you choose, determine how well waiting processes are treated relative to high-priority arriving processes.

  3. Develop a simulation program to investigate the relative effectiveness of the first-fit, best-fit, and worst-fit memory placement strategies. Your program should measure memory utilization and average turnaround time for the various memory placement strategies. Assume a real memory system with 1GB capacity, of which 300MB is reserved for the operating system. New processes arrive at random intervals between 1 and 10 minutes (in multiples of 1 minute), the sizes of the processes are random between 50MB and 300MB in multiples of 10MB, and the durations range from 5 to 60 minutes in multiples of 5 minutes in units of one minute.Your program should simulate each strategy over a long enough interval to achieve steady-state operation.

  4. Develop a simulation program to investigate how changing the number of pages allocated to a process affects the number of page faults it experiences.Use reference strings that simulate spatial locality over both large and small regions of memory and temporal locality over both large and small periods. Also test the simulation using reference strings that are essentially random. Describe the optimal page-replacement algorithm for each reference string.You might also wish to simulate the effect of multiprogramming by interleaving different reference patterns.

  5. Create an application to encode and decode secret messages within bitmap pictures. When encoding, modify the least significant bit in each byte to store information about the message.To decode, just reassemble the message using the least significant bit of each byte.

JRL
> Operating Systems (Deitel)Good book, I used that at University
Techboy