ladybird/Applications
Andreas Kling 50677bf806 Kernel: Refactor scheduler to use dynamic thread priorities
Threads now have numeric priorities with a base priority in the 1-99
range.

Whenever a runnable thread is *not* scheduled, its effective priority
is incremented by 1. This is tracked in Thread::m_extra_priority.
The effective priority of a thread is m_priority + m_extra_priority.

When a runnable thread *is* scheduled, its m_extra_priority is reset to
zero and the effective priority returns to base.

This means that lower-priority threads will always eventually get
scheduled to run, once its effective priority becomes high enough to
exceed the base priority of threads "above" it.

The previous values for ThreadPriority (Low, Normal and High) are now
replaced as follows:

    Low -> 10
    Normal -> 30
    High -> 50

In other words, it will take 20 ticks for a "Low" priority thread to
get to "Normal" effective priority, and another 20 to reach "High".

This is not perfect, and I've used some quite naive data structures,
but I think the mechanism will allow us to build various new and
interesting optimizations, and we can figure out better data structures
later on. :^)
2019-12-30 18:46:17 +01:00
..
About About: Embrace the SerenityOS name 2019-12-29 19:07:52 +01:00
Browser Build: wrap make invocations with flock(1) 2019-12-28 21:09:33 +01:00
Calculator Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
ChanViewer Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
DisplayProperties DisplayProperties: Add a menubar 2019-12-30 14:03:31 +01:00
FileManager Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
FontEditor FontEditor: Add glyph spacing spinbox 2019-12-30 14:02:12 +01:00
Help Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
HexEditor Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
IRCClient Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
PaintBrush LibDraw+LibGUI: Allow changing individual colors in a Palette 2019-12-29 00:47:49 +01:00
Piano Piano: Factor wave rendering to its own function 2019-12-25 16:14:11 +01:00
QuickShow Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
SoundPlayer Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
SystemDialog Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
SystemMonitor Kernel: Refactor scheduler to use dynamic thread priorities 2019-12-30 18:46:17 +01:00
Taskbar Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
Terminal Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
TextEditor Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
Welcome Build: support library and generator dependencies 2019-12-25 10:11:09 +01:00
Makefile Build: clean up build system, use one shared Makefile 2019-12-20 20:20:54 +01:00