|
... This blog has no purpose ...
RSS Feed
Affiliations
Other blogs
|
Sat, 28 May 2005
Visit to Pittsburgh
Before the main review started we had a practice session. Here are some pictures of the gradstudent poster session at which I presented the switch simulation (the demo is on the right, next to Sandy):
The demo itself seemed to go down well (probably because of all the flashy 3D graphics):
I didn't see too much of Pittsburgh while I was there but here are a few shots taken on the way from the university to the hotel. The leftmost shows the CS facility and the other two attempt to show how hilly the place was (the entrace to the building is on floor 4 and there is a ground-exit on every floor apparently). Notice the gothic looking building on the rightmost photo.
The leftmost picture shows a church near the campus and the rightmost one is of the Pittsburgh Software Engineering Institute:
Here's the impressive gothic building again -- certainly puts Cambridge's UL to shame:
Silly Javascript microbenchmark
As you can see, Firefox's javascript VM seems to run faster than Safari's. The final kink in the Firefox curve is probably when the program is suspended while the user is consulted with a dialog ("A script on this page is causing mozilla to run slowly.... Do you want to abort..."). Encouragingly, the javascript interpreters weren't that much slower then ocaml bytecode -- I didn't have to log any axes! So all we need is something to compile a nice language to javascript and perhaps we can do some proper client-side programming... Sun, 22 May 2005
Experimental tools for bibtex -> rss
Submitted final bound copy of thesis!
Woohoo! Mon, 10 Jan 2005
Linux page tables
The LWN article gives the pseudocode required to manually map a virtual address into a physical address:
pmd = pmd_offset(pgd, address);
pte = *pte_offset_map(pmd, address);
page = pte_page(pte);
Nice. The article does say that most tree traversals have been abstracted behind functions (yay) but nevertheless quite a lot of pieces of code are written which make explicit reference to the three-level assumption.
I wonder (idly, of course) whether a more generic design could be used instead. Would it be possible to implement it in C or would we require help from high-level languages like O'Caml? Perhaps I should investigate the BSDs to see how they handle page tables. Tue, 14 Dec 2004
The PhD Viva
Happily, after a bit of a grilling (which I deserved) I passed with minor corrections. Kieran provided the celebration champagne (bit of a wedding oversupply I think)
Process Calculi
Nomadic Pi(ct): Location-Independent Communication for Mobile Agents: a Two-Level Architecture; Peter Sewell, Pawel T. Wojciechowski, Benjamin C. Pierce http://citeseer.ist.psu.edu/150304.html
Nomadic Pict: Language and Infrastructure Design for Mobile Computation; Pawel T. Wojciechowski http://citeseer.ist.psu.edu/309143.html
Nomadic Pi-calculi: Expressing and verifying communication infrastructure for mobile computation; Asis Unyapoth http://www.cl.cam.ac.uk/TechReports/UCAM-CL-TR-514.html
Facile: Facile: a symmetric integration of concurrent and functional programming; Alessandro Giacalone, Prateek Mishra, Sanjiva Prasad http://portal.acm.org/citation.cfm?id=78098
Localities and failures; RM Amadio, S Prasad http://scholar.google.com/url?q=http://www.cmi.univ-mrs.fr/~amadio/india94.ps
Asynchronous Pi: An Object Calculus for Asynchronous Communication; Kohei Honda, Mario Tokoro
http://citeseer.ist.psu.edu/honda91object.html
http://www.ifs.uni-linz.ac.at/~ecoop/cd/papers/0512/05120133.pdf
Seal: A Framework for Secure Mobile Computations; G. Castagna, J. Vitek
http://www.springerlink.com/link.asp?id=dbr2a1861fx9
A typed language for distributed mobile processes (extended abstract); James Riely and Matthew Hennessy
http://doi.acm.org/10.1145/268946.268978
Annoying descriptor-related bug
Naturally it doesn't work. A lot of tedious debugging later and I finally think to check the MaxLength() of the descriptor I just allocated. I was pretty sure the ReAlloc() function would try to be clever, allocating more than I asked for in order to avoid heap fragmentation. I also assumed that it would hide this from me like the C function realloc() does --- after all, it would only require one more private field in the implementation of the HBuf class. This assumption was unfounded. I asked for a descriptor with n bytes, suitable for reading a packet of length n. It gave me a much bigger descriptor causing the Read() call never to complete. I'd have been happy if one of the following wasn't true:
The solution I adopted in the end was to maintain my own char[] array and create TPtr references into it; at least that way I could control the MaxLength(). A bit of a cop-out -- I might as well make a massive char[] array and perform my own memory management inside it. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||