以下是根据看书后的理解做的总结:
 
最早,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. 编写一个简单的C++程序

    编写一个简单的C++程序 每个C++程序都包含一个或多个函数(function),其中一个必须命名为main.操作系统通过调用main来运行C++程序.下面是一个非常简单的main函数,它什么也不干, ...

  2. CI Weekly #2 | 如何优化开发流程,实现项目持续集成?

    原文首发于 flow.ci Blog >> 链接,转载请联系:) CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试 ...

  3. 第六节:Vue过滤器的用法和自定义过滤器

    1.过滤器的用法,用  '|' 分割表达式和过滤器. 例如:{{ msg |  filter}}     {{msg | filter(a)}}  a就标识filter的一个参数. 用两个过滤器:{{ ...

  4. java中string内存的相关知识点

    (一):区别java内存中堆和栈: 1.栈:数据可以共享,存放基本数据类型和对象的引用,其中对象存放在堆中,对象的引用存放在栈中: 当在一段代码块定义一个变量时,就在栈中 为这个变量分配内存空间,当该 ...

  5. 最新hadoop+hbase+spark+zookeeper环境安装(vmmare下)

    说明:我这里安装的版本是hadoop2.7.3,hbase1.2.4,spark2.0.2,zookeeper3.4.9 (安装包:链接:http://pan.baidu.com/s/1c25hI4g ...

  6. Android线程机制——AsyncTask

    对于Android为什么要使用多线程,因为从Android4.0之后,谷歌规定了网络操作不允许放在主线程中执行,由此就有了多线程的机制,有个JAVA学习经验的朋友一定知道多线程指的是什么,简单来讲就是 ...

  7. Cocos2d-x 3.2 学习笔记(二)创建自定义项目

    一.通过命令创建项目 前面搭建好环境后,怎样创建自己的cocos2d-x项目呢? 先来看看cocos2dx 3.2的目录吧(涉及到3.1.1版本的,请自动对应3.2版本,3.x版本的环境搭建都是一样的 ...

  8. 使用SQL Server作业设置定时任务

    1.开启SQL Server Agent服务 使用作业需要SQL Agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行. 以下步骤开启服务:开始-->>>运行--&g ...

  9. 让你心动的 HTML5 & CSS3 效果【附源码下载】

    这里集合的这组 HTML5 & CSS3 效果,有的是网站开发中常用的.实用的功能,有的是先进的 Web 技术的应用演示.不管哪一种,这些案例中的技术都值得我们去探究和学习. 超炫的 HTML ...

  10. svn冲突问题详解

    开发人员都知道代码管理工具是开发中一个必不可少的工具,这里也不废话详细介绍了.不管你个人喜欢git还是svn还是其他,但还有一大部分公司在使用svn做代码管理工具.这里详细介绍下SVN提交文件时冲突问 ...