Professor Buhr's research area is programming languages. He studies concurrency, visualization and debugging, polymorphism, and persistence.
Concurrency. New computers support multiple simultaneous threads of execution in the form of multi-threading, multi-core, and multi-processors; programming multiple threads is more complex than a single thread, and is called concurrent programming. Professor Buhr's initial work in concurrency began by providing concurrency for the C language, called the μSystem. Subsequently, the work shifted to C++ because of its object-oriented features allowing concurrent communication to be statically type-safe. This work has produced a concurrent dialect of C++, called μC++.
Concurrent Monitoring, Visualization and Debugging. Getting a concurrent program to work correctly, efficiently and with maximal parallelism can be very difficult. Professor Buhr develops techniques and tools to help understand the dynamic behaviour of a concurrent program with the goal of increasing program performance. This work has produced a toolkit for monitoring, visualizing, and debugging μC++ programs, called MVD.
Polymorphism. The ability to write generic reusable programs, called polymorphism, is fundamental to advanced software engineering. Professor Buhr is interested in static type-systems providing polymorphism without the use of subtyping. The problem with subtyping is that it imposes significant restrictions on reuse when static type-checking is required. This work has resulted in a new dialect of C language, called Cforall, which adds parametric polymorphism and extensive overloading to provide a more general type-system.
Persistence. Data structures containing pointers (versus values) cannot be stored directly to/from disk, because pointers represent absolute locations in memory. Professor Buhr is interested in memory-mapped single-level stores, which allow data, including pointers, to be transparently transferred to and retrieved from disk storage implicitly via virtual memory. To handle the address consistency problem, i.e., pointers to addresses that have changed location, exact positioning of data is use so no relocation or adjusting of pointers is necessary. This work has produced a toolkit, called μDatabase, for building persistent data structures using the exact-positioning approach to memory-mapped single-level stores.
Degrees and awards
BSc, MSc, PhD (Manitoba)
Industrial and sabbatical experience
Professor Buhr worked at Sun Microsystems during his 1993/1994 sabbatical on programming language design. He also worked with the HP Gelato project from 2003 to 2008 developing advanced Linux software for the Intel Itanium processor.
D. Pariag, T. Brecht, A. Harji, P. A. Buhr, and A. Shukla. Comparing the performance of Web Server Architectures. Proceedings of European Conference on Computer Systems (EuroSys), pp. 231-243, 2007.
P. A. Buhr and A. S. Harji. Implicit Signal Monitors. ACM Transactions on Programming Languages and Systems, 27(6):1-74, 2005.
P. A. Buhr and A. S. Harji. Concurrent Urban Legends. Concurrency and Computation: Practice and Experience, 17(9):1133-1172, 2005.
J. Chen, A. Harji, and P. A. Buhr. Solution Space for Fixed-Priority with Preemption Threshold. 11th IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS), pp. 385-394, 2005.
P. A. Buhr, A. Harji, and W. Y. R. Mok. Exception Handling. In Marvin V. Zelkowitz, editor, Advances in COMPUTERS, 56:245-303. Academic Press, 2002.
P. A. Buhr, A. S. Harji, P. E. Lim, and J. Chen. Object-Oriented Real Time Concurrency. SIGPLAN Notices, 35:29-46. Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA), 2000.
P. A. Buhr, M. Fortier, and M. H. Coffin. Monitor Classification. ACM Computing Surveys, 27(1):63-107, 1995.