head	1.2;
access;
symbols
	RELENG_8_4:1.2.0.2
	RELENG_9_1_0_RELEASE:1.1.42.1.4.2
	RELENG_9_1:1.1.42.1.0.4
	RELENG_9_1_BP:1.1.42.1
	RELENG_8_3_0_RELEASE:1.1.36.1.8.1
	RELENG_8_3:1.1.36.1.0.8
	RELENG_8_3_BP:1.1.36.1
	RELENG_9_0_0_RELEASE:1.1.42.1.2.1
	RELENG_9_0:1.1.42.1.0.2
	RELENG_9_0_BP:1.1.42.1
	RELENG_9:1.1.0.42
	RELENG_9_BP:1.1
	RELENG_7_4_0_RELEASE:1.1.40.1
	RELENG_8_2_0_RELEASE:1.1.36.1.6.1
	RELENG_7_4:1.1.0.40
	RELENG_7_4_BP:1.1
	RELENG_8_2:1.1.36.1.0.6
	RELENG_8_2_BP:1.1.36.1
	RELENG_8_1_0_RELEASE:1.1.36.1.4.1
	RELENG_8_1:1.1.36.1.0.4
	RELENG_8_1_BP:1.1.36.1
	RELENG_7_3_0_RELEASE:1.1.38.1
	RELENG_7_3:1.1.0.38
	RELENG_7_3_BP:1.1
	RELENG_8_0_0_RELEASE:1.1.36.1.2.1
	RELENG_8_0:1.1.36.1.0.2
	RELENG_8_0_BP:1.1.36.1
	RELENG_8:1.1.0.36
	RELENG_8_BP:1.1
	RELENG_7_2_0_RELEASE:1.1.34.1
	RELENG_7_2:1.1.0.34
	RELENG_7_2_BP:1.1
	RELENG_7_1_0_RELEASE:1.1.32.1
	RELENG_6_4_0_RELEASE:1.1.30.1
	RELENG_7_1:1.1.0.32
	RELENG_7_1_BP:1.1
	RELENG_6_4:1.1.0.30
	RELENG_6_4_BP:1.1
	RELENG_7_0_0_RELEASE:1.1
	RELENG_6_3_0_RELEASE:1.1
	RELENG_7_0:1.1.0.28
	RELENG_7_0_BP:1.1
	RELENG_6_3:1.1.0.26
	RELENG_6_3_BP:1.1
	RELENG_7:1.1.0.24
	RELENG_7_BP:1.1
	RELENG_6_2_0_RELEASE:1.1
	RELENG_6_2:1.1.0.22
	RELENG_6_2_BP:1.1
	RELENG_5_5_0_RELEASE:1.1
	RELENG_5_5:1.1.0.20
	RELENG_5_5_BP:1.1
	RELENG_6_1_0_RELEASE:1.1
	RELENG_6_1:1.1.0.18
	RELENG_6_1_BP:1.1
	RELENG_6_0_0_RELEASE:1.1
	RELENG_6_0:1.1.0.16
	RELENG_6_0_BP:1.1
	RELENG_6:1.1.0.14
	RELENG_6_BP:1.1
	RELENG_5_4_0_RELEASE:1.1
	RELENG_5_4:1.1.0.12
	RELENG_5_4_BP:1.1
	RELENG_5_3_0_RELEASE:1.1
	RELENG_5_3:1.1.0.10
	RELENG_5_3_BP:1.1
	RELENG_5:1.1.0.8
	RELENG_5_BP:1.1
	RELENG_5_2_1_RELEASE:1.1
	RELENG_5_2_0_RELEASE:1.1
	RELENG_5_2:1.1.0.6
	RELENG_5_2_BP:1.1
	RELENG_5_1_0_RELEASE:1.1
	RELENG_5_1:1.1.0.4
	RELENG_5_1_BP:1.1
	RELENG_5_0_0_RELEASE:1.1
	RELENG_5_0:1.1.0.2
	RELENG_5_0_BP:1.1;
locks; strict;
comment	@# @;


1.2
date	2012.11.17.01.50.28;	author svnexp;	state Exp;
branches
	1.2.2.1;
next	1.1;

1.1
date	2002.05.19.05.31.37;	author grog;	state Exp;
branches
	1.1.14.1
	1.1.24.1
	1.1.30.1
	1.1.32.1
	1.1.34.1
	1.1.36.1
	1.1.38.1
	1.1.40.1
	1.1.42.1;
