|
|
1.1 root 1: .\" Copyright (c) 1983 Regents of the University of California.
2: .\" All rights reserved. The Berkeley software License Agreement
3: .\" specifies the terms and conditions for redistribution.
4: .\"
5: .\" @(#)0.t 6.6 (Berkeley) 5/13/86
6: .\"
7: .if n .ND
8: .TL
9: Berkeley Software Architecture Manual
10: .br
11: 4.3BSD Edition
12: .AU
13: William Joy, Robert Fabry,
14: .AU
15: Samuel Leffler, M. Kirk McKusick,
16: .AU
17: Michael Karels
18: .AI
19: Computer Systems Research Group
20: Computer Science Division
21: Department of Electrical Engineering and Computer Science
22: University of California, Berkeley
23: Berkeley, CA 94720
24: .EH 'PS1:6-%''4.3BSD Architecture Manual'
25: .OH '4.3BSD Architecture Manual''PS1:6-%'
26: .AB
27: .FS
28: * UNIX is a trademark of Bell Laboratories.
29: .FE
30: This document summarizes the facilities
31: provided by the 4.3BSD version of the UNIX\|* operating system.
32: It does not attempt to act as a tutorial for use of the system
33: nor does it attempt to explain or justify the design of the
34: system facilities.
35: It gives neither motivation nor implementation details,
36: in favor of brevity.
37: .PP
38: The first section describes the basic kernel functions
39: provided to a UNIX process: process naming and protection,
40: memory management, software interrupts,
41: object references (descriptors), time and statistics functions,
42: and resource controls.
43: These facilities, as well as facilities for
44: bootstrap, shutdown and process accounting,
45: are provided solely by the kernel.
46: .PP
47: The second section describes the standard system
48: abstractions for
49: files and file systems,
50: communication,
51: terminal handling,
52: and process control and debugging.
53: These facilities are implemented by the operating system or by
54: network server processes.
55: .AE
56: .LP
57: .bp
58: .ft B
59: .br
60: .sv 2
61: .ce
62: TABLE OF CONTENTS
63: .ft R
64: .LP
65: .sp 1
66: .nf
67: .B "Introduction."
68: .LP
69: .if t .sp .5v
70: .nf
71: .B "0. Notation and types"
72: .LP
73: .if t .sp .5v
74: .nf
75: .B "1. Kernel primitives"
76: .LP
77: .if t .sp .5v
78: .nf
79: .nf
80: \fB1.1. Processes and protection\fP
81: 1.1.1. Host and process identifiers
82: 1.1.2. Process creation and termination
83: 1.1.3. User and group ids
84: 1.1.4. Process groups
85: .LP
86: .nf
87: \fB1.2. Memory management\fP
88: 1.2.1. Text, data and stack
89: 1.2.2. Mapping pages
90: 1.2.3. Page protection control
91: 1.2.4. Giving and getting advice
92: 1.2.5. Protection primitives
93: .LP
94: .if t .sp .5v
95: .nf
96: \fB1.3. Signals\fP
97: 1.3.1. Overview
98: 1.3.2. Signal types
99: 1.3.3. Signal handlers
100: 1.3.4. Sending signals
101: 1.3.5. Protecting critical sections
102: 1.3.6. Signal stacks
103: .LP
104: .if t .sp .5v
105: .nf
106: \fB1.4. Timing and statistics\fP
107: 1.4.1. Real time
108: 1.4.2. Interval time
109: .LP
110: .if t .sp .5v
111: .nf
112: \fB1.5. Descriptors\fP
113: 1.5.1. The reference table
114: 1.5.2. Descriptor properties
115: 1.5.3. Managing descriptor references
116: 1.5.4. Multiplexing requests
117: 1.5.5. Descriptor wrapping
118: .LP
119: .if t .sp .5v
120: .nf
121: \fB1.6. Resource controls\fP
122: 1.6.1. Process priorities
123: 1.6.2. Resource utilization
124: 1.6.3. Resource limits
125: .LP
126: .if t .sp .5v
127: .nf
128: \fB1.7. System operation support\fP
129: 1.7.1. Bootstrap operations
130: 1.7.2. Shutdown operations
131: 1.7.3. Accounting
132: .bp
133: .LP
134: .if t .sp .5v
135: .sp 1
136: .nf
137: \fB2. System facilities\fP
138: .LP
139: .if t .sp .5v
140: .nf
141: \fB2.1. Generic operations\fP
142: 2.1.1. Read and write
143: 2.1.2. Input/output control
144: 2.1.3. Non-blocking and asynchronous operations
145: .LP
146: .if t .sp .5v
147: .nf
148: \fB2.2. File system\fP
149: 2.2.1 Overview
150: 2.2.2. Naming
151: 2.2.3. Creation and removal
152: 2.2.3.1. Directory creation and removal
153: 2.2.3.2. File creation
154: 2.2.3.3. Creating references to devices
155: 2.2.3.4. Portal creation
156: 2.2.3.6. File, device, and portal removal
157: 2.2.4. Reading and modifying file attributes
158: 2.2.5. Links and renaming
159: 2.2.6. Extension and truncation
160: 2.2.7. Checking accessibility
161: 2.2.8. Locking
162: 2.2.9. Disc quotas
163: .LP
164: .if t .sp .5v
165: .nf
166: \fB2.3. Interprocess communication\fP
167: 2.3.1. Interprocess communication primitives
168: 2.3.1.1.\0 Communication domains
169: 2.3.1.2.\0 Socket types and protocols
170: 2.3.1.3.\0 Socket creation, naming and service establishment
171: 2.3.1.4.\0 Accepting connections
172: 2.3.1.5.\0 Making connections
173: 2.3.1.6.\0 Sending and receiving data
174: 2.3.1.7.\0 Scatter/gather and exchanging access rights
175: 2.3.1.8.\0 Using read and write with sockets
176: 2.3.1.9.\0 Shutting down halves of full-duplex connections
177: 2.3.1.10.\0 Socket and protocol options
178: 2.3.2. UNIX domain
179: 2.3.2.1. Types of sockets
180: 2.3.2.2. Naming
181: 2.3.2.3. Access rights transmission
182: 2.3.3. INTERNET domain
183: 2.3.3.1. Socket types and protocols
184: 2.3.3.2. Socket naming
185: 2.3.3.3. Access rights transmission
186: 2.3.3.4. Raw access
187: .LP
188: .if t .sp .5v
189: .nf
190: \fB2.4. Terminals and devices\fP
191: 2.4.1. Terminals
192: 2.4.1.1. Terminal input
193: 2.4.1.1.1 Input modes
194: 2.4.1.1.2 Interrupt characters
195: 2.4.1.1.3 Line editing
196: 2.4.1.2. Terminal output
197: 2.4.1.3. Terminal control operations
198: 2.4.1.4. Terminal hardware support
199: 2.4.2. Structured devices
200: 2.4.3. Unstructured devices
201: .LP
202: .if t .sp .5v
203: .nf
204: \fB2.5. Process control and debugging\fP
205: .LP
206: .if t .sp .5v
207: .nf
208: \fBI. Summary of facilities\fP
209: .LP
210: .de sh
211: .ds RH \\$1
212: .bp
213: .NH \\*(ss
214: \s+2\\$1\s0
215: .PP
216: .PP
217: ..
218: .bp
219: .ds ss 1
220: .de _d
221: .if t .ta .6i 2.1i 2.6i
222: .\" 2.94 went to 2.6, 3.64 to 3.30
223: .if n .ta .84i 2.6i 3.30i
224: ..
225: .de _f
226: .if t .ta .5i 1.25i 2.5i 3.5i
227: .\" 3.5i went to 3.8i
228: .if n .ta .7i 1.75i 3.8i 4.8i
229: ..
230: .nr H1 -1
231: .sh "Notation and types
232: .PP
233: The notation used to describe system calls is a variant of a
234: C language call, consisting of a prototype call followed by
235: declaration of parameters and results.
236: An additional keyword \fBresult\fP, not part of the normal C language,
237: is used to indicate which of the declared entities receive results.
238: As an example, consider the \fIread\fP call, as described in
239: section 2.1:
240: .DS
241: cc = read(fd, buf, nbytes);
242: result int cc; int fd; result char *buf; int nbytes;
243: .DE
244: The first line shows how the \fIread\fP routine is called, with
245: three parameters.
246: As shown on the second line \fIcc\fP is an integer and \fIread\fP also
247: returns information in the parameter \fIbuf\fP.
248: .PP
249: Description of all error conditions arising from each system call
250: is not provided here; they appear in the programmer's manual.
251: In particular, when accessed from the C language,
252: many calls return a characteristic \-1 value
253: when an error occurs, returning the error code in the global variable
254: \fIerrno\fP.
255: Other languages may present errors in different ways.
256: .PP
257: A number of system standard types are defined in the include file
258: .I <sys/types.h>
259: and used in the specifications here and in many C programs.
260: These include \fBcaddr_t\fP giving a memory address (typically as
261: a character pointer),
262: \fBoff_t\fP giving a file offset (typically as a long integer),
263: and a set of unsigned types \fBu_char\fP, \fBu_short\fP, \fBu_int\fP
264: and \fBu_long\fP, shorthand names for \fBunsigned char\fP, \fBunsigned
265: short\fP, etc.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.