diff options
Diffstat (limited to 'static/netbsd/man9/sched_4bsd.9')
| -rw-r--r-- | static/netbsd/man9/sched_4bsd.9 | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/static/netbsd/man9/sched_4bsd.9 b/static/netbsd/man9/sched_4bsd.9 new file mode 100644 index 00000000..b33083e0 --- /dev/null +++ b/static/netbsd/man9/sched_4bsd.9 @@ -0,0 +1,106 @@ +.\" $NetBSD: sched_4bsd.9,v 1.9 2019/04/09 13:53:52 sevan Exp $ +.\" +.\" Copyright (c) 2002 The NetBSD Foundation, Inc. +.\" All rights reserved. +.\" +.\" This code is derived from software contributed to The NetBSD Foundation +.\" by Gregory McGarry and Daniel Sieger. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +.\" POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd April 9, 2019 +.Dt SCHED_4BSD 9 +.Os +.Sh NAME +.Nm sched_4bsd +.Nd The 4.4BSD thread scheduler +.Sh SYNOPSIS +.In sys/sched.h +.Ft void +.Fn resetpriority "lwp_t *l" +.Ft void +.Fn sched_tick "struct cpu_info *ci" +.Ft void +.Fn sched_schedclock "lwp_t *l" +.Ft void +.Fn sched_pstats_hook "struct proc *p" "int minslp" +.Ft void +.Fn sched_setrunnable "lwp_t *l" +.Ft void +.Fn updatepri "lwp_t *l" +.Sh DESCRIPTION +The traditional +.Bx 4.4 +scheduler employs a +.Dq multilevel feedback queues +algorithm, favouring interactive, short-running threads to +CPU-bound ones. +.Pp +.Fn 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. +.Pp +.Fn sched_tick +gets called from +.Xr hardclock 9 +every 100ms to force a switch between equal priority threads. +.Pp +The priority of the current thread is adjusted through +.Fn sched_schedclock . +The priority of a thread gets worse as it accumulates CPU time. +.Pp +.Fn sched_pstats_hook +gets called from +.Fn sched_pstats +every Hz ticks in order to recompute the priorities of all threads. +.Pp +.Fn sched_setrunnable +checks if an LWP has slept for more than one second. +If so, its priority is updated by +.Fn updatepri . +.Sh EXAMPLES +To determine the scheduler currently in use +.Bd -literal -offset indent +$ sysctl kern.sched.name +kern.sched.name = 4.4BSD +.Ed +.Sh CODE REFERENCES +The +.Bx 4.4 +scheduler subsystem is implemented within the file +.Pa sys/kern/sched_4bsd.c . +.Sh SEE ALSO +.Xr csf 9 , +.Xr hardclock 9 , +.Xr mi_switch 9 , +.Xr sched_m2 9 , +.Xr userret 9 +.Rs +.%A Marshall Kirk McKusick +.%A Keith Bostic +.%A Michael J. Karels +.%A John S. Quarterman +.%B "The Design and Implementation of the 4.4BSD Operating System" +.%I "Addison Wesley" +.%D 1996 +.Re |
