> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/4.3-bsd-unix-cao-zuo-xi-tong-she-ji-yu-shi-xian/di-yi-bu-fen-gai-lan/1.4.-fa-bu-gong-cheng.md).

# 1.4 发布工程

CSRG 始终是一小群软件开发者。资源有限，要求谨慎的软件工程管理。需要细心协调的不仅是 CSRG 人员，还有为系统开发做贡献的社区成员。主要发行版通常在两类之间交替：

* 重大新设施：3BSD、4.0BSD、4.2BSD
* 错误修复与效率改进：4.1BSD、4.3BSD

这种交替既保证及时发布，又为新设施的精炼与纠错、以及消除新设施带来的性能问题留出余地。新设施发布之后及时跟进，反映出 CSRG 对提供一个可靠、健壮、用户社区可以信赖的系统何等重视。

CSRG 的开发成果分三步发布：alpha、beta 和 final，如表 1.1 所示。alpha 和 beta 版并不是真正的发行版——它们是测试系统。alpha 版通常只提供给少数站点，其中多数在校内。得到 beta 版的站点更多，但不直接获取；整个流程组织成树状，让错误报告、修复和新软件先由第一层站点收集、评估并查重，再转交 CSRG。例如，4.1aBSD 曾在 100 多个站点运行，但一级 beta 站点只有大约 15 个。这棵 beta 测试树让 CSRG 的开发者得以专注于实际开发，而不是在来自每个 beta 站点的细节里筛筛捡捡。本书的技术审校也经由类似的过程完成。

表 1.1 发布测试步骤

|       | alpha   | internal | beta    | final  |
| ----- | ------- | -------- | ------- | ------ |
| 名称    | 4.1aBSD | 4.1bBSD  | 4.1cBSD | 4.2BSD |
| 主要新设施 | 联网      | 快速文件系统   | 进程间通信   | 修订后的信号 |

许多一级 beta 测试人员不仅在自己的机器上运行发行版，还在伯克利的开发机上拥有登录账号。这些用户常常从马萨诸塞、犹他、马里兰、得克萨斯、伊利诺伊这样远的地方，或斯坦福这样较近的地方，经由 ARPA Internet、有时通过电话拨号登录到伯克利。在 4.3BSD 发行期间，某些账号和用户有权直接修改系统源码的主副本。许多设施——如 Fortran 和 C 编译器，以及 `telnet` 和 `ftp` 等重要系统程序——都包含非 CSRG 人员的重大贡献。这一做法有一个重要例外：对内核的修改只能由 CSRG 人员进行，尽管修改常常出自更大社区的提议。

获准访问主源码的人事先经过仔细筛查，但并不受到严密监督。他们的工作在 beta 测试期结束时由 CSRG 人员检查——把上一版的源码与当前主源码做一次完整比较，例如把 4.3BSD 与 4.2BSD 相比。被认定不合适的设施，例如目录列表命令的新选项或 `fseek()` 库例程返回值的变更，会在最终发行前从源码中剔除。

4BSD 发行版通常附带一对文档，逐一说明每个用户级命令 \[McKusick et al., 1986] 和每个内核源文件 \[Karels, 1986] 的变化。这些文档随最终发行版交付。用户按名字一查任何命令，就能立即看到改了什么；开发者同样可以按名字查任何内核文件，得到该文件变化的摘要。

这个过程展示了 **主力开发者人数少** 的一个优点：所有开发者都透彻了解整个系统，足以把自己的工作与他人的工作协调起来，产出连贯一致的最终系统。拥有庞大开发组织的公司发现这种结果难以复制。

CSRG 没有市场部门。因此，技术决策基本出于技术理由，不受营销承诺驱使。伯克利的开发者对此近乎偏执，并以从不承诺具体交付日期而闻名。

## 参考文献

AT\&T, 1987. AT\&T, *The System V Interface Definition (SVID)*, Issue 2, American Telephone and Telegraph, Murray Hill, NJ (January 1987).

Babaoğlu & Joy, 1981. Ö. Babaoğlu & W. N. Joy, “Converting a Swap-Based System to Do Paging in an Architecture Lacking Page-Referenced Bits,” *Proceedings of the Eighth Symposium on Operating Systems Principles*, pp. 78–86 (December 1981).

Bach, 1986. M. J. Bach, *The Design of the UNIX Operating System*, Prentice-Hall, Englewood Cliffs, NJ (1986).

Cerf & Cain, 1983. V. G. Cerf & E. Cain, *The DoD Internet Architecture Model*, Elsevier Science, Amsterdam, Netherlands (1983).

Chambers & Quarterman, 1983. J. B. Chambers & J. S. Quarterman, “UNIX System V and 4.1C BSD,” *USENIX Association Conference Proceedings*, pp. 267–291 (June 1983).

Comer, 1984. D. Comer, *Operating System Design: The Xinu Approach*, Prentice-Hall, Englewood Cliffs, NJ (1984).

