Student Assistant Position
The VU has granted me a prestigious
University Research Fellow position, which is essentially a student assistant.
To fill it,
I am looking for someone who will be a masters student in computer science or PDCS at the VU during the 2013/2014
academic year.
The student should have good grades and be an experienced C and C++ programmer with strong knowledge of UNIX or Linux.
The (paid) position will be for 10 hours a week.
It may be possible to combine the assistantship with your masters thesis if you are a second-year masters student.
If the work is successful, it may lead to a paper we can submit for publication. The student will be a co-author.
Having a published paper on your CV could be useful to you later, for example, for getting a
position as a Ph.D. student somewhere.
If you are qualified and interested, please send me an email with your CV.
Be sure to discuss your C/C++ and UNIX/Linux experience.
Abstract of the Grant Proposal
We are working on making computer systems more reliable as part of my ERC Advanced Grant
"Research on Really Reliable and Secure Systems Software" project. It is well-established that even
well-written and extensively tested programs contain a constant number of bugs per thousand lines of
code. This is the main reason why computer software still fails often. As a result, people have come to
accept that computers cannot provide the extent of reliability that other types of machines such as
televisions and cars have managed to achieve. Given that it is not feasible to make software entirely bug-
free, we have to accept the fact that faults occur and find a way to deal with them more elegantly than is
currently the case. With our MINIX 3 operating system, we have employed many techniques to prevent
such faults from bringing down the system, in the hope that one day users will no longer experience
crashes and have to reboot their computers.
Although we have a system that is expected to be more reliable in the face of software faults than
traditional systems (such as Windows, Linux and Mac OS), demonstrating the extent to which reliability
has been improved in practice is a challenge. To show that our system can effectively contain faults, it is
necessary to trigger many faults in both our system and traditional systems and compare the impact these
faults have on the system. We already found that it is not sufficient to trigger thousands of faults. Even
systems resilient to such numbers of faults experience new problems when millions of faults are
triggered. However, it is not feasible to hunt down such numbers of real faults and find ways to trigger all
of them. Instead, one has to introduce artificial faults similar to those that would be made by real
programmers. To compare reliability, one would have to do this on multiple systems and investigate the
impact of the faults.
Currently, we have a framework called EDFI to perform fault injection on MINIX 3, but we are not yet
able to study the impact of faults on traditional operating systems. Our approach is to alter the behavior
of the LLVM/Clang compiler (which transforms source code into computer programs), so as to inject
realistic faults in programs and monitor the number and type of faults that are injected. This approach is
equally applicable to any other system for which the source code is available, but requires some effort to
actually make it work for each such system. We would like to do this for the Linux operating system, of
which the source code is fully available and which is dominant in the server market. It is also the basis
for Android, which is important in phones and tablets. In both markets, reliability is of particular
importance, so a fair comparison showing that MINIX 3 is more reliable than Linux in practice would be
a large boost for our research project.
Prof. Andrew S. Tanenbaum (link to my home page )
|