User:Michael

From Embedded Xinu
Revision as of 02:28, 15 July 2009 by Michael (talk | contribs) (→‎Week of July 13: memory allocator.)
Jump to navigation Jump to search

Currently I am a in-between graduate student working at Marquette University. I have completed my thesis (Using Software Transactional Memory in Interrupt-Driven Systems), but it was about one week late — so my graduation was pushed back to August 2009. At the end of the summer I will move to St. Louis and begin working on a Ph.D. in Computer Science at Washington University.

However, until then I am a research assistant for Dr. Dennis Brylow. At present I am continuing my research with software transactional memory and operating systems. In my spare geek time, I plan on fleshing out or starting up various parts of the Embedded Xinu O/S, as well as doing various administrative lab tasks.

If you want more detailed information about me and my academic career you can visit the website of Michael J. Schultz!

Weekly Log (Summer 2009)

Week of May 11

Week of May 18

  • Discussed REU Wiki with REU students.
  • Wrote Flash memory and memory protection pages to the trac wiki with deadlines and some information.
  • Worked on KVM a bit more (no success yet) -- it seems to fail to create the graphics properly which halts the installation process.
  • Created SVN account and branch for wireless driver developer.
  • Began some preliminary work on memory protection (moving to region based memory)

Week of May 25

  • Enjoyed some relaxation time in Galena.

Week of June 1

Week of June 8

  • Got rejected.
  • Reduced conferences to look at for paper submissions.
  • Finished work on region based memory allocator. (source)
    • Xinu now (inefficiently) allocates page sized memory when requests are made.
  • Read paper
    • Stitt, G., Chaudhari, G., and Coole, J. 2008. Traversal caches: a first step towards FPGA acceleration of pointer-based data structures. In Proceedings of the 6th IEEE/ACM/IFIP international Conference on Hardware/Software Codesign and System Synthesis (Atlanta, GA, USA, October 19 - 24, 2008). CODES/ISSS '08. ACM, New York, NY, 61-66. DOI=http://doi.acm.org/10.1145/1450135.1450150
  • Built page mapping/unmapping functionality into Xinu for virtual memory
    • TODOs now include:
      • Hacking together TLB initialization and modification code.
      • Correctly use TLB during context switch.
      • Build system call interface and associated system call functions.
      • Make distinction between user-/kernel-level threads and/or processes.

Week of June 15

  • Reviewed papers
    • Ryzhyk, L., Chubb, P., Kuz, I., and Heiser, G. 2009. Dingo: taming device drivers. In Proceedings of the Fourth ACM European Conference on Computer Systems (Nuremberg, Germany, April 01 - 03, 2009). EuroSys '09. DOI=http://doi.acm.org/10.1145/1519065.1519095.
    • Fuad Tabba, Mark Moir, James R. Goodman, Andrew W. Hay, and Cong Wang. NZTM: Nonblocking Zero-indirection Transactional Memory. In Proceedings of the 2009 Symposium on Parallelism in Algorithms and Architectures (Calgary, Alberta, Canada, August 11 - 13, 2009). SPAA '09. URI=http://www.virtutech.com/files/academics/spaa091-tabba.pdf.
  • System Administration
  • Memory Protection
    • Began looking into system call interface. I've decided Xinu was never meant to have user mode -> kernel mode syscalls (see 20.5 of Operating System Design). Implying that the ancient SYSCALL type is a bit of a misnomer. Though the interface is possible (and fairly easy), it would require special wrapper functions around every call deemed to be a system call.

Week of June 22

  • Reviewed Paper
    • Maeda, S., Asano, S., Shimada, T., Awazu, K., and Tago, H. 2005. A Real-Time Software Platform for the Cell Processor. IEEE Micro 25, 5 (Sep. 2005), 20-29. DOI=http://dx.doi.org/10.1109/MM.2005.79
  • Memory Protection
    • Filling out TLB EntryHi and EntryLo[0,1] fields with data from processes page table. Doesn't work. Getting Bus error exception with both fast (assembly) and slow (C) handlers.
    • Building a version of OpenWRT to (hopefully) dump and look at values in TLB.
    • Fixed above problem (right shift PFN 6 bits), I thought they were 'reserved' bits---I was wrong, it works now
    • Fixed a few other bugs to get TLB working consistently in mapped memory space
    • Began working on syscall interface, still needs testing.
  • Got some benchmarks to run with nepsim and told Ryan how to build nepsim on 64-bit machines (and execute without a segfault).
  • Helped with some computational sciences for high school teachers activities

Week of June 29

  • Reviewed paper
    • Klassner, F. and Continanza, C. 2007. Mindstorms without robotics: an alternative to simulations in systems courses. In Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education (Covington, Kentucky, USA, March 07 - 11, 2007). SIGCSE '07. ACM, New York, NY, 175-179. DOI=http://doi.acm.org/10.1145/1227310.1227372
  • Added syscall interface to safemem branch, now some cleanup work is necessary and a re-review of the files added. (+ commenting functions)
  • Tinkered with KVM on Fedora 11 (it seems to work well).
  • Helped find/fix various bugs in network stack.

Week of July 6

  • Began working on cleanup/documentation/confirmation of all memory related subsystems (region allocator, paging, tlb, syscall interface)
    • Stuck thinking about how to allocate the allocators. (Region based, byte based, malloc/memget, ...)
  • Read
    • Yang, X., Cooprider, N., and Regehr, J. 2009. Eliminating the call stack to save RAM. In Proceedings of the 2009 ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools For Embedded Systems (Dublin, Ireland, June 19 - 20, 2009). LCTES '09. ACM, New York, NY, 60-69. DOI=http://doi.acm.org/10.1145/1542452.1542461.
  • Adapted to Fedora 11 on mawdryn
    • Installed "morbius" virtual machine on mawdryn (doesn't have a MAC address in the database, so none of the standard configuration script ran.)
  • Went to Door County on Friday (sorry).

Week of July 13

  • Worked on memory allocator
    • Pages are allocated to a process (but not recovered until process is killed).
    • memget tries to allocate from the freelist of the current process, if enough memory doesn't exist it fetches another page (or pages) and allocates it to the process' freelist.
    • memfree simply returns a pointer with nbytes of memory to the process' freelist.
    • working on some bugs with memRegionReclaim when a process is killed.
  • Helped various people in the lab.

Week of July 20

Week of July 27

Week of August 3