next	;

1.2.2.1
date	2012.11.17.01.50.28;	author svnexp;	state dead;
branches;
next	1.2.2.2;

1.2.2.2
date	2013.03.28.13.03.40;	author svnexp;	state Exp;
branches;
next	;

1.1.14.1
date	2012.11.17.07.41.28;	author svnexp;	state Exp;
branches;
next	;

1.1.24.1
date	2012.11.17.08.03.48;	author svnexp;	state Exp;
branches;
next	;

1.1.30.1
date	2008.10.02.02.57.24;	author kensmith;	state Exp;
branches;
next	;

1.1.32.1
date	2008.11.25.02.59.29;	author kensmith;	state Exp;
branches;
next	;

1.1.34.1
date	2009.04.15.03.14.26;	author kensmith;	state Exp;
branches;
next	;

1.1.36.1
date	2009.08.03.08.13.06;	author kensmith;	state Exp;
branches
	1.1.36.1.2.1
	1.1.36.1.4.1
	1.1.36.1.6.1
	1.1.36.1.8.1;
next	1.1.36.2;

1.1.36.2
date	2012.11.17.10.36.18;	author svnexp;	state Exp;
branches;
next	;

1.1.36.1.2.1
date	2009.10.25.01.10.29;	author kensmith;	state Exp;
branches;
next	;

1.1.36.1.4.1
date	2010.06.14.02.09.06;	author kensmith;	state Exp;
branches;
next	;

1.1.36.1.6.1
date	2010.12.21.17.09.25;	author kensmith;	state Exp;
branches;
next	;

1.1.36.1.8.1
date	2012.03.03.06.15.13;	author kensmith;	state Exp;
branches;
next	1.1.36.1.8.2;

1.1.36.1.8.2
date	2012.11.17.08.24.58;	author svnexp;	state Exp;
branches;
next	;

1.1.38.1
date	2010.02.10.00.26.20;	author kensmith;	state Exp;
branches;
next	;

1.1.40.1
date	2010.12.21.17.10.29;	author kensmith;	state Exp;
branches;
next	1.1.40.2;

1.1.40.2
date	2012.11.17.08.16.56;	author svnexp;	state Exp;
branches;
next	;

1.1.42.1
date	2011.09.23.00.51.37;	author kensmith;	state Exp;
branches
	1.1.42.1.2.1
	1.1.42.1.4.1;
next	1.1.42.2;

1.1.42.2
date	2012.11.17.11.36.34;	author svnexp;	state Exp;
branches;
next	;

1.1.42.1.2.1
date	2011.11.11.04.20.22;	author kensmith;	state Exp;
branches;
next	1.1.42.1.2.2;

1.1.42.1.2.2
date	2012.11.17.08.36.33;	author svnexp;	state Exp;
branches;
next	;

1.1.42.1.4.1
date	2012.08.05.23.54.33;	author kensmith;	state Exp;
branches;
next	1.1.42.1.4.2;

