热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Lunix历史及如何学习

1.Lunix是什么1.1Lunix是操作系统还是应用程序Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,

1. Lunix是什么


1.1 Lunix是操作系统还是应用程序

       Lunix是一套操作系统,它提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, 这个架构是沿袭Unix 良好的传统来的,所以相当的稳定而功能强大!Lunix具有核心和系统呼叫两层。Torvalds 先生在 1991 年写出 Linux 核心的时候,其实该核心仅能『驱动 386 所有的硬件』而已, 所谓的『让 386 计算机开始运作,并且等待用户指令输入』。


1.2 Lunix之前,Unix历史


1969 年以前:一个伟大的梦想--Bell,MIT 与 GE 的『Multics』系统

早期的计算机架构很难使用,除了指令周期并不快之外,操作接口也很麻烦! 因为那个时候的输入设备只有卡片
阅读机、输出设备只有打印机, 用户也无法与操作系统互动(批次型操作系统)。

后来可以使用键盘来进行信息的输入。不过,在一间学校里面,主机毕竟可能只有一部,如果多人等待使用,那怎么办?于是1960年代初期麻省理工学院(MIT)发展了所谓的: 『兼容分时系统(Compatible Time-Sharing System, CTSS)』, 它可以让大型主机透过提供数个终端机(terminal)以联机方式进入主机,同时利用主机的资源进行运算工作。兼容分时系统可以说是近代操作系统的始祖!它可以让多个使用者在某一段时间内分别使用 CPU 的资源, 感觉上你会觉得大家是同时使用该主机的资源!

为了更加强化大型主机的功能,以让主机的资源可以提供更多使用者来利用,在 1965 年前后,由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE, 或称为通用电器)共同发起了 Multics 的计划,Multics 计划的目的是想要让大型主机可达成提供 300 个以上的终端机联机使用的目标。不过,到了 1969 年前后,计划进度落后,资金也短缺,所以该计划虽然继续在研究,但贝尔实验室还是退出了该计划的研究工作。


1969 年:Ken Thompson 的小型 file server system

但是,贝尔研究室原本参与 Multics 计划的人员Ken Thompson (肯·汤普森),由于个人需要(想要移植一套名为『太空旅游』的游戏),希望开发一个小小的操作系统以提供自己的需求。在开发时,有一部DEC (Digital Equipment Corporation)公司推出的 PDP-7 刚好没人使用,于是他就准备针对这部主机进行操作系统核心程序的撰写。经过四个星期的奋斗,他终于以汇编语言(Assembler)写出了一组核心程序,同时包括一些核心工具程序, 以及一个小小的文件系统。那个系统就是 Unix 的原型! 当时 Thompson 将 Multics 庞大的复杂系统简化了不少,于是同实验室的朋友都戏称这个系统为:Unics。

Thompson 的这个文件系统有两个重要的概念,些概念在后来对于 Linux 的发展有相当重要的影响。分别是:


  • 所有的程序或系统装置都是文件
  • 不管建构编辑器还是附属文件,所写的程序只有一个目的,且要有效的完成目标。


1973 年:Unix 的正式诞生,Ritchie 等人以 C 语言写出第一个正式 Unix 核心

Unics 本来是以汇编语言写成的,汇编语言具有专一性,加上当时的计算机机器架构都不太相同,因此每次要安装到不同的机器都得要重新编写汇编语言。后来 Thompson 与 Ritchie 合作想将 Unics 改以高阶程序语言来撰写。当时现成的高阶程序语言有 B语言。 但是由 B 语言所编译出来的核心效能不是很好。后来 Dennis Ritchie 将 B 语言重新改写成 C 语言,再以 C 语言重新改写与编译 Unics 的核心, 最后正名与发行出 Unix 的正式版本!

贝尔实验室是隶属于美国电信大厂 AT&T 公司的, AT&T 当时忙于其他商业活动,对于Unix 并不支持也不排斥。


1977 年:重要的 Unix 分支--BSD 的诞生

1977 年,Berkeley 大学的 Bill Joy 针对他的机器修改了 UNIX 源码,称为BSD(Berkeley Software Distribution)。这个BSD 是 Unix 很重要的一个分支,Bill Joy 也是 Sun这家公司的创办者! Sun 公司即是以 BSD 发展的核心进行自己的商业 Unix 版本的发展的。 


1979 年:重要的 System V 架构与版权宣告

1979 年,AT&T推出 System V 第七版 Unix 。 这一版最重要的特色是可以支持 x86 架构的个人计算机系统。但是,在该版本中特别提到了 『不可对学生提供原始码』的严格限制!不再开源。


1984 年之一:x86 架构的 Minix 操作系统开始撰写并于两年后诞生

没有核心原始码,老师如何教导学生认识 Unix 呢?Andrew Tanenbaum (谭宁邦)教授于是自己动手写了 Minix 这个 Unix Like的核心程序!Minix 并不是完全免费的,但是购买的磁盘还会附上 Minix 的原始码,这意味着使用者可以学习 Minix 的核心程序设计概念! 


1984 年之二:GNU 计划与 FSF 基金会的成立

1984 年,史托曼开始 GNU 计划,这个计划的目的是:建立一个自由、开放的 Unix 操作系统(Free Unix)。为提高GNU计划知名度,史托曼开始撰写 C 语言的编译程序,那就是现在相当有名的GNU C Compiler(gcc)。

