Browse Prior Art Database

Kernel Critical Section Support for High-Level Language Code

IP.com Disclosure Number: IPCOM000102792D
Original Publication Date: 1990-Feb-01
Included in the Prior Art Database: 2005-Mar-17
Document File: 1 page(s) / 56K

Publishing Venue

IBM

Related People

Auslander, M: AUTHOR [+4]

Abstract

Disclosed is a technique that allows kernel critical sections written in a high level language to be called on a stack that is not pinned in memory. The begin critical sections service touches the caller's stack, thus forcing the stack into real memory. The service then records the location of the stack in the current process control block so that the dispatcher can ensure that the stack is in real memory before dispatching that process.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 66% of the total text.

Kernel Critical Section Support for High-Level Language Code

      Disclosed is a technique that allows kernel critical sections
written in a high level language to be called on a stack that is not
pinned in memory. The begin critical sections service touches the
caller's stack, thus forcing the stack into real memory. The service
then records the location of the stack in the current process control
block so that the dispatcher can ensure that the stack is in real
memory before dispatching that process.

      In a pageable/pre-emptable kernel it is hard to write services
that must disable interrupts in order to serialize the service's
operation because the caller's stack may or may not be pinned.  Two
traditional solutions to this problem are to either write the service
in assembler and not use the stack or switch to a pinned stack.
Writing the code in assemble is not desirable because of increased
programming and maintenance cost.  For example, the code must be
rewritten for each new machine architecture. Switching to a pinned
stack is not desirable because the service may need to wait, thus
causing a resource bottle neck or requiring one pinned stack per
process.

      An alternative is to pin the caller's stack.  The begin
critical section and end critical section services work on a
variation of this idea. These services touch a predefined amount of
stack on either side of the current stack pointer thus ensuring that
there is plenty of stack in memory fo...