热门标签 | 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. 网络基础的建立

 


推荐阅读
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 本文深入探讨了UNIX/Linux系统中的进程间通信(IPC)机制,包括消息传递、同步和共享内存等。详细介绍了管道(Pipe)、有名管道(FIFO)、Posix和System V消息队列、互斥锁与条件变量、读写锁、信号量以及共享内存的使用方法和应用场景。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • WinSCP: 跨Windows与Linux系统的高效文件传输解决方案
    本文详细介绍了一款名为WinSCP的开源图形化SFTP客户端,该工具支持SSH协议,适用于Windows操作系统,能够实现与Linux系统之间的文件传输。对于从事嵌入式开发的技术人员来说,掌握WinSCP的使用方法将极大提高工作效率。 ... [详细]
  • #print(34or4 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文将探讨2015年RCTF竞赛中的一道PWN题目——shaxian,重点分析其利用Fastbin和堆溢出的技巧。通过详细解析代码流程和漏洞利用过程,帮助读者理解此类题目的破解方法。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • Python 工具推荐 | PyHubWeekly 第二十一期:提升命令行体验的五大工具
    本期 PyHubWeekly 为大家精选了 GitHub 上五个优秀的 Python 工具,涵盖金融数据可视化、终端美化、国际化支持、图像增强和远程 Shell 环境配置。欢迎关注并参与项目。 ... [详细]
  • ElasticSearch 集群监控与优化
    本文详细介绍了如何有效地监控 ElasticSearch 集群,涵盖了关键性能指标、集群健康状况、统计信息以及内存和垃圾回收的监控方法。 ... [详细]
  • Linux环境下进程间通信:深入解析信号机制
    本文详细探讨了Linux系统中信号的生命周期,从信号生成到处理函数执行完毕的全过程,并介绍了信号编程中的注意事项和常见应用实例。通过分析信号在进程中的注册、注销及处理过程,帮助读者理解如何高效利用信号进行进程间通信。 ... [详细]
  • 本文探讨了在 SQL Server 中使用 JDBC 插入数据时遇到的问题。通过详细分析代码和数据库配置,提供了解决方案并解释了潜在的原因。 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
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社区 版权所有