以下是根据看书后的理解做的总结:
 
最早,unix是使用汇编编写,但是非常简单。后来觉得汇编,换种机器又得重新用另外一种机器汇编重写,太麻烦。于是想设计一种通用的语言,到各种机器上都能运行 当时发明了b语言,但是b语言并不成功(据说是很多缺陷,缺乏数据结构),后来者在此基础上改进,发明了c语言。使用c语言重写unix,后来c语言就成为一种编写操作系统的语言了。当时有c语言编译器,使得转化成机器语言很容易。

现在终于明白了,为什么以前看的资料说:c语言是为了编写Unix操作系统而发明的语言。 当时其实存在了这个操作系统,但问题是它使用汇编编写,移植到新机器又得重新写用新的汇编实现。后来有了c语言这样通用的语言、

 
为什么操作系统的编写,一部分还要使用汇编呢?
因为硬件,两台电脑的硬盘不可能完全一样的方式工作,驱动程序是用c编写,驱动编译好后放到新机器无法工作的,所以要重新写,只能用对应机器的汇编编写。

Unix的网络的发明,原来都是出于解决实际问题需要产生。

最初发明是在一台废弃的pdp-7上。后来unix都是运行在pdp-11上。
当时要把unix移植到一种新型机器interdata上,当时pdp-7在一楼,interdata在五楼,每次都要编译好后,去五楼的interdata机器上调试,这样折腾了几个月后,感觉很麻烦。于是发明的网络。这个时候是局域网。

 
现在明白posix的真实含义了:
pos是可移植操作系统的简称。ix是unix的后面两个字母。合起来就是可移植的unix系统。
posix实际上是一个标准。并不是指特定的东西。就是工业界的iso9001标准,iso9001是一个标准。
posix标准,是为了给所有市面上大家开发的unix制定一个标准。之所以要制定一个标准约束。因为,每个人是可以拿到源码进行修改,于是当时的unix版本很多。于是迫切地需要一种统一的标准。
 
 
unix的开源过程是怎样的?
当时,贝尔实验室的发明了unix。在一台废弃的pdp-7机器上。后来公开发布了unix的论文。使得许多大学纷纷向实验室索要unix的拷贝。
当时贝尔实验室的母公司-AT&T,因为受到垄断法的管制,是不能经营计算机业务的。所以他们愿意大学支付适当的费用获取unix的源码。后来一些商业公司愿意花钱购买unix的源码进行修改,修改成自己的版本来发布。当时其实微软也花钱购买了unix,以xenix的名义出售版本7好几年了。
 
AT&T公司后来发布unix版本,进行商业化(因为通过了政府的拆分,允许设立子公司来经营计算机业务)。但是失败了,没有受到市场很大的反响。最终在1993年决定卖给novell,novell在1995年又卖给了santa cruz operation公司。
那个时候很多公司拥有了unix的许可证。
 
 
linux的出生
 
当时有minix。这个系统是一个类unix系统。它的特点是,微内核。如何解释这种微内核呢?
 
当时的很多人要求在minix上增加功能,得不到响应。越来越不满。当时又没有freebsd。
 
后来,当时的linux作者,就参考了minix的源码,对它进行了重构一次。唯一不同的是,它是使用整体设计方式。搞不清楚是怎么样的。是开发操作系统的方式不同。
 
1991年的时候发布一个版本。
 
加州大学伯利克分校早期获得了unix第6个版本的源码,他们自己修改源码进行发布,这就是著名的freebsd系统。
 