1.1.42.1.4.2
date	2012.11.17.08.47.23;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Switching exporter and resync
@
text
@.\" This module is believed to contain source code proprietary to AT&T.
.\" Use and redistribution is subject to the Berkeley Software License
.\" Agreement and your Software Agreement with AT&T (Western Electric).
.\"
.\"	@@(#)p3	8.1 (Berkeley) 6/8/93
.\"
.\" $FreeBSD: head/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
.SH
V. PROCESSES AND IMAGES
.PP
An
.IT image
is a computer execution environment.
It includes a memory image,
general register values,
status of open files,
current directory and the like.
An image is the current state of a pseudo-computer.
.PP
A
.IT process
is the execution of an image.
While the processor is executing on behalf of a process,
the image must reside in main memory;
during the execution of other processes it remains in main memory
unless the appearance of an active, higher-priority
process
forces it to be swapped out to the disk.
.PP
The user-memory part of an image is divided into three logical segments.
The program text segment begins at location 0 in the virtual address space.
During execution, this segment is write-protected
and a single copy of it is shared among
all processes executing the same program.
At the first hardware protection byte boundary above the program text segment in the
virtual address space begins a non-shared, writable data segment,
the size of which may be extended by a system call.
Starting at the highest
address in the virtual address space is a stack segment,
which automatically grows downward
as the stack pointer fluctuates.
.SH
5.1 Processes
.PP
Except while
the system
is bootstrapping itself into operation, a new
process can come into existence only
by use of the
.UL fork
system call:
.P1
processid = fork\|(\|\|)\|
.P2
When
.UL fork
is executed, the process
splits into two independently executing processes.
The two processes have independent
copies of the original memory image,
and share all open files.
The new processes differ only in that one is considered
the parent process:
in the parent,
the returned
.UL processid
actually identifies the child process
and is never 0,
while in the child,
the returned value is always 0.
.PP
Because the values returned by
.UL fork
in the parent and child process are distinguishable,
each process may determine whether
it is the parent or child.
.SH
5.2 Pipes
.PP
Processes may communicate
with related processes using the same system
.UL read
and
.UL write
calls that are used for file-system I/O.
The call:
.P1
filep = pipe\|(\|\|)\|
.P2
returns a file descriptor
.UL filep
and
creates an inter-process channel called a
.IT pipe .
This channel, like other open files, is passed from parent to child process in
the image by the
.UL fork
call.
A
.UL read
using a pipe file descriptor
waits until another process writes using the
file descriptor for the same pipe.
At this point, data are passed between the images of the
two processes.
Neither process need know that a pipe,
rather than an ordinary file,
is involved.
.PP
Although
inter-process communication
via pipes is a quite valuable tool
(see Section 6.2),
it is not a completely general
mechanism,
because the pipe must be set up by a common ancestor
of the processes involved.
.SH
5.3 Execution of programs
.PP
Another major system primitive
is invoked by
.P1
execute\|(\|file, arg\*s\d1\u\*n, arg\*s\d2\u\*n, .\|.\|. , arg\*s\dn\u\*n\|)\|
.P2
which requests the system to read in and execute the program
named by
.UL file ,
passing it string arguments
.UL arg\v'.3'\*s1\*n\v'-.3'\| ,
.UL arg\v'.3'\*s2\*n\v'-.3'\| ,
.UL .\|.\|.\|\| ,
.UL arg\v'.3'\*sn\*n\v'-.3' .
All the code and data in the process invoking
.UL execute
is replaced from the
.UL file ,
but
open files, current directory, and
inter-process relationships are unaltered.
Only if the call fails, for example
because
.UL file
could not be found or because
its execute-permission bit was not set, does a return
take place from the
.UL execute
primitive;
it resembles a ``jump'' machine instruction
rather than a subroutine call.
.SH
5.4 Process synchronization
.PP
Another process control system call:
.P1
processid = wait\|(\|status\|)\|
.P2
causes its caller to suspend
execution until one of its children has completed execution.
Then
.UL wait
returns the
.UL processid
of the terminated process.
An error return is taken if the calling process has no
descendants.
Certain status from the child process
is also available.
.SH
5.5 Termination
.PP
Lastly:
.P1
exit\|(\|status\|)\|
.P2
terminates a process,
destroys its image,
closes its open files,
and generally obliterates it.
The parent is notified through
the
.UL wait
primitive,
and
.UL status
is made available
to it.
Processes may also terminate as a result of
various illegal actions or user-generated signals
(Section VII below).
@


1.2.2.1
log
@file p3 was added on branch RELENG_8_4 on 2013-03-28 13:03:40 +0000
@
text
@d1 190
@


