serialize() - force target process to run serially with other
int serialize(int timeshare, pid_t pid);
The serialize() system call is used to force the target process
referenced by the pid value passed in to run serially with other
processes also marked for serialization. If the value of pid is zero,
then the currently running process is marked for serialization. Once
a process has been marked by serialize(), the process stays marked
until process completion, unless serialize() is reissued on the
serialized process with timeshare set to 1. If timeshare is set to 1,
the process specified in pid will be returned to normal timeshare
This call is used to improve process throughput since process
throughput usually increases for large processes when they are
executed serially instead of allowing each program to run for only a
short period of time. By running large processes one at a time, the
system makes more efficient use of the CPU as well as system memory,
since each process does not end up constantly faulting in its working
set, to only have the pages stolen when another process starts
running. As long as there is enough memory in the system, processes
marked by serialize() behave no differently from other processes in
the system. However, once memory becomes tight, processes marked by
serialize() are run one at a time with the highest priority processes
being run first. Each process runs for a finite interval of time
before another serialized process is allowed to run.
serialize() returns zero upon successful completion, or nonzero if the
system call failed.
If serialize() fails, it sets errno (see errno(2)) to the following
[ESRCH] The pid passed in does not exist.
The user has no way of forcing an execution order on serialized
serialize() was developed by HP.
Hewlett-Packard Company - 1 - HP-UX Release 11i: November 2000
Hewlett-Packard Company - 2 - HP-UX Release 11i: November 2000