Compton, 1985. M. Compton, editor, “The Evolution of UNIX,” *UNIX Review* **3**(1) (January 1985).

Ewens et al., 1985. P. Ewens, D. R. Blythe, M. Funkenhauser, & R. C. Holt, “Tunis: A Distributed Multiprocessor Operating System,” *USENIX Association Conference Proceedings*, pp. 247–254 (June 1985).

Holt, 1983. R. C. Holt, *Concurrent Euclid, the UNIX System, and Tunis*, Addison-Wesley, Reading, MA (1983).

Joy, 1980. W. N. Joy, “Comments on the Performance of UNIX on the VAX,” Technical Report, University of California Computer System Research Group, Berkeley, CA (April 1980).

Jung, 1985. R. S. Jung, “Porting the AT\&T Demand Paged UNIX Implementation to Microcomputers,” *USENIX Association Conference Proceedings*, pp. 361–370 (June 1985).

Karels, 1986. M. J. Karels, “Changes to the Kernel in 4.3BSD,” pp. 13:1–32 in *UNIX System Manager's Manual, 4.3 Berkeley Software Distribution, Virtual VAX-11 Version*, USENIX Association, Berkeley, CA (1986).

Kashtan, 1980. D. L. Kashtan, “UNIX and VMS: Some Performance Comparisons,” Technical Report, SRI International, Menlo Park, CA (February 1980).

Kernighan & Ritchie, 1978. B. W. Kernighan & D. M. Ritchie, *The C Programming Language*, Prentice-Hall, Englewood Cliffs, NJ (1978).

Kernighan & Ritchie, 1988. B. W. Kernighan & D. M. Ritchie, *The C Programming Language*, 2nd ed, Prentice-Hall, Englewood Cliffs, NJ (1988).

McKusick, 1985. M. K. McKusick, “A Berkeley Odyssey,” *UNIX Review* **3**(1), p. 30 (January 1985).

McKusick et al., 1986. M. K. McKusick, J. M. Bloom, & M. J. Karels, “Bug Fixes and Changes in 4.3BSD,” pp. 12:1–22 in *UNIX System Manager's Manual, 4.3 Berkeley Software Distribution, Virtual VAX-11 Version*, USENIX Association, Berkeley, CA (1986).

Miller, 1978. R. Miller, “UNIX—A Portable Operating System,” *ACM Operating System Review* **12**(3), pp. 32–37 (July 1978).

Miller, 1984. R. Miller, “A Demand Paging Virtual Memory Manager for System V,” *USENIX Association Conference Proceedings*, pp. 178–182 (June 1984).

Mohr, 1985. A. Mohr, “The Genesis Story,” *UNIX Review* **3**(1), p. 18 (January 1985).

Organick, 1975. E. I. Organick, *The Multics System: An Examination of Its Structure*, MIT Press, Cambridge, MA (1975).

P1003.1, 1988. P1003.1, *IEEE P1003.1 Portable Operating System Interface for Computer Environments (POSIX)*, Institute of Electrical and Electronic Engineers, Piscataway, NJ (1988).

Peirce, 1985. N. Peirce, “Putting UNIX In Perspective: An Interview with Victor Vyssotsky,” *UNIX Review* **3**(1), p. 58 (January 1985).

Popek, 1981. B. Popek, “Locus: A Network Transparent, High Reliability Distributed System,” *Proceedings of the Eighth Symposium on Operating Systems Principles*, pp. 169–177 (December 1981).

Presotto & Ritchie, 1985. D. L. Presotto & D. M. Ritchie, “Interprocess Communication in the Eighth Edition UNIX System,” *USENIX Association Conference Proceedings*, pp. 309–316 (June 1985).

Richards & Whitby-Strevens, 1982. M. Richards & C. Whitby-Strevens, *BCPL: The Language and Its Compiler*, Cambridge University Press, Cambridge, UK (1980, 1982).

Ritchie, 1978. D. M. Ritchie, “A Retrospective,” *Bell System Technical Journal* **57**(6), pp. 1947–1969 (July–August 1978).

Ritchie et al., 1978. D. M. Ritchie, S. C. Johnson, M. E. Lesk, & B. W. Kernighan, “The C Programming Language,” *Bell System Technical Journal* **57**(6), pp. 1991–2019 (July–August 1978).

Ritchie, 1984a. D. M. Ritchie, “The Evolution of the UNIX Time-Sharing System,” *AT\&T Bell Laboratories Technical Journal* **63**(8), pp. 1577–1593 (October 1984).

Ritchie, 1984b. D. M. Ritchie, “Reflections on Software Research,” *Comm ACM* **27**(8), pp. 758–760 (1984).

Ritchie, 1987. D. M. Ritchie, “Unix: A Dialectic,” *USENIX Association Conference Proceedings*, pp. 29–34 (January 1987).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://book.bsdcn.org/4.3-bsd-unix-cao-zuo-xi-tong-she-ji-yu-shi-xian/di-yi-bu-fen-gai-lan/1.4.-fa-bu-gong-cheng.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