操作系统与c语言的更多相关文章

  1. 【操作系统】C语言编写的FAT16文件系统

    [操作系统]C语言编写的FAT16文件系统 这是操作系统的期末课程设计作业之一,主要功能是在物理内存中虚拟出一个1M大小的FAT16的文件系统,然后把它读入内存中,进行具体的文件操作,具体的实用性不大 ...

  2. 操作系统和程序设计语言的API使用的字符编码分析

     1.Java的运行环境中,String是什么编码? 使用java做程序设计语言,字符编码是和jvm相关的,和操作系统无关. java默认的编码是jvm在安装的时候就确定了的,它是根据你的系统的环境确 ...

  3. linux 操作系统下c语言编程入门

    2)Linux程序设计入门--进程介绍 3)Linux程序设计入门--文件操作 4)Linux程序设计入门--时间概念 5)Linux程序设计入门--信号处理 6)Linux程序设计入门--消息管理  ...

  4. 如何在CentOS里切换操作系统所用的语言,中英文切换

    操作系统CentOS 7.5,安装的时候选择的事中文,后来想改成英文 1.点左上角的“应用程序”---->再点“系统工具”----->“设置” 2.点“区域语言”,再点右侧的“汉语(中国) ...

  5. 大二作业——操作系统实验——C语言用双向链表,模拟实现动态分区式存储管理

    实验:动态分区式存储管理 实验内容: 编写程序模拟完成动态分区存储管理方式的内存分配和回收.实验具体包括:首先确定内存空闲分配表:然后采用最佳适应算法完成内存空间的分配和回收:最后编写主函数对所做工作 ...

  6. [转] linux操作系统下c语言编程入门--基础知识

    点击阅读原文 这篇文章介绍在LINUX下进行C语言编程所需要的基础知识.在这篇文章当中,我们将会学到以下内容: 1. 源程序编译        2. Makefile的编写        3. 程序库 ...

  7. 挑战30天写操作系统-day2-汇编语言学习与Makefile入门

    1.介绍文本编辑器 这里,我们直接采用自己windows电脑自带的文本编辑器即可以完成制作要求 2.继续开发 下面先是对昨天使用的helloos.nas文件内容进行详细解释 ; hello-os ; ...

  8. C语言笔记——简介与编译过程初探

    序言 从今天起,详细说说C语言.这一年多,在大多数语言和技术之间转了一大圈,终于看清楚了事实,决心静下心来好好学学C语言.初学者会认为C语言是个入门用的东西,没有必要深入研究.但对计算机领域再稍加了解 ...

  9. Oberon程序设计语言简介

    Oberon奥伯龙是一种通用编程语言,也是一种同名操作系统(由Oberon语言开发,且参考过贝尔实验室的新一代网络操作系统Plan9),是由原Pascal程序设计语言的发明者Niklaus Wirth ...

随机推荐

  1. ui-router带参数的ui-sref配置

    ui-router带参数的ui-sref配置 路由 .state('app.user_edit', { url:'user/userid/:userid', templateUrl: 'compone ...

  2. Jasmine入门(上)

    什么是Jasmine Jasmine是一个Javascript的BDD(Behavior-Driven Development)测试框架,不依赖任何其他框架. 如何使用Jasmine 从Github上 ...

  3. Ubuntu16配置静态IP

    一.静态IP地址配置 sudo vi /etc/network/interfaces 然后按照如下格式修改: 注意这里的网卡名字是ens33 auto lo iface lo inet loopbac ...

  4. 快速入门系列--CLR--01基本概念

    在.NET平台用C#这么久,自然会发现其版本很多,相应的概念也会很多,常常都是萌萌哒.而在实际工作中经常会遇到需要配置dll版本号,公钥token等场景,因而对C#.NET.CLR.框架类型等基础概念 ...

  5. Uvaoj10054 - The Necklace

    /* 题意:打印欧拉回路! 思路:开始时不明白,dfs为什么是后序遍历? 因为欧拉回路本身是一条回路,那么我们在dfs时,可能存在提前找到回路,这条回路可能不是欧拉回路, 因为没有遍历完成所有的边!如 ...

  6. 本机搭建zookeeper集群

    3个 clientPort分别设置为2181,2182,2083 server.1=127.0.0.1:2888:3888 server.2=127.0.0.2:2889:3889 server.3= ...

  7. 05-Vue入门系列之Vue实例详解与生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  8. Elasticsearch 文件目录解释

    下载后解压的Elasticsearch中,有以下几个基本的目录: home---这是Elasticsearch解压的目录 bin---这里面是ES启动的脚本 conf---elasticsearch. ...

  9. Coreseek + Sphinx + Mysql + PHP构建中文检索引擎

    首先明确几个概念 Sphinx是开源的搜索引擎,它支持英文的全文检索.所以如果单独搭建Sphinx,你就已经可以使用全文索引了.但是往往我们要求的是中文索引,怎么做呢?国人提供了一个可供企业使用的,基 ...

  10. 基于HT for Web 3D技术快速搭建设备面板

    以真实设备为模型,搭建出设备面板,并实时获取设备运行参数,显示在设备面板上,这相比于纯数值的设备监控系统显得更加生动直观.今天我们就在HT for Web的3D技术上完成设备面板的搭建. 我们今天模拟 ...