Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


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.

NetBSD 10.99                     April 9, 2019                    NetBSD 10.99