但这并不顺利,他先转而将他原先就已经写过的 Emacs 编辑器写成可以在Unix 上面跑的软件,并公布原始码。 Emacs 是一种程序编辑器,他可以在用户撰写程序的过程中就进行程序语法的检验,此一功能可以减少程序设计师除错的时间!因为 Emacs 太优秀了,因此,很多人便直接向他购买。他也因此赚了写钱,并且成立自由软件基金会(FSF, Free Software Foundation),请更多工程师与志工撰写软件。终于还是完成了 GCC,这比 Emacs 还更有帮助! 此外,他还撰写了更多可以被呼叫的 C函式库(GNU C library),以及可以被使用来操作操作系统的基本接口 BASH shell!

1985 年,为了避免 GNU 所开发的自由软件被其他人所利用而成为专利软件, 史托曼与律师草拟了有名的通用公共许可证(General Public License, GPL)。这造成后来很多的软件开发者可以藉由这些基础的工具来进行程序开发! 进一步壮大了自由软件团体,但是对于 GNU 的最初构想 『建立一个自由的 Unix 操作系统』来说,有这些优秀的程序是仍无法满足, 因为,当下并没有『自由的 Unix 核心』存在!


1988 年:图形接口 XFree86 计划

有鉴于图形用户接口(Graphical User Interface, GUI) 的需求日益加重,在 1984 年由 MIT 与其他第三方首次发表了 X Window System ,并且更在 1988 年成立了非营利性质的 XFree86 这个组织。


1991 年:芬兰大学生 Linus Torvalds 的一则简讯

1991 年,芬兰的赫尔辛基大学的 Linus Torvalds 在 BBS 上面贴了一则消息, 宣称他以 bash, gcc等 GNU 的工具写了一个小小的核心程序,该核心程序单纯是个玩具,不像 GNU 那么专业。 不过该核心程序可以在 Intel 的 386 机器上面运作就是了。这让很多人很感兴趣!从此开始了 Linux 不平凡的路程!

以下为截自网络上UNIX历史图谱。『UNIX进化史(UNIX大家族族谱1969-2013)』


linux distribution是Linux发行版。其实Linux是指的系统的内核,不能认为是一个系统。有人在内核的基础上增加一些软件,就成了一个操作系统了。这个系统因为以Linux为内核,所有就叫Linux发行版。大部分人为了简单,所以把发行版省掉了,实际上世上没有Linux 这个操作系统,因为他只是个内核。现在出现Linux这一称呼,实际上是Linux发行版。这是正规的说法,比如,我用的 Linux 是 CentOS 这个 distribution,版本为 7.x 版。


各大 Linux Distributions 的主要异同:支持标准

上鸟哥认为 distributions 主要分为两大系统,一种是使用 RPM 方式安装软件的系统,包括 Red Hat, Fedora, SuSE 等都是这类; 一种则是使用 Debian 的 dpkg 方式安装软件的系统,包括 Debian, Ubuntu, B2D 等等。若是加上商业公司或社群单位的分类,可以简单的用下表来做个解释!

 


 1.4 Linux 该如何学习


  1. 计算器概论与硬件相关知识
  2. 先从 Linux 的安装与指令学起
  3. Linux 操作系统的基础技能
  4. 务必学会 vi 文书编辑器
  5. Shell 与 Shell Script 的学习
  6. 一定要会软件管理员
  7. 网络基础的建立

 


推荐阅读
  • 零入门kubernetes网络实战15>基于golang编程实现给ns网络命名空间添加额外的网卡
    《零入门kubernetes网络实战》视频专栏地址https:www.ixigua.com7193641905282875942本篇文章视频地址(稍后上传)本篇文章主要是想通过g ... [详细]
  • 实验七、绕过ASLR 第二部分
    7.1实验环境VM配置:Ubuntu12.04(x86)7.2实验原理什么是爆破?使用爆破技巧,来绕过共享库地址随机化。7.3实验过程7. ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • CentOS7.8下编译muduo库找不到Boost库报错的解决方法
    本文介绍了在CentOS7.8下编译muduo库时出现找不到Boost库报错的问题,并提供了解决方法。文章详细介绍了从Github上下载muduo和muduo-tutorial源代码的步骤,并指导如何编译muduo库。最后,作者提供了陈硕老师的Github链接和muduo库的简介。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • gitlab重置password
    ruby没怎么学,自己搭建的gitlab的rootpassword又忘了。幸好看见此帖子,试验okhttp:roland.kierkels.netgitreset-your-git ... [详细]
  • 3.5.2Calc的公式语法:使用Calc计算一个公式可用是任何能够被Emacs的calc包所识别的代数表达式.注意,在Calc中,的操作符优先级要比*低,因此ab*c会被解释为a ... [详细]
  • CentOS7系统目录LINUX有四种基本文件系统类型普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、 ... [详细]
  • 一、设置时区方法一:使用setup工具setup选择Timezoneconfiguration选择AsiaShanghai空格键勾选上System ... [详细]
  • 32位ubuntu编译android studio,32位Ubuntu编译Android 4.0.4问题
    问题一:在32位Ubuntu12.04上编译Android4.0.4源码时,出现了关于emulator的错误,关键是其Makefile里的 ... [详细]
  • BashShell作为Linux的指定合作伙伴我们已经再熟悉不过了,使用Bash可以快速编写简单的脚本方便我们的日常比如善用vim,awk和sed三剑客,也可以创建十分复杂的逻辑, ... [详细]
author-avatar
小小一株含羞草2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有