BSD学习(BSD系统的历史和目标)
- UNIX系统的历史
unix系统的发展历程大概经历以下几个阶段:
- 贝尔实验室(Bell Laboratories)阶段,该实验室发明了UNIX
- 加州大学伯克利分校(University of California at Berkeley简称UC Berkeley)的计算机系统研究小组(Computer Systems Research Group,简称CSRG),CSRG赋予了UNIX系统虚拟内存机制和TCP/IP参考实现;
- FreeBSD项目组,NetBSD项目组和OpenBSD项目组阶段,这几个项目组继承了CSRG所开创的工作。
- 作为Apple公司OSX系统核心的Darwin操作系统阶段,这个操作系统是以FreeBSD操作系统开发出来的。
UNIX系统的第一个版本诞生于1969的贝尔实验室,这个版本是Ken Thompson的个人研究项目。不久以后Dennis Ritchie也加入了进来,他不仅为系统做出了系统贡献,还发明了c语言,unix系统后来用C语言进行重写,只留下少数的汇编语言。
这个版本的unix系统文件系统的基本构成,采用了一个用户进程作为命令行解释器的思想,文件系统的通用结构,以及许多别的系统特性都直接源于他。此外,UNIX还融入了许多其他操作系统的思想,比如MIT(
Massachusetts Institute of Techology)的CTTS系统。UNIX里的创建进程的fork操作则源于伯克利的GENIE操作系统。UNIX让用户不用花费多大的开销就能创建进程,于是每条命令就是一个进程,而不会要命令作为过程调用来执行。
UNIX系统的第一批重要的版本是贝尔实验室Research小组开发的系统。此时的UNIX系统与当时其他的系统重要的区别有:
- UNIX采用高级语言(c语言)编写。
- UNIX以源代码的形式发布。
- UNIX系统有强大的原语(primitive),它们往往只会在那些要依托更为昂贵硬件设备才能运行的操作系统中才能看到。
此外UNIX的另一个重要特点是,它一开始就以源码的形式从贝尔实验室向其他研究机构提供。使其他研究机构也能够深入地研究和修改该系统。这就是UNIX能够很容易的吸收新思想,从而根据时代变化作出相应的调整。从而使UNIX系统得到最新的思想和技术的补充。UNIX在不断演化过程中远远超越他的初始版本。
UNIX的第三个重要特点是他赋予了个人用户的一种能力,即可以并发的运行多个进程,并将这些进程关联起来构成命令的管道线(pipeline)。
在UNIX的第七版之后,USG(UNIX Support Group)的第一个对外发布版本是1982年的UNIX System III(简称System III)。该系统融合了第七版,32V以及Research小组以外以他机构所开发的UNIX系统的特点。USG演变为USDL(UNIX System V,Release4) 向System V引入了调页机制(paging)。在1987年发布了UNIX SVR3(UNIX System V,Release 3)。这个版本包括流机制(streams)。
除了贝尔实验室和AT&T UNIX开发小组之外,最具影响力的研究机构要算加州大学伯克利分校。伯克利的软件叫做BSD(Berkeley Software Distributions,伯克利软件发布)。伯克利VAX UNIX的第一项工作是在32V版本上增加了虚拟内存(virtual memory),请求调页机制(demand paging)和页面替换技术(page replacement)。4BSD的重点是为DARPA的Internet网络协议TCP/IP提供支持。
2.BSD和其他系统
CSRG在BSD中不仅融入了UNIX系统的技术,也吸收了其他操作系统的思想。4BSD的终端驱动程序有许多功能来源于TENEX/TOPS-20。作业控制(job control)这一概念(不是实现)源于TOPS-20和MIT的ITS(Incompatible Timessharing System)。最早在4.2BSD上提出,而最终在4.4BSD上实现的虚拟内存接口,是以受限在TENEX/TOPS-20上出现的文件映射和页面级接口为基础。FreeBSD目前的虚拟内存系统则借鉴了Mach系统--4.3BSD的一个分支。在CSRG的设计中,搞笑总是被当做一个首要的因素而给予优先考虑。而其他的系统也借鉴了4BSD的特色比如:
- 作业控制
- 可靠信号
- 多个文件访问权限组
- 文件系统接口
4BSD套接口进程间通讯机制在设计上具有良好的可移植性。
公共域区处理软件包(public-domain time-zone-handing package)就是一个由用户群开发的出工具软件的现实例子,4.3BSD Tahoe 采用了这个软件包。
1989年6月,BSD的连网代码和支持工具发布,它叫做Networking Release 1,这是伯克利第一次提供可以自由重新发布的代码。这次的许可证条款相当慷慨,他容许以源代码或者二进制代码的形式发布已修改或者未修改过的代码,而且不用向伯克利支付费用,唯一的要求是,保持源代码文件中版权声明不动,并且在采用这些代码的产品文档中说明该产品包含了加州大学和许多无私奉献者提供的代码。
BSD学习(BSD系统的历史和目标)的更多相关文章
- 正确学习Linux系统的5个建议
摘要: 最近几年Linux系统应用越来越广泛,以至于很多人开始热衷学习Linux.但是我们都是从小都是学习windows系统长大的,从windows 98到现在的windows 10,而根据学习win ...
- 第三次随笔--安装虚拟机及学习linux系统初体验
第三次随笔--安装虚拟机及学习linux系统初体验 ·学习基于VirtualBox虚拟机安装Ubuntu图文教程在自己笔记本上安装Linux操作系统 首先按照老师的提示步骤进行VirtualBox虚拟 ...
- 深度学习 + OpenCV,Python实现实时视频目标检测
使用 OpenCV 和 Python 对实时视频流进行深度学习目标检测是非常简单的,我们只需要组合一些合适的代码,接入实时视频,随后加入原有的目标检测功能. 在本文中我们将学习如何扩展原有的目标检测项 ...
- 如何学习Android系统源码(转)
一. Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心.我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关 ...
- 与你们分享我学习linux系统的三大妙招
一说到linux,我们就自然会想到企业服务器系统,目前市场上的网络设备都是使用linux内核操作系统,一些网络服务器也是使用linux操作系统下面的服务搭建实现的:目前操作系统这块也基本被linux占 ...
- Linux学习-->linux系统在移动硬盘的安装
由于自己看了一些文章和linux的好奇,想来一窥Linux的奥秘,因此自己准备学习使用Linux系统,这里记录下自己的安装过程,方便以后自己重装系统时进行查阅. 参考的书籍是鸟哥的<Linux私 ...
- 应届毕业生如何通过学习Linux系统选择一份高薪职业
2017年全国高校毕业生人数795万,史上"更难就业季"大学生就业形势,再加上出国留学回来的约30万以及没有找到工作的往届毕业生,预计将有1000多万大学生同时竞争. 如果我们不是 ...
- 给学习Linux系统小白的两三个建议
前段时间看过一个针对国内Linux使用情况的调研表,有了不少感慨.现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少.无论是公司还是学校,办公基本 ...
- 技术宅学习Linux系统还是很有前途的
老实说,我之所以入了Linux的坑,纯粹只是为了追我现在的男朋友,也就是技术宅.如果不是为了追我男朋友的话,我估计我这辈子都不会去接触linux.好吧,今天写一写过往事情,也是为了怀念当初追男友的一些 ...
随机推荐
- 【Matplotlib】绘图常见设置说明
说明:此贴会不定期进行更新! 设置1:图像的大小设置. 如果已经存在figure对象,可以通过以下代码设置尺寸大小: f.set_figheight(15) f.set_figwidth(15) 若果 ...
- __name__和__main的含义
if __name__ == "__main__": main() This module represents the (otherwise anonymous) scope i ...
- POJ 3273 Monthly Expense
传送门 Time Limit: 2000MS Memory Limit: 65536K Description Farmer John is an astounding accounting wiza ...
- iOS开源项目汇总
扫描wifi信息: http://code.google.com/p/uwecaugmentedrealityproject/ http://code.google.com/p/iphone-wire ...
- UVA 1626 Brackets sequence(括号匹配 + 区间DP)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=105116#problem/E 题意:添加最少的括号,让每个括号都能匹配并输出 分析:dp ...
- mvc中EditorFor TextBoxFor什么区别
EditorFor 是映射到Model 属性上面,忽略用户自定义属性和样式 Model 可以为nullTextBoxFor是映射到Model 属性上面,可以用户自定义属性和样式 Model 不可以为n ...
- jquery ajax提交表单数据的两种方式
http://www.kwstu.com/ArticleView/kwstu_201331316441313 貌似AJAX越来越火了,作为一个WEB程序开发者要是不会这个感觉就要落伍,甚至有可能在求职 ...
- while循环问题(老师询问问题,学生回答。学生会了可以放学,或者老师讲了10遍,还是没有会的,被迫无奈也要放学。)
string a=""; ;//声明一个变量,老师重新讲课的次数. && a != "yes") { Console.WriteLine(&qu ...
- 文件流StreamReader和StreamWriter的使用
using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...
- linux(Debian)下安装与MySql的安装、卸载、配置及使用
参考资料:http://www.cnblogs.com/xusir/p/3334217.html 以下是简要记录. 一.安装 安装:apt-get install mysql-server mysql ...