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.好吧,今天写一写过往事情,也是为了怀念当初追男友的一些 ...
随机推荐
- Java编程思想学习(六) 多态
1.Java语言的三大特性:继承.封装和多态. 继承:复用类的一种方法,可以简省很多代码: 封装:通过合并特征和行为来创建新的数据类型.[这种“数据类型”跟Java本身提供的8大“基本数据类型”的地位 ...
- Project facet Java version 1.8 is not supported解决记录
一看知道是因为jdk版本不一致所导致,如何解决? 方法一: 选中项目 Properties , 选择 Project Facets,右击选择 Java , Change Version 方法二: 在 ...
- 我和NLP的故事(转载)
正值ACL录用结果发布,国内的老师和同学们又是一次大丰收,在这里再次恭喜所有论文被录用的老师和同学们!我人品爆发,也收获了自己硕士阶段的第二篇ACL论文.本来只是想单纯分享下自己中论文的喜悦,但没成想 ...
- Google Protocol Buffer 的使用和原理
Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...
- 使用ymPrompt弹框
使用弹框 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&q ...
- 转:this的用法
this指针的含义及其用法: 1. this指针是一个隐含于每一个成员函数中的特殊指针.它指向正在被该成员函数操作的那个对象.2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针, ...
- java笔记--异常详解与处理
一.异常概念 Throwable类是Java中所有错误或异常的超类. 1.只有当对象是此类(或其子类)的实例时,才能通过Java虚拟机或着Java throw语句抛出. 2.只有此类或其子类才 ...
- 新一代 Tor发布,它牛在哪里?
导读 知名匿名搜索引擎Tor,最近发布了基于火狐浏览器45-ESR的6.0版本,增强了对HTML5的支持,并更新了用来保护加密流量及其更新机制的安全功能.火狐45-ESR版本的全称为Firefox E ...
- [Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
1.U3D经常莫名奇妙崩溃. 一般是由于空异常造成的,多多检查自己的引用是否空指针. 2.编码切换警告提示. 警告提示:Some are Mac OS X (UNIX) and some ...
- 新的开始---cocos2d
今天是一个新的开始,cocos2d的环境搭配好了,并且打包案桌apk的环境也搭配好了,安卓的这个搭配环境还是出了一点问题,前面弄了两个晚上(11-12.30)没弄出来,中间好几天都没有去弄,今天光棍节 ...