X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=TODO;h=95bf2aeb4ff2994762d6440765fb3e85d03eb2f9;hb=868e7f24b88c6f16228ac000792725d249363d2f;hp=9d3d6c23509adc26cbb2b97ceb88e5e4c873e6de;hpb=dbce2172808cc6bff4e4dda090e9c0c909706d1c;p=pintos-anon diff --git a/TODO b/TODO index 9d3d6c2..95bf2ae 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,35 @@ -*- text -*- +* Bochs is not fully reproducible. + +Godmar says: + +- In Project 2, we're missing tests that pass arguments to system calls +that span multiple pages, where some are mapped and some are not. +An implementation that only checks the first page, rather than all pages +that can be touched during a call to read()/write() passes all tests. + +- In Project 2, we're missing a test that would fail if they assumed +that contiguous user-virtual addresses are laid out contiguously +in memory. The loading code should ensure that non-contiguous +physical pages are allocated for the data segment (at least.) + +- Need some tests that test that illegal accesses lead to process +termination. I have written some, will add them. In P2, obviously, +this would require that the students break this functionality since +the page directory is initialized for them, still it would be good +to have. + +- There does not appear to be a test that checks that they close all +fd's on exit. Idea: add statistics & self-diagnostics code to palloc.c +and malloc.c. Self-diagnostics code could be used for debugging. +The statistics code would report how much kernel memory is free. +Add a system call "get_kernel_memory_information". User programs +could engage in a variety of activities and notice leaks by checking +the kernel memory statistics. + +--- + From: "Godmar Back" Subject: priority donation tests To: "Ben Pfaff" @@ -68,34 +98,17 @@ immediately, forcing the scheduler to switch to the other equal-priority thread. Both wake-up times must be the same (and match the planned wake-up time.) +PS: +I actually tested it and it's hard to pass with the current ips setting. +The bounds on how quickly a thread would need to be able to return after +sleep appear too tight. Need another idea. + +--- From: "Waqar Mohsin" Subject: 3 questions about switch_threads() in switch.S To: blp@cs.stanford.edu, joshwise@stanford.edu Date: Fri, 3 Mar 2006 17:09:21 -0800 -QUESTION 1 - -In the section - - # Save current stack pointer to old thread's stack, if any. - movl SWITCH_CUR(%esp), %eax - test %eax, %eax - jz 1f - movl %esp, (%eax,%edx,1) -1: - - # Restore stack pointer from new thread's stack. - movl SWITCH_NEXT(%esp), %ecx - movl (%ecx,%edx,1), %esp - -why are we saving the current stack pointer only if the "cur" thread pointer -is non-NULL ? Isn't it gauranteed to be non-NULL because switch_threads() is -only called form schedule(), where we have - - struct thread *cur = running_thread (); - -which should always be non-NULL (given the way kernel pool is laid out). - QUESTION 2 # This stack frame must match the one set up by thread_create(). @@ -286,6 +299,11 @@ via Godmar Back: * lock_acquire(), lock_release() don't need additional intr_dis/enable calls, because the semaphore protects lock->holder. + [ Think this over: is this really true when priority donation is + implemented? intr_dis/enable prevents the race with thread_set_priority. + Leaving it there could help the students getting the correct synchronization + right. + ]