1.2.2.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 190
.\" This module is believed to contain source code proprietary to AT&T.
.\" Use and redistribution is subject to the Berkeley Software License
.\" Agreement and your Software Agreement with AT&T (Western Electric).
.\"
.\"	@@(#)p3	8.1 (Berkeley) 6/8/93
.\"
.\" $FreeBSD: releng/8.4/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
.SH
V. PROCESSES AND IMAGES
.PP
An
.IT image
is a computer execution environment.
It includes a memory image,
general register values,
status of open files,
current directory and the like.
An image is the current state of a pseudo-computer.
.PP
A
.IT process
is the execution of an image.
While the processor is executing on behalf of a process,
the image must reside in main memory;
during the execution of other processes it remains in main memory
unless the appearance of an active, higher-priority
process
forces it to be swapped out to the disk.
.PP
The user-memory part of an image is divided into three logical segments.
The program text segment begins at location 0 in the virtual address space.
During execution, this segment is write-protected
and a single copy of it is shared among
all processes executing the same program.
At the first hardware protection byte boundary above the program text segment in the
virtual address space begins a non-shared, writable data segment,
the size of which may be extended by a system call.
Starting at the highest
address in the virtual address space is a stack segment,
which automatically grows downward
as the stack pointer fluctuates.
.SH
5.1 Processes
.PP
Except while
the system
is bootstrapping itself into operation, a new
process can come into existence only
by use of the
.UL fork
system call:
.P1
processid = fork\|(\|\|)\|
.P2
When
.UL fork
is executed, the process
splits into two independently executing processes.
The two processes have independent
copies of the original memory image,
and share all open files.
The new processes differ only in that one is considered
the parent process:
in the parent,
the returned
.UL processid
actually identifies the child process
and is never 0,
while in the child,
the returned value is always 0.
.PP
Because the values returned by
.UL fork
in the parent and child process are distinguishable,
each process may determine whether
it is the parent or child.
.SH
5.2 Pipes
.PP
Processes may communicate
with related processes using the same system
.UL read
and
.UL write
calls that are used for file-system I/O.
The call:
.P1
filep = pipe\|(\|\|)\|
.P2
returns a file descriptor
.UL filep
and
creates an inter-process channel called a
.IT pipe .
This channel, like other open files, is passed from parent to child process in
the image by the
.UL fork
call.
A
.UL read
using a pipe file descriptor
waits until another process writes using the
file descriptor for the same pipe.
At this point, data are passed between the images of the
two processes.
Neither process need know that a pipe,
rather than an ordinary file,
is involved.
.PP
Although
inter-process communication
via pipes is a quite valuable tool
(see Section 6.2),
it is not a completely general
mechanism,
because the pipe must be set up by a common ancestor
of the processes involved.
.SH
5.3 Execution of programs
.PP
Another major system primitive
is invoked by
.P1
execute\|(\|file, arg\*s\d1\u\*n, arg\*s\d2\u\*n, .\|.\|. , arg\*s\dn\u\*n\|)\|
.P2
which requests the system to read in and execute the program
named by
.UL file ,
passing it string arguments
.UL arg\v'.3'\*s1\*n\v'-.3'\| ,
.UL arg\v'.3'\*s2\*n\v'-.3'\| ,
.UL .\|.\|.\|\| ,
.UL arg\v'.3'\*sn\*n\v'-.3' .
All the code and data in the process invoking
.UL execute
is replaced from the
.UL file ,
but
open files, current directory, and
inter-process relationships are unaltered.
Only if the call fails, for example
because
.UL file
could not be found or because
its execute-permission bit was not set, does a return
take place from the
.UL execute
primitive;
it resembles a ``jump'' machine instruction
rather than a subroutine call.
.SH
5.4 Process synchronization
.PP
Another process control system call:
.P1
processid = wait\|(\|status\|)\|
.P2
causes its caller to suspend
execution until one of its children has completed execution.
Then
.UL wait
returns the
.UL processid
of the terminated process.
An error return is taken if the calling process has no
descendants.
Certain status from the child process
is also available.
.SH
5.5 Termination
.PP
Lastly:
.P1
exit\|(\|status\|)\|
.P2
terminates a process,
destroys its image,
closes its open files,
and generally obliterates it.
The parent is notified through
the
.UL wait
primitive,
and
.UL status
is made available
to it.
Processes may also terminate as a result of
various illegal actions or user-generated signals
(Section VII below).
@


1.1
log
@Initial checkin: 4.4BSD version.  These files need to be updated with
current license information and adapted to the FreeBSD build
environment before they will build.

Approved by:    David Taylor <davidt@@caldera.com>
@
text
@d7 1
a7 1
.\" $FreeBSD$
@


1.1.24.1
log
@Switch importer
@
text
@d7 1
a7 1
.\" $FreeBSD: stable/7/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.14.1
log
@Switch importer
@
text
@d7 1
a7 1
.\" $FreeBSD: stable/6/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.42.1
log
@SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.1.42.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242902
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242902 | dteske | 2012-11-11 23:29:45 +0000 (Sun, 11 Nov 2012) | 10 lines
## SVN ##
## SVN ## Fix a regression introduced by SVN r211417 that saw the breakage of a feature
## SVN ## documented in usr.sbin/sysinstall/help/shortcuts.hlp (reproduced below):
## SVN ##
## SVN ## If /usr/sbin/sysinstall is linked to another filename, say
## SVN ## `/usr/local/bin/configPackages', then the basename will be used
## SVN ## as an implicit command name.
## SVN ##
## SVN ## Reviewed by:	adrian (co-mentor)
## SVN ## Approved by:	adrian (co-mentor)
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d7 1
a7 1
.\" $FreeBSD: stable/9/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.42.1.4.1
log
@SVN rev 239080 on 2012-08-05 23:54:33Z by kensmith

