thomasnilsen wrote:I get your point. But i think most designs around have a set of design goals, most of the goals i think is to create a crontrolled environment where either the control is in kernel, task or maby both. Maby a lot of assumptions..?
Dispite what design you may have, most operating system have a set of basic services. These services could easily be measured i think, and the result presented in a orderly manner. Then you can with your design goal in mind see if you get the results expected, or if you maby need to take a look at some unwanted result.
Basic test for testing
user/kernel switch (if applicable)
thread switch time in same process.
process switch time.
processing time, in different priority levels.
response time when waiting for lock?
message passing
memory allocation physical,virtual or both?
-
Thomas
user/kernel switch: Do you mean, calling a kernel function and returning, or, how do you measure the time to switch, and what are you switching for? (what part of a 'normal' kernel does this test?)
thread switch time: Well, this is a good idea, but who controls the thread switching? And how do you measure the time? Do you suggest having a NextThread() function that will bring you to another thread similar to giving up your time in a process?
process switch time: How do you know which order the processes are in to know it went from this one to the next one you are expecting... what if it detoured through a device i/o process in between?
processing time/different thread priorities: Again, how do you judge priorities and how they should respond? My kernel might have 3 levels of priorities.. idle, normal, and high... while someone else might have 128 levels of priority. How do you directly compare the 2?
response time when waiting for lock: What kind of lock?
message passing: What size messages? Or do you want to test many message types/sizes? Do you propose message passing from app->kernel, kernel->app, app->app? Do you mean standard messages like, mouse move, keyboard press, etc, or do you mean like.... pass a 4mb image between 2 processes?
memory allocation physical/virtual/both: I personally would like a way to measure memory used vs. memory allocated for a malloc memory testing program, same for virtual memory. For physical memory, do you want to measure things like allocating a contiguous block under 1mb (ala floppy disk dma memory), contiguous under 16mb (isa anybody?), and random above 16mb for everything else? Also, a way to measure de-allocation and fragmentation (although, this is getting VERY dependant on implementation), or at least keep making psuedo random allocation/deallocations to try to create fragmentation and then check actual vs. requested memory allocated, this would give an indication of how fragmented it is.
Other things to test: Loading and running a specific application (including allocation, linking, setting up memory map, etc and actually running). You could have one application spawn another application, taking the time right before the spawn, and having the second application take the time when it is running, and send a message to the first application with the time stamp it took to see how long it took to reach a known point, then do it multiple times to check how well caching works (if implemented of course, or maybe it's on HD cache anyways).
Well, that's all my thinking for now, lol, let me know

.