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: Window系统安装...

    【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安装教程  结束。感谢阅读。部分参考与网络及软盟网

     

     

    展开全文
  • UNIX环境高级编程

    千次下载 热门讨论 2009-11-09 13:29:39
    UNIX环境高级编程》很好的一本书,整合成一个PDF文件,很清晰。 《UNIX环境高级编程》是 Unix/ Linux 程序员案头必备的一本书籍。可以说,Linux 程序员如果没有读过这本书,就好像基督教徒没有读过圣经一样,是很...
  • unix2dos批量转换工具(双向) MS桌面版 前一版描述较不祥细,以至于很同朋友不知道可以选择多个文件拖放,故在此多啰嗦几句。 注明:1、窗口支持拖放,单文件或多文件同时拖放均可 2、新版本添加文件列表窗口中点...
  • UNIX/Linux 系统管理技术手册(第四版)

    千次下载 热门讨论 2012-05-31 19:55:02
     《unix/linux系统管理技术手册(第四版)》延续了《linux系统管理技术手册(第二版)》以及《unix系统管理技术手册(第三版)》的讲解风格,以当前主流的5种linux发行版本(red hat es、suse、debian、fedora core和...
  • Oracle大型数据库系统在AIX UNIX上的实战详解.pdf

    千次下载 热门讨论 2012-12-04 15:57:21
    《Oracle大型数据库系统在AIX/UNIX上的实战详解》以AIX UNIX平台为主线,以其他UNIX系统为参照,描述了数据库系统Oracle 10g、Oracle 11g的构架方法,说明了该数据库在AIX平台常用的管理内容,提供了AIX上实施Oracle...
  • UNIX环境高级编程(中文第三版)

    千次下载 热门讨论 2016-04-13 08:29:14
    UNIX环境高级编程(第3版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。在本书第2版出版后的8年中,UNIX行业发生了巨大的变化,特别是影响UNIX编程接口的有关标准变化...
  • 关于unix下的相关问题

    2016-03-10 04:59:51
    本人学习软件一段时间了,但是又感觉没有入门,接触的主要是C语言,unix和linux系统 也接触了近两年时间,但是并没有感觉到unix/linux的强大和优越, 鸟哥私房菜读完大概,也动手实践过、unix编程环境读完,但是就是...
  • UNIX和类Unix操作系统

    万次阅读 2020-09-08 09:55:23
    UNIX和类Unix操作系统 Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。 Linux的起源可以追溯到古老的UNIX系统。正因为受到了UNIX的影响,才诞生了Linux。 Linux...

    UNIX和类Unix操作系统

    Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单机操作系统使用。
    Linux的起源可以追溯到古老的UNIX系统。正因为受到了UNIX的影响,才诞生了Linux。
    Linux继承了UNIX的许多优良传统,例如强大的网络功能、完善的命令以及良好的健壮性与稳定性。无论是从外观上,还是从功能上,UNIX与Linux都是非常相似的。
    #UNIX System V家族
        A/UX、AIX、HP-UX、IRIX、LynxOS、SCO OpenServer、Tru64、Xenix、Solaris、OS/2
    #BSD UNIX-386BSD家族
        BSD/OS、FreeBSD、NetBSD、NEXTSTEP、Mac OS X、iOS、OpenBSD、SUN OS、OpenSolaris
    #UNIX-Like
        GNU、Linux、Android、Debian、Ubuntu、Red Hat、Linux Mint、Minix、QNX、GNU/Linux、GNU/Hurd、Debian GNU/Hurd、GNU/kFreeBSD、StartOS
    #其他
        DOS、MS-DOS、Windows、React OS
    
    展开全文
  • Unix、Posix和标准UniX规范

    千次阅读 2017-06-03 18:14:40
    Unix、Posix和标准UniX规范

    文章作者:Tyan
    博客:noahsnail.com  |  CSDN  |  简书

    20世纪60年代是大型、复杂操作系统盛行的年代,比如IBM的OS/360和Honeywell的Multics系统。OS/360是历史上最成功的软件项目之一,而 Multics虽然持续存在了多年,却从来没有被广泛应用过。贝尔实验室曾经是Multics项目的最初参与者,但是因为考虑到该项目的复杂性和缺乏进展而于1969年退出。鉴于Mutics项目不愉快的经历,一群贝尔实验室的研究人员Ken Thompson、 Dennis Ritchie、 Doug Mcllroy和 Joe Ossanna,从1969年开始在DEC PDP-7计算机上完全用机器语言编写了一个简单得多的操作系统。这个新系统中的很多思想,比如层次文件系统、作为用户级进程的 shell概念,都是来自于 Multics,只不过在一个更小、更简单的程序包里实现。1970年,Brian Kernighan给新系统命名为“Unix”,这也是一个双关语,暗指“Multics”的复杂性。1973年用C重新编写其内核,1974年,Unix开始正式对外发布。

    贝尔实验室以慷慨的条件向学校提供源代码,所以Unix在大专院校里获得了很多支持并得以持续发展。最有影响的工作发生在20世纪70年代晚期到80年代早期,在美国加州大学伯克利分校,研究人员在一系列发布版本中增加了虚拟内存和Internet协议,称为Unix4.xBSD(Berkeley Software Distribution)。与此同时,贝尔实验室也在发布自己的版本,称为System V Unix。其他厂商的版本,比如Sun Microsystems的Solaris系统,则是从这些原始的BSD和System V版本中衍生而来。

    20世纪80年代中期,Unix厂商试图通过加入新的、往往不兼容的特性来使它们的程序与众不同,麻烦也就随之而来了。为了阻止这种趋势,IEEE(电气和电子工程师协会)开始努力标准化Unix的开发,后来由 Richard Stallman命名为“Posix”。结果就得到了一系列的标准,称作Posix标准。这套标准涵盖了很多方面,比如Unix系统调用的C语言接口、shell程序和工具、线程及网络编程。最近,一个被称为“标准Unix规范”的独立标准化工作已经与Posix一起创建了统一的Unix系统标准。这些标准化工作的结果是Unix版本之间的差异已经基本消失。

    参考资料:

    1. 深度理解计算机系统(P11)
    展开全文
  • UNIX命令行管道机制-UNIX哲学

    千次阅读 2012-04-21 13:21:12
    UNIX从来都不是为人机交互而设计的,而是为程序之间的交互而设计的。用了多年Linux,从起初的羡慕,崇拜,到初学时的不解,混乱,愤怒,后来失望,困惑,...最终发现,如果你真的非要和Windows相比较的话,UNIX的人...
  • Unix的特点

    千次阅读 2019-06-02 16:12:14
    UNIX操作系统,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,于1969年在AT&T的贝尔实验室开发。 Unix特点: Unix很简洁,仅仅提供 几百个系统调用并且...
  • 这是自己在linux中专门下的参考手册,与UNIX高级环境编程相匹配,目前国内没有此书的印刷本,在此就此资源与大家共同分享。
  • Unix 发展史

    千次阅读 2016-07-05 00:05:27
    简述Unix和Linux用父子关系你比喻应该还是比较合适的 - Unix是父亲,Linux则是儿子。他们之间有一个不可分割的关系,当我们学习完Linux之后,再去学习Unix的时候,就会发现它们之间无论是文件系统、基本命令或管理...
  • Unix的起源

    千次阅读 2016-11-25 11:35:45
    不得不说的 Unix【内容摘要】 Unix诞生于1969年,此后快速被广泛应用; Unix一开始是开源的,后来AT&T收回版权,并且不公开源代码; Unix的代码是由90%的C语言和10%的汇编组成; Unix后来的两大分支:AT&T的System V...
  • Unix哲学基础

    千次阅读 2009-02-28 23:43:00
    转自http://blog.chinaunix.net/u2/87718/showart_1838217.html --摘自《UNIX编程艺术》Unix哲学起源于Ken Thompson早期关于如何设计一个服务接口简洁、小巧精干的操作系统的思考,随着Unix文化在... Unix哲学说来不
  • unix network programming Vol 1,2. 英文版1,2两卷合集,pdf格式。 steven的著作,清晰可读。 unix学习的经典著作,必读书目。 The leading book in its field, this guide focuses on the design, development and...
  • B,为什么在 windows下编辑的 shell 脚本在 Unix下不能执行?为什么在 windows下编辑的 C 源文件在有些 gcc 编译器下不能编译? C,为什么我在 vi 等编辑器下打开一个文本文件会包含 ^M,如何把它去掉?为什么我在 ...
  • UNIX环境高级编程第二版(高清)

    千次下载 热门讨论 2011-10-27 22:38:19
    UNIX环境高级编程第二版UNIX环境高级编程第二版UNIX环境高级编程第二版UNIX环境高级编程第二版UNIX环境高级编程第二版UNIX环境高级编程第二版UNIX环境高级编程第二版
  • UNIX Shell 编程(3)-UNIX Shell的正则表达式 匹配任何单个字符:句点(.)比如:r.表示匹配r后跟任一个字符的模式。匹配行首符号:^比如:^George表示匹配以George开头的行匹配行尾符号:$比如:contents$表示匹配...
  • 莱昂氏UNIX源代码分析

    千次下载 热门讨论 2009-10-17 12:27:54
    莱昂氏UNIX源代码分析,内含的源码为英文高清版。修改了网上流传的互动出版网的有文字被图片挡住的问题。这里有人为unix v7编写的x86移植可以使用。也包括所有的源代码:http://www.nordier.com/
  • [总结]Unix设计哲学 <<Unix编程艺术>>

    千次阅读 2012-05-29 08:32:12
    学习了第一章关于哲学...但早在Unix发展的时期, 这一条原则却是在实践中不断提炼出来的. 这就是最为根本的一条:  KISS - Keep it Simple, Stupid! 精神上可以相较于"大智若愚"。Unix最为崇尚的是实用至上, 拿来主义。
  • <pre><code>func Unix(sec int64, nsec int64) Time </code></pre> <p>meaning, it returns a <code>Time</code> object. <p>But the following program aborts with the error message: <p>14: cannot use now...
  • 60行C代码的shell领略Unix哲学之美

    万次阅读 多人点赞 2019-09-10 16:29:49
    1969年,Unix初始,没有fork,没有exec,没有pipe,没有 “一切皆文件” ,但是那时它已经是Unix了。它简单,可塑。 Melvin Conway在1963年的论文中叙述fork思想时就解释说并行路径要用结果来交互,也就是在汇合的...
  • <a href="/questions/24987131/how-to-parse-unix-timestamp-to-time-time" dir="ltr">How to parse unix timestamp to time.Time 6 answers <p>I want to covert Unix time (1494505756) to UTC...
  • 其实Unix很简单

    千次阅读 2015-04-18 12:10:00
    其实Unix很简单   陈皓    很多编程的朋友都在网上问我这样的几个问题,Unix怎么学?Unix怎么这么难?如何才能学好?并且让我给他们一些学好Unix的经验。在绝大多数时候,我发现问这些问题的朋友都有两个特点: 1...
  • 初识Unix Domain socket

    千次阅读 2014-04-13 22:54:22
    佛曰: 并非所有的socket都用于网络通信。
  • unix网络编程源码

    千次下载 热门讨论 2014-07-30 10:31:09
    unix网络编程源码,包括unpipc.h头文件
  • 一、UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1)...
  • dos2unix for Windows

    千次下载 热门讨论 2009-03-19 13:47:14
    win32 port of Linux useful utility dos2unix. very useful to convert shell script or makefile with CR LF error.

空空如也

1 2 3 4 5 ... 20
收藏数 178,624
精华内容 71,449
热门标签
关键字:

unix