SCHED_4BSD(9)

SCHED_4BSD(9) | Kernel Developer's Manual | SCHED_4BSD(9)

# NAME

`sched_4bsd` — The 4.4BSD thread scheduler

# SYNOPSIS

`#include <sys/sched.h>`

void
`resetpriority`(lwp_t *l);

void
`sched_tick`(struct cpu_info *ci);

void
`sched_schedclock`(lwp_t *l);

void
`sched_pstats_hook`(struct proc *p, int minslp);

void
`sched_setrunnable`(lwp_t *l);

void
`updatepri`(lwp_t *l);

# DESCRIPTION

The traditional 4.4BSD scheduler employs a “multilevel feedback queues” algorithm, favouring interactive, short-running threads to CPU-bound ones.

`resetpriority`() recomputes the priority of a thread running in user mode. If the resulting priority is higher than that of the current thread, a reschedule is arranged.

`sched_tick`() gets called from hardclock(9) every 100ms to force a switch between equal priority threads.

The priority of the current thread is adjusted through `sched_schedclock`(). The priority of a thread gets worse as it accumulates CPU time.

`sched_pstats_hook`() gets called from `sched_pstats`() every Hz ticks in order to recompute the priorities of all threads.

`sched_setrunnable`() checks if an LWP has slept for more than one second. If so, its priority is updated by `updatepri`().

# EXAMPLES

To determine the scheduler currently in use

    $ sysctl kern.sched.name
    kern.sched.name = 4.4BSD

# CODE REFERENCES

The 4.4BSD scheduler subsystem is implemented within the file sys/kern/sched_4bsd.c.

# SEE ALSO

csf(9), hardclock(9), mi_switch(9), sched_m2(9), userret(9)

Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, and John S. Quarterman, The Design and Implementation of the 4.4BSD Operating System, Addison Wesley, 1996.

April 9, 2019 | NetBSD 11.0