Copy stable/9 to releng/9.1 as part of the 9.1-RELEASE release process.

Approved by:	re (implicit)
@
text
@@


1.1.42.1.4.2
log
@Switch importer
@
text
@d7 1
a7 1
.\" $FreeBSD: releng/9.1/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.42.1.2.1
log
@SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)
@
text
@@


1.1.42.1.2.2
log
@Switch importer
@
text
@d7 1
a7 1
.\" $FreeBSD: releng/9.0/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.40.1
log
@SVN rev 216618 on 2010-12-21 17:10:29Z by kensmith

Copy stable/7 to releng/7.4 in preparation for FreeBSD-7.4 release.

Approved by:	re (implicit)
@
text
@@


1.1.40.2
log
@Switch importer
@
text
@d7 1
a7 1
.\" $FreeBSD: releng/7.4/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.38.1
log
@SVN rev 203736 on 2010-02-10 00:26:20Z by kensmith

Copy stable/7 to releng/7.3 as part of the 7.3-RELEASE process.

Approved by:	re (implicit)
@
text
@@


1.1.36.1
log
@SVN rev 196045 on 2009-08-03 08:13:06Z by kensmith

Copy head to stable/8 as part of 8.0 Release cycle.

Approved by:	re (Implicit)
@
text
@@


1.1.36.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242909
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242909 | dim | 2012-11-12 07:47:19 +0000 (Mon, 12 Nov 2012) | 20 lines
## SVN ##
## SVN ## MFC r242625:
## SVN ##
## SVN ## Remove duplicate const specifiers in many drivers (I hope I got all of
## SVN ## them, please let me know if not).  Most of these are of the form:
## SVN ##
## SVN ## static const struct bzzt_type {
## SVN ##       [...list of members...]
## SVN ## } const bzzt_devs[] = {
## SVN ##       [...list of initializers...]
## SVN ## };
## SVN ##
## SVN ## The second const is unnecessary, as arrays cannot be modified anyway,
## SVN ## and if the elements are const, the whole thing is const automatically
## SVN ## (e.g. it is placed in .rodata).
## SVN ##
## SVN ## I have verified this does not change the binary output of a full kernel
## SVN ## build (except for build timestamps embedded in the object files).
## SVN ##
## SVN ## Reviewed by:	yongari, marius
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d7 1
a7 1
.\" $FreeBSD: stable/8/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.36.1.8.1
log
@SVN rev 232438 on 2012-03-03 06:15:13Z by kensmith

Copy stable/8 to releng/8.3 as part of 8.3-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.1.36.1.8.2
log
@Switch importer
@
text
@d7 1
a7 1
.\" $FreeBSD: releng/8.3/share/doc/psd/01.cacm/p3 96914 2002-05-19 05:31:37Z grog $
@


1.1.36.1.6.1
log
@SVN rev 216617 on 2010-12-21 17:09:25Z by kensmith

Copy stable/8 to releng/8.2 in preparation for FreeBSD-8.2 release.

Approved by:	re (implicit)
@
text
@@


1.1.36.1.4.1
log
@SVN rev 209145 on 2010-06-14 02:09:06Z by kensmith

Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.

Approved by:	re (implicit)
@
text
@@


1.1.36.1.2.1
log
@SVN rev 198460 on 2009-10-25 01:10:29Z by kensmith

Copy stable/8 to releng/8.0 as part of 8.0-RELEASE release procedure.

Approved by:	re (implicit)
@
text
@@


1.1.34.1
log
@SVN rev 191087 on 2009-04-15 03:14:26Z by kensmith

Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.

Approved by:	re (implicit)
@
text
@@


1.1.32.1
log
@SVN rev 185281 on 2008-11-25 02:59:29Z by kensmith

Create releng/7.1 in preparation for moving into RC phase of 7.1 release
cycle.

Approved by:	re (implicit)
@
text
@@


1.1.30.1
log
@SVN rev 183531 on 2008-10-02 02:57:24Z by kensmith

Create releng/6.4 from stable/6 in preparation for 6.4-RC1.

Approved by:	re (implicit)
@
text
@@

