|
Dr. Douglas Niehaus Research Interests |
The common motivation to most of my research is the application of system programming and operating system principles and expertise to a wide variety of relevant topics. This leads equally naturally, for example, to considering the relationship of current operating system methods and subsystem design to network protocol stack performance, as well as applying real-time and operating system expertise to tools and methods for performance evaluation of ATM networks as I did in the past, or looking at the influence of supporting network protocol execution by context borrowing or by providing thread context on peformance in different situations as I have done more recently. Other projects have included Real-Time computing support in Linux, tools supporting the recording and playback of multi-threaded application execution scenarios, dynamic discovery of computation structure and automatic control under the system scheduler, and easily configurable support for application specific execution semantics such as balanced progress among parallel video processing pipelines in a cideo security system.
Given the integrative and collaborative nature of system programming, my interests may be a central theme of a given project, or a more peripheral or supportive theme in another.
In any case, I find the range of things I am doing quite interesting and it keeps me busy, so however it all happens to be classified, it is often fun. If one classification scheme or another helps you keep it all straight, so much the better.
This is a long-term umbrella project which concentrates on precise computation control and measurement in aid of a wide range of system design goals. The KUSP software has been used and developed int he context of a wide range of projects over the last10 years, or so. The project began as the KU Real-ime (KURT) modifications to Linux, but has generalized considerably over the years so that a wide range of application programming models, including real-time, are now simply configuration choices.
This project considers how operating system services and other support shared by several user-level computations can represent interaction channels through which execution of nominally separate computations can influence each other, compromising the execution security of one or both. The term execution security refers to the idea that while conventional security measures seek to ensure that only proper types of access to resources is permitted for each computation, they do little or nothing to ensure that the computations actually execute. This project concentrates on identifying, automatically, all computation components required to support a given application, and to represent that set of comonents to the system scheudling subsystem for consideration. While this cannot guarantee successful execution for every computation, it can considerably increase the information available upon which to make decisions about how system resources can be used most productively, and can greatly reduce the probability of unintended consequences as a result of unknown, and thus uncontrolled, interaction channels.
This project considers ways in which the correspondence among the semantics of computation models, computation behavior as it is controlled by the system, and computation behavior as it is measured can be increased. Ideally, computation models should "perfectly" predict execution behavior, and the computation behavior data generated by the system performance measurement subsystem should "perfectly" represent the actual execution behavior, and perfectly match the modeled behavior. Under current practice, the correspondence these three is sometimes good, but more often limited and sometimes difficult to perceive at all. There are a number of reasons for this, many of them rooted in important issues of computability, capability, and efficiency. Nonetheless, we belive a number of useful measures can be taken to improve the accuracy of measurements taken, improve the computability and accuracy of models for specific application semantics, and broaden the ability of the system to support application-specific execution behavior semantics.
This project is in the initial prototype stage, and is investigating a range of ways in which Information Technology can be used to improve and transform Legal Practice, Legal Research, and Legal Education. This is my first project in a long time that was not related to systems programming, but even here there are potentially issues of high volume document processing that may present interesting problems in distributed computing.