The ongoing transition from uniprocessor to multiprocessor computers requires support from the operating system kernel. Although many general-purpose multiprocessor operating systems exist, there is a large number of specialized operating systems which require porting in order to work on multiprocessors. In this paper we describe the multiprocessor port of a cluster operating system kernel from a producer of industrial systems. Our initial implementation uses a giant locking scheme that serializes kernel execution. We also employed a method in which CPU-local variables are placed in a special section mapped to per-CPU physical memory pages. The giant lock and CPU-local section allowed us to implement an initial working version with only minor changes to the original code, although the giant lock and kernel-bound applications limit the performance of our multiprocessor port. Finally, we also discuss experiences from the implementation.
Övergången från singelprocessorsystem till multiprocessorer kräver operativsystemsstöd. I denna rapport beskriver vi designen och implementationen av multiprocessorstödet för en industriell operativsystemskärna. Vi har använt ett jättelås för att skydda kärnan från samtidig åtkomst, vilket tillät oss att implementera stödet utan omfattande källkodsändringar till priset av sämre prestanda. I rapporten diskuterar vi också erfarenheter från implementeringen.