unix 订阅
Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,目前主要用于工程应用和科学计算等领域。 [1] 展开全文
Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。Unix作为一种开发平台和台式操作系统获得了广泛使用,目前主要用于工程应用和科学计算等领域。 [1]
信息
学    科
计算机科学
外文名
UNIX
类    型
多用户、多任务操作系统
中文名
尤尼克斯
设计原则
简洁至上、提供机制而非策略
unix发展历史
UNIX系统是一个分时系统。最早的UNIX系统于1970年问世。此前,只有面向批处理作业的操作系统,这样的系统对于需要立即得到响应的用户来说是太慢了。在60年代末,Kenneth Thompson和Dennis Ritchie都曾参加过交互方式分时系统Multics的设计,而开发该系统所使用的工具是CTSS。这两个系统在操作系统的发展过程中都产生过重大影响。在此基础上,在对当时现有的技术进行精选提炼和发展的过程中,K.Thompson于1969年在小型计算机上开发UNIX系统,后于1970年投入运行。 [2]  1973年,DennisRitchie开发出C语言,用来改写原来用汇编语言编写的UNIX,由此产生了UNIX VersionV。1974年,Kenneth Thompson和Dennis Ritchie合写的“The UNIX Time-Sharing System"在Communication of ACM上发表,正式向外界披露了UNIX系统。 [2]  当时,PDP-11系列小型计算机在世界各地已经得到广泛应用,UNIX系统一开发后便广泛配备于美国各大学的PDP-11系列计算机上,由此为UNIX的广泛应用创造了物质条件。 [2]  1978年,UNIX Version VI发表,随后又于1979年用于VAX-11超级小型机。以后,不断地出现各种新的版本。美国电话电报公司分别于1981年和1983年发表AT&T UNIX SystemII和UNIX SystemV。美国加州大学伯克莱分校也先后发表了UNIX的版本BSD4.1,BSD4.2和BSD4.3。 [2]  现在UNIX系统的用户日益增多,应用范围也日益扩大。无论在各种类型的微型机、小型机,还是在中、大型计算机,以及在计算机工作站甚至个人计算机上,很多都已配有UNIX系统。不仅新推出的机型配有UNIX系统,而且一些历史较久的生产厂商,也竞相将原有机型配上UNIX系统以便打开销路、争取市场。 [2] 
收起全文
精华内容
参与话题
问答
  • Unix/Linux fork前传

    万次阅读 多人点赞 2019-09-09 08:15:00
    本文是《Linux fork那些隐藏的开销》的前传。fork的由来fork的思想在UNIX出现几年前就出现了,时间大概是1963年,这比UNIX在PDP-7上的第一个版本...
        

    本文是《Linux fork那些隐藏的开销》的前传。

    fork的由来

    fork的思想在UNIX出现几年前就出现了,时间大概是1963年,这比UNIX在PDP-7上的第一个版本早了6年。

    1963年,计算机科学家Melvin Conway(以Conway’s Law闻名于世)写下一篇论文,正式提出了fork思想,该论文链接:A Multiprocessor System Design:

    https://archive.org/details/AMultiprocessorSystemDesignConway1963/page/n7

    fork的思想最初是Conway作为一种 多处理器并行 的方案提出来的,这个想法非常有意思。简而言之,fork思想来源于流程图。

    我们看一个普通的流程图:640?wx_fmt=png

    你看,流程图的分枝处,fork-叉子,多么形象!

    一个流程图上的分支点分裂出来的分支显然是逻辑独立的,这便是可并行的前提,于是它们便可以表现为不同的 处理进程(process) 的形式,当时的表达还只是“process”这个术语,它还不是现代操作系统意义上的“进程”的概念。

    join同步点表现为多个并行处理的进程由于某种原因不得不同步的点,也就是多个并行流程汇合的点,直到现在,在多线程编程中,这个点依然叫join。比如Java Thread的join方法以及pthread库的pthread_join函数。

    广义来讲,join也表示诸如临界区等必须串行通过的点, 减少join点的数量将会提高并行的效率。

    我们来看看Conway论文中关于fork的原始图示:640?wx_fmt=png

    Conway在论文中的另一个创举是,他将处理进程(也就是后来操作系统中的process的概念)以及执行该进程的处理器(即CPU核)分离了开来,抽象出了schedule层。

    大意是说, “只要满足系统中的活动处理器数量是总处理器数量和并行处理进程的最小值即可。” 这意味着调度程序可以将多处理器系统的所有处理器和系统所有处理进程分别看作是统一的资源池和消费者,执行统一调度:640?wx_fmt=png在UNIX引入fork之后,这种多处理器并行的设计思想就深入到了UNIX的核心。这个思想最终也影响了UNIX以及后来的Linux,直到现在。

    关于这个设计思想为什么可以影响UNIX这么久,我想和Conway本人的“Conway’s law”不无关系,在这个law中,他提到:Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization’s communication structure.

    好了,fork本身的由来我们已经了解,就像做菜一样,现在我们把它放在一边备用。

    花开两朵,各表一枝。接下来看UNIX fork的另一个脉络。

    早期UNIX的覆盖(overlaying)技术

    1969年最初的UNIX用一种在现在看来非常奇怪的方式运行。

    一般的资料都是从UNIX v6版本开始讲起,那个版本已经是比较 “现代” 的版本了,所以很少有人能看到最初的UNIX是什么样子的。即便是能查阅到的1970年的PDP-7上运行的UNIX源码,也是引入fork之后的版本,在那之前的最原始版本几乎找不到了(你可能会说,那时的UNIX不叫UNIX,but who cares…)。

    1969年的汤普森版UNIX超级简陋,这可以在Dennis M. Ritchie的一篇论文中见一斑:The Evolution of the Unix Time-sharing System:

    http://www.read.seas.harvard.edu/~kohler/class/aosref/ritchie84evolution.pdf

    最初的UNIX是一个分时系统,它只有两个shell进程,分别属于两个终端:640?wx_fmt=png

    分时系统最初并不是基于进程分时的,那时根本还没有完整的进程的概念,分时系统是针对终端分时的,而操作员坐在终端前,为了让每个操作员在操作过程中感觉上是在独占机器资源,每个终端享受一段时间的时间片,在该时间片内,该终端前的操作员完全享受机器,但是为了公平,超过了时间片,时间片就要给另一个终端。

    就是这样,最初的UNIX为了体现分时特性,实现了最少的两个终端。注意,最初的UNIX没有fork,没有exec,甚至没有多进程的概念,为了实现分时,系统中仅有两个朴素的shell进程。

    事实上,最初的UNIX用只有两个元素的表来容纳所有进程(显然,这看起来好笑…),当然,这里的 “表” 的概念也是抽象的朴素概念,因为当时的系统是用PDP-7的汇编写的,还没有后来C语言数据结构。

    我们现在考虑其中一个终端的shell进程如何工作。马上问题就来了, 这个shell进程如何执行别的命令程序??

    如果说系统中最多只能容纳两个进程,一个终端只有一个shell进程的话,当该终端的shell进程执行其它命令程序时,它自己怎么办?这个问题得思考一会儿…

    注意,不要用现代的眼光去评价1969年的初版UNIX,按照现代的眼光,执行一个程序必然要生成一个新的进程,显然这在初版UNIX中并不正确。

    答案是根本不用产生新的进程,直接将命令程序的代码载入内存并 覆盖 掉shell进程的代码即可!当命令执行完后,再用shell的代码覆盖掉命令程序的代码,针对单独的终端,系统其实一直在执行下面的覆盖循环(摘自论文的Process control 章节):640?wx_fmt=png

    然而,在fork被引入UNIX之前,事实就是这样。一个终端上一直都是那一个进程,一会儿它执行shell的代码,一会儿它执行具体命令程序的代码,以下是一个覆盖程序的结构(图片来自《FreeBSD操作系统设计与实现》一书):640?wx_fmt=png

    然而,当时毕竟还没有将这个逻辑封装成exec系统调用,这些都是每一个进程显式完成的:

    • 对于shell执行命令程序而言,shell自己执行disk IO来载入命令程序覆盖掉自身;

    • 对于命令程序执行结束时,exit调用内部执行disk IO载入shell程序。

    exec逻辑是shell程序的一部分,由于它会被所有的命令程序所使用,该逻辑也被封装到了exit调用中。

    fork引入UNIX前的表象

    好了,目前为止,我们看完了两条线索:

    1. 1963年Melvin Conway提出了fork思想,作为在多处理器中并行执行进程的一个手段。

    2. 1969年汤普森版UNIX仅有两个shell进程,使用覆盖(overlaying)技术执行命令。

    截止目前,我们看到的表象是:

    • 汤普森版UNIX没有fork,没有exec,没有wait,仅有的库函数般的exit也和现在的exit系统调用大相径庭,显然汤普森版UNIX并非一个多进程系统,而只是一个可以跑的简陋的两终端分时系统!

    UNIX fork的诞生

    fork是如何引入UNIX的呢?

    这还要从采用覆盖技术的汤普森版UNIX所固有的问题说起,还是看论文原文:640?wx_fmt=png

    若要解决这些问题,很简单的方案汤普森都想到了:

    • 保持shell进程的驻留而不是销毁。命令执行时,将其交换到磁盘便是了

    很显然,命令程序是不能覆盖掉shell进程了。解决方案是使用 “交换” 技术。

    交换技术和覆盖技术其实都是解决有限内存的多进程使用问题的,不同点在于方向不同:

    • 覆盖技术指的是用不同的进程磁盘映像覆盖当前的进程内存映像。

    • 交换技术指的是用将进程的内存映像交换到磁盘,载入一个别的进程磁盘映像。

    使用交换技术解决覆盖的问题,意味着要创建新的进程:

    • 在新的进程中执行命令程序。

    UNIX需要进行改动,两个配额的进程表显然不够用了。当然,解决方案也并不麻烦:640?wx_fmt=png

    要讲效率,创造不如抄袭,创建新进程的最直接的就是copy当前shell进程,在copy的新进程中执行覆盖,命令程序覆盖copy的新进程,而当前的终端shell进程则被交换到磁盘保得全身。

    覆盖和交换相结合了,UNIX离现代化更近了一步!

    确定了copy当前进程的方案后,进一步的问题是如何来copy进程。

    现在要说回fork了。

    Conway提出fork思想后,马上就有了fork的实现原型(正如Conway自己所说,他只是提出了一个可能造就存在的想法,并没有实现它),Project Genie算是实现fork比较完善的系统之一了。

    Project Genie系统的fork不仅仅是盲目地copy进程,它对fork的过程拥有精细的控制权,比如分配多大的内存空间,copy哪些必要的资源等等。显然,Project Genie的fork是冲着Conway的多处理器并行逻辑去的。

    还是那句话,创造不如抄袭,UNIX若想实现进程copy,有一个现成的模版就是Project Genie,但是Project Genie的fork对于UNIX太过复杂,太过精细化了,UNIX显然用不到这些精细的控制, UNIX仅仅是想让fork出来的新进程被覆盖,而不是让它去执行什么多处理器上的并行逻辑。

    换句话说,UNIX只是借用了fork的copy逻辑的实现,来完成一件别的事。

    于是,UNIX非常粗暴的实现了fork!即完全copy父进程,这就是直到现在我们依然在使用的fork系统调用:640?wx_fmt=png

    取了个巧,奇技淫巧:

    • fork本来就不是让你用来覆盖新进程的,不然为何多此一举。fork是让你来分解程序流程得以并行处理的。

    UNIX fork就此诞生!

    我们再次回顾一下UNIX fork诞生之前的景象:640?wx_fmt=png

    再来看看fork诞生之后的景象:640?wx_fmt=png640?wx_fmt=png

    于是UNIX正式迈开了现代化建设的步伐,一直走到了今天。

    UNIX fork-exec

    关于exec,故事没什么好讲的,它事实上就是关于上述覆盖逻辑的封装,此后程序员不必自己写覆盖逻辑了,直接调用exec系统调用即可。

    于是经典的UNIX fork-exec序列便形成了。

    UNIX fork/exec/exit/wait

    值得一提的是,fork被引入UNIX后,exit的语义发生了巨大的改变。

    在原始的1969年汤普森版UNIX中,由于每一个终端有且仅有一个进程,这意味着覆盖永远是在shell程序和某个命令程序之间进行的:

    • shell执行命令A:命令程序A覆盖内存中的shell代码。

    • 命令A执行结束:shell覆盖结束的命令A的内存代码。

    然而,在fork被引入后,虽然shell执行某个命令依然是特定的命令程序覆盖fork出来的shell子进程,但是当命令执行完毕后,exit逻辑却不能再让shell覆盖当前命令程序了,因为shell从来就没有结束过,它作为父进程只是被交换到了磁盘而已(后来内存到了,可以容纳多个进程时,连交换都不需要了)。

    那么exit将让谁来覆盖当前进程呢?

    答案是不用覆盖,按照exit的字面意思,它只要结束自己就可以了。

    本着 自己的资源自己管理的责任原则 exit只需要清理掉自己分配的资源即可。比如清理掉自己的内存空间以及一些其它的数据结构。

    对于子进程本身而言,由于它是父进程生成的,所以它便由父进程来管理释放。于是经典的UNIX进程管理四件套正式形成:640?wx_fmt=png                                                   (完)

    浙江温州皮鞋湿,下雨进水不会胖!

    查看我们精华技术文章请移步: Linux阅码场原创精华文章汇总

    更多精彩,尽在"Linux阅码场",扫描下方二维码关注

    640?wx_fmt=png

    感谢您的耐心阅读,请随手转发一下或者点个“在看”吧~

    展开全文
  • 【0基础学Python教程系列】(一)Python 环境搭建,包含Windows、Unix & Linux系统安装Python。 目录: 一、Python介绍 二、Python下载 三、Python安装 ...Unix & Linux 平台安装 Python:...在 Unix/Linux ...

    【0基础学Python教程系列】(一)Python 环境搭建,包含Windows、Unix & Linux系统安装Python。

    目录:

    一、Python介绍

    二、Python下载

    三、Python安装

    Unix & Linux 平台安装 Python:

    Window系统安装Python:

    MAC 平台安装 Python:

    环境变量配置

    在 Unix/Linux 设置环境变量

    在 Windows 设置环境变量

    Python 环境变量

    运行Python

    1、交互式解释器:

    2、命令行脚本


    一、Python介绍

    本节小编主要向大家介绍如何在本地搭建Python开发环境。

    Python可应用于多平台包括Windows、 Linux 和 Mac OS X。

    你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。

    • Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。)
    • Win 9x/NT/2000
    • Macintosh (Intel, PPC, 68K)
    • OS/2
    • DOS (多个DOS版本)
    • PalmOS
    • Nokia 移动手机
    • Windows CE
    • Acorn/RISC OS
    • BeOS
    • Amiga
    • VMS/OpenVMS
    • QNX
    • VxWorks
    • Psion
    • Python 同样可以移植到 Java 和 .NET 虚拟机上。

    二、Python下载

    Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:

    Python官网:https://www.python.org/

    你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。

    Python文档下载地址:https://www.python.org/doc/

    三、Python安装

    Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。

    您需要下载适用于您使用平台的二进制代码,然后安装Python。

    如果您平台的二进制代码是不可用的,你需要使用C编译器手动编译源代码。

    编译的源代码,功能上有更多的选择性, 为python安装提供了更多的灵活性。

    以下是各个平台安装包的下载地址:

    Python教程
    Python教程   -  Python安装教程

    以下为不同平台上安装 Python 的方法:

    Unix & Linux 平台安装 Python:

    下面为在 Unix & Linux 平台上安装 Python 的简单步骤:

    • 打开 WEB 浏览器访问https://www.python.org/downloads/source/
    • 选择适用 于Unix/Linux 的源码压缩包。
    • 下载及解压压缩包。
    • 如果你需要自定义一些选项修改Modules/Setup
    • 执行 ./configure 脚本
    • make
    • make install

    执行以上操作后,Python 会安装在 /usr/local/bin 目录中,Python 库安装在 /usr/local/lib/pythonXX,XX 为你使用的 Python 的版本号。

    Window系统安装Python:

    以下为在 Window系统上安装Python 的简单步骤方法教程:

    • 打开 WEB 浏览器访问https://www.python.org/downloads/windows/

      Window系统安装Python
      Window系统安装Python

       

    • 在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件 , XYZ 为你要安装的版本号。
    • 要使用安装程序 python-XYZ.msi, Windows 系统必须支持 Microsoft Installer 2.0 搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持 MSI。Windows XP 和更高版本已经有 MSI,很多老机器也可以安装 MSI。

    Window系统安装Python
    Window系统安装Python

     

    • 下载后,双击下载包,进入 Python 安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。

    MAC 平台安装 Python:

    MAC 系统一般都自带有 Python2.x版本 的环境,你也可以在链接 https://www.python.org/downloads/mac-osx/ 上下载最新版安装。

    环境变量配置

    程序和可执行文件可以在许多目录,而这些路径很可能不在操作系统提供可执行文件的搜索路径中。
    path(路径)存储在环境变量中,这是由操作系统维护的一个命名的字符串。这些变量包含可用的命令行解释器和其他程序的信息。
    Unix或Windows中路径变量为PATH(UNIX区分大小写,Windows不区分大小写)。
    在Mac OS中,安装程序过程中改变了python的安装路径。如果你需要在其他目录引用Python,你必须在path中添加Python目录。

    在 Unix/Linux 设置环境变量

    • 在 csh shell: 输入 
      setenv PATH "$PATH:/usr/local/bin/python"
      , 按下"Enter"。
    • 在 bash shell (Linux): 输入 
      export PATH="$PATH:/usr/local/bin/python" 
      ,按下"Enter"。
    • 在 sh 或者 ksh shell: 输入 
      PATH="$PATH:/usr/local/bin/python" 
      , 按下"Enter"。
      

    注意: /usr/local/bin/python 是 Python 的安装目录。

    在 Windows 设置环境变量

    在环境变量中添加Python目录:

    在命令提示框中(cmd) : 输入 

    path=%path%;C:\Python 

    按下"Enter"。

    注意: C:\Python 是Python的安装目录。

    也可以通过以下方式设置:

    • 右键点击"计算机",然后点击"属性"
    • 然后点击"高级系统设置"
    • 选择"系统变量"窗口下面的"Path",双击即可!
    •  
    • 然后在"Path"行,添加python安装路径即可(我的D:\Python32),所以在后面,添加该路径即可。 ps:记住,路径直接用分号";"隔开!
    • 最后设置成功以后,在cmd命令行,输入命令"python",就可以有相关显示。
    【0基础学Python教程系列】(一)Python 环境搭建,包含Windows、Unix & Linux系统Python安装教程
    【0基础学Python教程系列】(一)Python 环境搭建,包含Windows、Unix & Linux系统Python安装教程。舆情管家在用

     

    Python 环境变量

    下面几个重要的环境变量,它应用于Python:

    变量名 描述
    PYTHONPATH PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。
    PYTHONSTARTUP Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码。
    PYTHONCASEOK 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写.
    PYTHONHOME 另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。

    运行Python

    有三种方式可以运行Python:

    1、交互式解释器:

    你可以通过命令行窗口进入python并开在交互式解释器中开始编写Python代码。

    你可以在Unix,DOS或任何其他提供了命令行或者shell的系统进行python编码工作。

    $ python # Unix/Linux 
    
    或者 
    
    C:>python # Windows/DOS

    以下为Python命令行参数:

    选项 描述
    -d 在解析时显示调试信息
    -O 生成优化代码 ( .pyo 文件 )
    -S 启动时不引入查找Python路径的位置
    -V 输出Python版本号
    -X 从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时。
    -c cmd 执行 Python 脚本,并将运行结果作为 cmd 字符串。
    file 在给定的python文件执行python脚本。

    2、命令行脚本

    在你的应用程序中通过引入解释器可以在命令行中执行Python脚本,如下所示:

    $ python script.py # Unix/Linux 
    
    或者 
    
    C:>python script.py # Windows/DOS

    注意:在执行脚本时,请检查脚本是否有可执行权限。

    到此关于:“【0基础学Python教程系列】(一)Python 环境搭建,包含Windows、Unix & Linux系统Python安装教程  结束。感谢阅读。部分参考与网络及软盟网

     

     

    展开全文
  • Linux系统

    千次阅读 2018-12-08 18:16:04
    发布文章 博文管理我的博客退出 Trash Temp L Linux系统 电脑基本硬件设备 服务器硬件基础知识 服务器硬件基础知识 ** Linux系统 ** linux是一套开放源代码程序...Unix系统是Linux系统的前身,具有很多优秀特...

    Linux系统

    **

    • linux是一套开放源代码程序的,并可以自由传播类Unix操作系统软件

    • Unix系统是Linux系统的前身,具有很多优秀特征
      其设计之初,就是基于Intelx86系列CPU架构计算机的,它是一个基于POSIX的多用户,多任务并且支持多线程和多CPU的操作系统。
      注:POSIX,全称为(Portable OpenratingSysrem Interface),中文翻译为可移植操作系统接口,POSIX标准定义了操作系统应该为应用程序提供的接口标准。

    • Linux是由世界各地成千上万的程序员设计和开发实现的。

    • 当初开发Linux系统的目的就是建立不受任何商业化软件版权制约的,全世界都能自由使用的类Unix操作系统兼容产品。

    • 在过去的20年里,Linux系统主要被应用于服务器端,嵌入式开发
      手机安卓就是Linux,苹果是Unix,交换机路由器防火墙全是Unix和linux)、个人PC端(主要是windows,其次Ubuntu,)其中服务器端领域是重中之重。
      我们熟知的大型,超大型互联网企业(百度,淘宝,QQ,谷歌,58等…)都在使用Linux系统操作为服务器的程序运行平台。全球及国内排行前十的网站使用的主流系统几乎都是Linux系统。
      总结
      Linux操作系统之所以如此流行,因为它具有一下一些特征:

    • 1.开放源代码的程序软件,可自由修改

    • 2.Unix系统兼容,具备几乎所有Unix的优秀特性

    • 3.可自由传播,无任何商业化版权制约

    • 4.适合Intel等x86 CPU系列架构的计算机。

    Linux起源与发展

    Linux内核项目主要作者:芬兰赫尔辛基大学的李纳斯.拓沃兹(linus Torvalds)
    1984年,Andrew S.Tanenbaum开发了用于教学的Unix系统,命名为MINIX
    1989年,Andrew S.Tanenbaum开始在MINIX系统运行于x86的PC计算机平台1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触MINIX系统
    1991年,Linus Torvalds开始在MINIX上编写各种驱动程序等操作系统内核组件
    1991年10月,发布了0.02版(第一个公开版),这里公开的Linux内核源码并不是现在使用的Linux系统的全部,而仅仅是Linux内核kernel部分的代码。1993年,Linux1.0版发行,Linux转向GPL版权协议。
    1994年3月,Linux的第一个盛世发行版Slackware问世1996年,美国国家标准及数据的计算机系统实验室确认Linux版本1.2.13
    1999年,Linux的简体中文发行版问世2000年后,Linux系统日趋成熟,涌现大量基于Linux服务器平台的应用,并广发应用于基于ARM技术的嵌入式系统中。
    Linux内核的标志——企鹅Tux,取自芬兰的吉祥物官方网站:http://www.kernel.org(Linux内核的网站)

    • 自由软件:
      核心就是没有商业化软件版权制约,源代码开发,可无约束自由传播

    • 自由软件基金会FSF:
      主要项目就是GNU项目
      目标:建立可自由和移植的类Unix操作系统产品

    • GNU项目:
      GNU(GUN is Not Unix)1984年由Richard Stallman发起并创建宗旨:开发一个完整的类似于Unix的完全自由、可传播的操作系统官方网站:http://www.gnu.org

    • GPL协议GPL(GNU General Pulic License)
      GNU自由软件的通用许可协议允许用户任意复制、传递、修改及再发布基于自由软件修改再次发布的软件,仍需要遵守GPL
      简单的理解,GPL许可的核心,是保证任何人有共享和修改自由软件的自由,任何人有权取得、修改和重新发布自由软件的源代码权利,但都必须同时给出具体更改的源代码。
      注:开源社区的著名的Linux内核就是GPL许可下发布的

    • LGPL协议:LGPL(Lesser General Pubilc License)
      LGPL相对于GPL较为宽松,允许不公开全部源代码为基于Linux平台开发商业软件提供了更多空间。
      开放源代码软件(Open Source Software) 即开源软件
      Firefox网页浏览器
      OpenOffice办公套件
      Apache网站服务器软件等等

    *Linux系统的组成

    Linux操作系统由Linux内核和各种外围程序组成。
    Liunx内核是一个特殊程序,用于实现CUP和内存分配,进程调节,设备调节,设备驱动等核心操作,以面向硬件为主。

    在这里插入图片描述
    Linux的内核版本
    在这里插入图片描述
    在这里插入图片描述

    Linux内核采用稳定版和开发版本并存的版本控制方式。
    版本号的命名格式为x.yy.zz
    说明:x,为主版本号。
    用于表示内核结构、功能等方面的重大升级
    yy,为次版本号。用于表示内核版本是开发版本还是稳定版本。使用奇数,代表开发版本使用偶数,代表稳定版本
    zz,修订版本号。用于表示对同一个内核次版本的不断修订和升级,通常修订版本只是对内核进行较小的改变。
    Linux系统的外围程序:外围程序包括分析用户指令的解释器、网络服务程序、图形桌面程序等各种应用型的软件程序,以面向用户为主。
    构成Linux系统的外围程序大部分来自于GNU项目或其他组织的开源软件如:C语言编译工具gcc,命令解释器程序bash,网站服务器程序httpd等。因此Linux操作系统更确切的含义应为“GNU/Linux操作系统”
    另外一些重要组成部分则来自加利福尼亚大学berkeley分校的BSD Unix项目和麻省理工学院的X windows系统项目,以及在这之后成千上万的程序员开发的应用程序。
    Linux操作系统=Linux内核+GNU软件及系统软件+必要的应用程序。

    Linux之所以受到广大计算机爱好者的喜爱,主要原因:
    1、Linux属于自由软件,用户不用支付任何费用既可以获得系统和系统的源代码,并且可以根据自己的需要对源代码进行必要的修改,无偿使用,无约束地自由传播。
    2、Linux具有Unix的全部优秀特性,任何使用Unix操作系统合伙想要学习Unix操作系统的re,都可以通过学习Linux来了解Unix。
    特点:
    1、Linux是Unix在pc计算机上的克隆版,仿Unix内核构建,几乎与Unix指令及向下完全兼容。
    2、是一个完善的支持多用户、多任务、多进程、多CPU的系统
    3、具有的系统稳定性与可靠性
    4、具有很高的系统安全性
    5、有完善的网络服务,支持HTTP、FTP、SMTP、POP、SAMBA、SNMP、DNS、DHCP、SSH、TELNET等
    6、是基于GNU许可,自由开放的系统
    7、有大量第三方免费应用程序
    8、得到了众多业界厂商支持,如IBM、ORACLE、INTEL、HP、MOTO、Google等
    9、有完善的大型数据库平台,包括Oracle、DB/2、Sybase、MySQL、PostgreSQL等
    10、有完善的图形用户界面,包括GNOME、KDE等
    11、有完善的开发平台,包括C/C++、Java、Perl等,支持各类图形界面API,如GTK+、QT等

    Linux的应用领域:

    (1) 电信、金融、政府、教育、银行、石油等各个行业支持Linux操作系统
    (2) 各大硬件厂商也相继支持Linux操作系统
    (3) 大型、超大型互联网企业都在使用Linux系统

    • 2、嵌入式Linux系统应用

    (1) 网络设备(路由器、交换机、防火墙、负载均衡器等)
    (2) 专用的控制系统(自动售货机、手机、PDA、各种家用电器等)
    (3) Android

    • 3、个人桌面Linux应用领域

    (1) 浏览器上网
    (2) 办公室软件
    (3) 收发电子邮件
    (4) 实时通信
    (5) 文字编辑

    注:centos linux是国内互联网使用最多的linux系统版本

    centos主流版本在国内互联网企业的使用现状说明:
    CentOS 5系列:站25%左右,主流版本有CentOS 5.5、 CentOS 5.8、CentOS5.10、CentOS 5.11,不推荐新手学习

    CentOS 6系列:站45%左右,主流版本有CentOS6.2、CentOS6.4、CentOS6.6、CentOS6.7、CentOS6.8

    CentOS 7系列:刚发布了不久,目前极少企业正式使用。有企业在用,一般都是大企业的局部环境。

    展开全文
  • UNIX/Linux历史简介

    千次阅读 2018-12-01 20:39:19
    今天是2018年12月01日,我正式住入新租的房子。陆陆续续搬了一个星期的东西,倒不是因为东西多,只是太纵容自己的惰性了,这不能够!新的住处间隔旧住处只是差了一条街道,走楼梯8楼,虽然出入辛苦点,但是光线还算...

    今天是2018年12月01日,我正式住入新租的房子。陆陆续续搬了一个星期的东西,倒不是因为东西多,只是太纵容自己的惰性了,这不能够!新的住处间隔旧住处只是差了一条街道,走楼梯8楼,虽然出入辛苦点,但是光线还算充足,性价比差强人意吧。

    今天还是公司研发部门每季度团建的日子,我们去爬了深圳塘朗山,还不错,这是我在深圳继莲花山、梧桐山后爬的第3座山,适合慵懒的程序员。晚饭就去吃佛山烧仙鸡、烤鱼等等,还不错,丰盛得很!

    塘朗山山顶鸟瞰图一张:
    在这里插入图片描述

    下面参考Michael Kerrisk[德]编著的Linux/UNIX系统编程手册,看看UNIX/Linux的发展简史:
    1、1969年贝尔实验室(隶属于美国AT&T公司)的Ken Thompson在Digital PDP-7小型机上首次实现了UNIX系统,而该系统的设计理念来源自早期的MULTICS系统。

    2、1970年用汇编语言编写的UNIX被移植到PDP-11小型机上。在当今大多数UNIX(包括类UNIX的Linux)仍能够发现PDP-11实现所留下的历史遗迹。

    3、1973年被AT&T移植到PDP-11的UNIX被用C语言重写。(C语言到1973年才步入成熟期)当时法律禁止AT&T销售UNIX,于是AT&T在象征性收取一定费用之后将UNIX系统散布于大学,包括系统源码,广受校园欢迎。

    4、加州大学伯克利分校Ken Thompson及诸多研究生对UNIX进行精雕细琢。1979年该大学发布了属于自己的UNIX发布版—BSD。该版本在学术界广为流传,是日后一些商业UNIX实现的基础。

    5、与此同时,随着AT&T对电信市场垄断地位的丧失,该公司被获准销售UNIX,这也催生另一款UNIX的发布版—System V。该版本由AT&T公司的支撑团队研发而成,也是日后一些商业UNIX实现的基础。

    6、Richard Stallman发起GNU项目,并在20世纪80年代末,GUN项目已经开发出一套几乎完备且可以自由散布的UNIX实现,但是独缺一个能够有效运行的系统内核。

    7、1991年一位芬兰赫尔辛基大学学生Linus Torvalds受一款类UNIX的系统—Minix(源码完全开放,几乎独立于硬件架构,未对386处理器的能力充分利用)启发开发了能够在Intel x86-32架构上正常运行的系统内核。许多程序员加入开发队伍,Linux逐渐壮大且被移植到多种硬件架构上。

    8、20世纪80年代末,UNIX和C语言的实现百花齐放,软件移植性堪忧。对于C语言来说,1989年诞生了C89标准,1999年颁布C99标准;对于操作系统接口方面,诞生了POSIX.1标准,该标准在1988年和1990年先后被IEEE和ISO采纳为标准。历史演变,时至2008年人们完成了POSIX 1003.1-2008和SUSv4标准。

    展开全文
  • LinuxUnix的区别

    千次阅读 2019-09-13 09:11:03
    我只要搜一些关于这方面的东西,结果全都是关于Linux的,搞得好像Linux就是Unix似的。这让我不得开心颜。 Unix的搜索结果几乎全部都是一些宏观方面的什么哲学,思想,影响之类的,貌似经理很喜欢的那种写在ppt上的...
  • Understanding Unix/Linux Programming

    热门讨论 2012-02-27 09:41:50
    这是《Understanding Unix/Linux Programming》书后光盘资源,这本书非常经典,是学习Unix/Linux的好教材,课后资源含有大量的练习。
  • UNIX LINUX缩写风格

    2014-05-30 08:25:49
    -- Eric S. Raymond 构建于图形界面之上的操作系统,使用鼠标作为主输入设备, 是否使用缩写并不...而构建于命令行之上的操作系统,如 Linux,只要3个字母以上的单词,几乎都要缩写。 例如: cd 命令是 Chang
  • UNIX/Linux 系统管理技术手册(第四版)

    千次下载 热门讨论 2012-05-31 19:55:02
     《unix/linux系统管理技术手册(第四版)》延续了《linux系统管理技术手册(第二版)》以及《unix系统管理技术手册(第三版)》的讲解风格,以当前主流的5种linux发行版本(red hat es、suse、debian、fedora core和...
  • 我的 UNIX/Linux 学习笔记

    千次阅读 多人点赞 2016-09-13 16:37:04
    收拾屋子时翻到一个皱皱的笔记本,封面是这样的:嗯,高数,是大一时的笔记本。咦,操作系统,难道?翻开,从前向后看,稚气未脱的笔迹映入眼帘。居然是2008年的笔记。隐约记得那个火热的夏天,我在自习室复习高数...
  • 关于Linux/Unix的Profile文件

    万次阅读 2012-07-03 12:04:14
    用户可以在Profile文件中加入环境变量,...Unix/Linux有两个profile文件 1./etc/profile:是全局profile文件,设置后会影响到所有用户 2./home/username/.profile或.bash_profile是针对特定用户的,可以针对用户,来
  • KISS-UNIX/LINUX哲学思想

    千次阅读 2008-03-30 21:55:00
    摘录自"UNIX程序设计的艺术"一书KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真正的浓缩为一个...
  • 来自Unix/Linux的编程启示录

    千次阅读 多人点赞 2017-02-08 04:46:00
    写本文的最初灵感源于16年11月份我将工作环境切换到Mac OS上,其中一些使用"差异"让我开始对Unix/Linux中设计产生了浓厚的兴趣.虽然从13年开始使用redhat,再到后来一直使用的ubuntu,但却从来关注过这些,特此记录.
  • Linux是什么同一套操作系统无法在不同架构的平台上运行。 参考硬件功能函数并修改你的操作系统程序...Linux提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构,这个架构是沿袭UNIX良好的传统而来的,
  • Unix/Linux fork后传-clone

    千次阅读 2019-09-05 16:09:30
    它还有个前传《Unix/Linux fork前传》。 假设读者已经看过了前文,理顺了关于UNIX fork的方方面面: fork思想的最初由来。 UNIX fork的历史。 UNIX/Linux fork的实现。 UNIX/Linux fork的开销。 fork-exec的...
  • Unix/Linux下的/etc目录

    万次阅读 2012-07-03 20:07:44
    /etc目录用于存放Linux/Unix系统的配置文件,/etc里的配置文件非常关键,所以要经常备份(备份方法见文章末尾),这样不管你是重装系统还是因为系统坏掉,都能快速的恢复到早先的配置状态。文章“etc” 和“理解 ...
  • Linux/Unix shell 自动导出Oracle数据库

    万次阅读 2013-02-07 11:42:44
    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及... Linux Shell以及导入导出的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本
  • Linux/Unix shell 自动 FTP 备份档案

    千次阅读 2013-02-07 13:13:23
    使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及... Linux Shell以及导入导出的相关参考: Linux/Unix shell 脚本中调用SQL,RMAN脚本
  • 00. 目录 文章目录00. 目录01. 请参考Unix传奇02.03. 本博客后面会更新 01. 请参考Unix传奇 链接: https://coolshell.cn/articles/2322.html 02. 03.
  • Linux/Unix shell sql 之间传递变量

    万次阅读 2012-09-14 11:04:04
    灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考。 Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell ...
  • UNIX/Linux编程相关工具和资源

    千次阅读 2007-01-19 11:05:00
    linux编程所用的一些工具 GCC 中文手册 http://www.nbfan.com/forum/dispbbs....&ID=1433&page=1  GNU make 指南 http://www.linuxsir.org/bbs/showthr...&threadid=40431   autoconf-2.57手册(英文) ...
  • UnixLinux

    千次阅读 2016-08-06 21:44:00
  • Supervisor安装与配置(Linux/Unix进程管理工具)

    万次阅读 多人点赞 2016-06-01 16:23:26
    原文链接:http://blog.csdn.net/xyang81/article/details/51555473Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。...
  • Unix/Linux fork/exec的前世今生

    千次阅读 2019-09-04 14:12:34
    本文是《Linux fork那些隐藏的开销》的前传《Unix/Linix fork前传》。转载注明来自公众号“Linux阅码场”。 昨天(好像是上周的事了,暴雨天?),我发了个朋友圈,承诺给大家扒拉扒拉fork和exec的历史,顺便说一下...
  • Linux和类Unix终端命令行光标移动

    千次阅读 2018-08-18 12:55:19
    上两天换了个HHKB,很早之前就听说用这款键盘在Linux或Mac下开发很高效,确实,我用Vim的时候确实很高效,但是在用终端命令行的时候就不是那么回事了。 HHKB是60键的键盘,因此,方向键得用Fn组合其他键才能出来,...
  • 广义的Debian是指一个致力于创建自由操作系统的合作组织及其作品,由于Debian项目众多内核分支中以Linux宏内核为主,而且 Debian开发者 所创建的操作系统中绝大部分基础工具来自于GNU工程,因此 “Debian” 常指...
  • Linux入门培训_Linux基础培训教程_Linux系统入门学习视频课程,Unix基础培训教程(如aix,hp-ux),针对linux系统初级者开设的课程,是linux入门简单的视频教程.
  • 9种企业常用的LinuxUnix服务器

    千次阅读 2015-06-01 16:30:54
    9种企业常用的LinuxUnix服务器
  • 环境ubuntu16.04 编译的时候提示 cc -c -g -std=c99 -D_XOPEN_SOURCE=600 -D_DEFAULT_SOURCE -g -I../lib -pedantic -Wall -W -Wmissing-prototypes -Wno-sign-compare -Wno-unused-parameter *.c ...
  • linux/unix下的opt与etc文件夹

    千次阅读 2016-02-28 18:29:13
    初期:早期UNIX中,贝尔实验室的解释是:etcetra directory 。 etc. 就是Et cetra。表示其他、等等什么的,英语里能常常看都这个缩写的。是用来放其他不能归类到其他目录中的内容。 后来FHS规定用来放配置文件,就...
  • LinuxUnixLinux的历史及关系

    千次阅读 2018-10-25 20:41:38
    UnixLinux的关系悉悉嗦嗦Unix的历史Linux简介Mac OS 悉悉嗦嗦 对于接触计算机不久的同学来说,可能经常听到类似:UnixLinux,类Unix,Mac OS X,BSD,FreeBSD,“LinuxUnix一样啦”,“差不多”等等名次和论断...

空空如也

1 2 3 4 5 ... 20
收藏数 176,382
精华内容 70,552
关键字:

unix