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.好吧,今天写一写过往事情,也是为了怀念当初追男友的一些 ...
随机推荐
- CODEVS1995 || TYVJ1863 黑魔法师之门
P1863 [Poetize I]黑魔法师之门 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 经过了16个工作日的紧张忙碌,未来的人类终于收集到了足够的能源 ...
- ethtool使用记录
网卡出现很诡异的问题,把电脑连到一些交换机上是工作的,连到另外一些就不行...交换机上的link灯还时不时的闪一下,看起来像是在尝试连接. 用dmesg查看,看到下面的信息: [ 1112.92211 ...
- [Unity 游戏设计的元素]
1.核心游戏机制 2.主题 3.功能集合 4.可能的附加功能 5.备用主题创意
- vs配置
每次遇到vs配置都要让我头疼一段时间,对于某些不太清楚,有时自己试着配置,能运行起来就行,下次又忘了咋陪的了,其中配置的东西真心多. 1.输出目录这样配置../../Bin/Server/ 这个路径是 ...
- c/c++细节知识整理
这篇文章总结了部分c/c++琐碎的细节知识. 目录如下: (一)bool类型 知识点出处较多,无法一一列举,向原作者致敬. (一)bool类型 在c99标准以前,c语言并没有定义bool类型.如果需要 ...
- 锋利的jQuery-2--一个显示和隐藏的例子,主要看写法
例子:如图,默认不显示全部,点击按钮来回切换,全部显示是一部分推荐的品牌高亮. $(function(){ //dom加载完再执行 var category = $('ul li:gt(5):not( ...
- php 命名空间
命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀. 例:项目中有两个 ...
- Android Studio 设置不自动缩进匿名内部类
Android Studio 会默认缩进匿名内部类代码,这让人感觉有些不大适应,可以使用下面的方法进行取消. 取消选中橙色框前的几个复选框即可.
- 修改linux文件权限命令:chmod
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容, ...
- C++小思
Bjarne那稀疏的棕褐色头发, 有点红的眼睛, 这个可爱的好老头, 感觉他更应该是一个哲学家, 因为他用编程的语言C++ 揭示了我们这个纷繁复杂世界的本质: 对象. 对的, 世界是由对象组成的, 并 ...