Skip to content

Final project for "Advanced Operating Systems and Virtualization" course from MSc in Engineering in Computer Science at Sapienza, University of Rome.

License

Notifications You must be signed in to change notification settings

MatteoArella/linux-ums

Repository files navigation

Linux User-Mode Scheduling

Main

Overview

User-mode scheduling (UMS) is a lightweight mechanism that applications can use to schedule their own threads. The ability to switch between threads in user mode makes UMS more efficient than thread pools for managing large numbers of short-duration work items that require few system calls.

To take advantage of UMS, an application must implement a scheduler component that manages the application's UMS threads and determines when they should run.

The implementation of a User-mode scheduling is inspired from the UMS specification available in the Windows kernel.

The package is made of a Linux Loadable Kernel Module (LKM) that implements all the backend services for executing and yielding UMS worker threads and a Userspace library which interacts with the LKM.

The code has been tested from linux kernel 4.4 to 5.12.

Documentation

The online documentation for latest release is available here.

A PDF version of the documentation is also available here.

Build

Minimal requirements

  • GNU C >= 5.1
  • GNU make >= 3.81
  • libtool
  • pkg-config
  • linux-headers
  • check 1
  • sphinx 2
  • doxygen 2
  • breathe 2
  • sphinx_rtd_theme 2
  • latex 3

1 Optional: needed only for userspace library tests

2 Optional: needed only to build the documentation

3 Optional: needed only to build the pdf documentation

Minimal Build

Build the userspace library and the LKM and install them into the system with:

$ ./configure
$ make
$ make check
$ sudo make install
$ sudo ldconfig
$ sudo modprobe ums

Development requirements

The following dependencies are needed in case of development build:

  • autotools-dev
  • autoconf
  • automake
  • git
  • cppcheck 4

4 Optional: needed only for userspace library static code analysis

Development Build

For starting developying the package you need to run:

$ ./autogen.sh

Build documentation

For build the documentation locally enable it during configuration:

$ ./configure --enable-docs

Then build the HTML documentation by:

$ make html

or the PDF documentation by:

$ make pdf

Build examples

Enable the examples building during configuration:

$ ./configure --enable-examples

Then they will be build when invoking make.

Build benchmark tool

Enable the benchmark tool building during configuration;

$ ./configure --enable-benchmark

Then it will be build when invoking make.

License

See LICENSE file.