浅谈 unix, linux, ios, android 区别和联系
浅谈 unix, linux, ios, android 区别和联系
网上的答案并不是很好,便从网上整理的相对专业的问答,本人很菜,大佬勿喷
UNIX 和 Linux
UNIX 操作系统(尤尼斯), 是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由 KenThompson、Dennis Ritchie和Douglas McIlroy于1969年在AT&T的贝尔实验室开发。目前它的商标权由国际开放标准组织所拥有,只有符合单一UNIX 规范的 UNIX 系统才能 使用UNIX这个名称,否则只能称为类 UNIX(UNIX-like)
unix 是在 posix 之前就有的,linux 是在 posix 出来之后有的,最初的 linux 是仿制的 minix,unix 和 linux 很多软件都是相通的,linux 是 UNIX 的一个分支,别的分支还有freebsd 等,UNIX 是命令行下的系统 linux 是加了窗体管理的系统。 UNIX 是一个功能强大、性能全面的多用户、多任务操作系统,可以应用从巨型计算机到普通PC机等多种不同的平台上,是应用面最广、影响力最大的操作系统。 Linux 是一种外观和性能与 UNIX 相同或更好的操作系统,但,Linux 不源于任何版本的 UNIX 的源代码,并不是 UNIX,而是一个类似于 UNIX 的产品。
从发展的背景看,Linux 是从 UNIX 发展而来的。这种继承使得Linux的用户能大大地从 UNIX 团体贡献中获利。因为 UNIX 是世界上使用最普遍、发展最成熟的操作系统,它是七十年代中期发展起来的微机和巨型机的多任务系统,虽然有时接口比较混乱,并缺少相对集中的标准,但还是发展壮大成为了最广泛使用的操作系统之一。UNIX 的用户可以从很多方面得到支持和帮助。因此,Linux 做为 UNIX 的一个克隆,同样会得到相应的支持和帮助,直接拥有 UNIX 在用户中建立的牢固的地位。
从使用费用上看,UNIX 与 Linux 的区别在于 Linux 是一种开放、免费的操作系统,而 UNIX 系统基本上需要有偿使用。这一区别使得我们能够不用花钱就能得到很多Linux的版本以及为其开发的应用软件。当我们访问 Internet 时,会发现几乎所有可用的自由软件都能够运行在Linux系统上。并且,一大批世界级的优秀的程序员正在努力开发和提供基于 Linux 的共享软件。 但是,也正是由于Linux 源码可以开放的缘故,所以现在真正的商业应用尚未开始,原因很简单:任何人都可以了解其内部最薄弱的环节,都可以实施侵袭和攻击。
从产品方面看,UNIX 和 Linux 都是操作系统的名称.但 UNIX 这四个字母除了是操作系统名称外,还作为商标归 SCO 所有.Linux 商业化的有 RedHat Linux 、SuSe Linux、slakeware Linux、国内的红旗等,还有 Turbo Linux.UNIX 主要有 Sun 的 Solaris、IBM 的 AIX, HP 的 HP-UX,以及x86平台的的 SCO UNIX/UNIXwareUNIX多数是硬件厂商针对自己的硬件平台的操作系统,主要与 CPU 等有关,如Sun 的Solaris作为商用,定位在其使用 SPARC/SPARCII 的CPU的工作站及服务器上,当然 Solaris 也有x86的版本,而Linux 也有其于 RISC 的版本。
至于价格,个人使用的 Linux 基本上算是免费的,不同的Linux发行厂商针对企业级应用在基本的系统上有些优化,如 RedHat 的 Enterprise 产品,这些产品包括支持服务是比较贵的。像IBM/HP/SUN的UNIX,因为主要是针对其硬件平台,所以操作系统通常在设备价格中。
在性能上,Linux没有 UNIX 那么全面,但基本上对个人用户和小型应用来说是绰绰有余.通常情况下,如果你有机会使用到UNIX环境,比如银行、电信部门,那一般都是固定机型的UNIX。比如电信里SUN的居多,民航里HP的居多,银行里IBM的居多。学习中,不同的UNIX命令集有些不同,要注意。
目前主流的Unix系统有三种,分别是 AIX、HP-UX、Solaris,它们分别运行在各自的 Unix 服务器上,这些 Unix 服务器自成体系,有自己生产的 CPU、内存、主板等等,这些Unix系统互不兼容,它们各自有自己的系统工程师,这些工程师一般只熟悉其中的某种 Unix 系统,如果要熟悉其它的 Unix 系统,则还要继续学习,这些 Unix 系统没有好坏,只有不同。
另外,目前各个行业关键性的应用领域采用的都是Unix服务器,为什么呢?Linux一般运行在PC机上,不太稳定,并行度不够 一般应用在小型企业;而Unix系统则运行在Unix服务器上,这些服务器非常稳定,已经经历过几十年的考验,还有这些Unix服务器CPU的个数最多的可以达到一百多个,并行度非常高,这个是PC机无法比拟的。目前在电信、金融、油田、移动、证券等行业的关键性应用,Unix服务器处于垄断地位。所以只有掌握了Unix才能真正意义上的进入高端行业,对以后的职业发展是至关重要的。
Linux
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 操作系统诞生于1991 年10 月5 日。Linux 有许多不同的版本,但是都使用了 Linux 内核。Linux 安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux 这个词本身只表示 Linux 内核,但实际上人们已经习惯了用 Linux 来形容整个基于 Linux 内核,并且使用GNU工程各种工具和数据库的操作系统。
Linux 内核是可以裁剪的,可以对不同的目标平台(如PC、嵌入式设备)做不同的裁剪。
有实力的厂家一般还可以直接修改内核源代码,做不同的定制或者裁剪。比如以前国产麒麟系统修改了 FreeBSD(一种Unix)内核以便符合自主安全,成为一个事件。
各系统发展时间轴:
iOS
iOS 是由苹果公司开发的移动操作系统,iOS 与苹果的 Mac OS X操作系统一样,属于类 Unix 的商业操作系统。原本这个系统名为 iPhone OS,因为iPad,iPhone,iPod touch 都使用 iPhone OS,所以 2010WWDC 大会上宣布改名为 iOS(iOS为美国Cisco公司网络设备操作系统注册商标,苹果改名已获得Cisco公司授权)。
Android
Android 是一种基于 Linux 的自由 及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较 多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。
虽然 Android 基于 Linux 内核,但是它与 Linux 之间还是有很大的差别,比如 Android 在 Linux 内核的基础上添加了自己所特有的驱动程序。
android 是否能称为一种新的操作系统呢?至少我自己认为不算是,它最多算作一个新的应用程序罢了。
Android 为什么会选择 Linux ?
成熟的操作系统有很多,但是 Android 为什么选择采用 Linux 内核呢?这就与 Linux 的一些特性有关了,比如:
1、强大的内存管理和进程管理方案 2、基于权限的安全模式 3、支持共享库 4、经过认证的驱动模型 5、Linux本身就是开源项目
图解 Android 和 Linux 的区别
上面两幅图应该很直观的展示了 Android 系统和 Linux 发行版系统(Ubuntu/Fedora/centos)之间的区别和联系。
可以这么说 Android 本质上还是一个 Linux 系统,只不过 Google 对它进行了裁剪和定制,这跟我们定制Linux到自己的嵌入式设备上的做法大同小异,只不过Google做的更多罢了,那么 Google 主要做了哪些事情呢?上图中也可以看出来,很多人说 Android 系统的程序只能用Java开发,这么说的说明对 Android 系统的架构了解的还不是很深入,其实从图上看到,Google 自己写了一个叫Dalvik的程序运行在Linux的系统上面,这个程序就是 Android 的 Java虚拟机(JVM),由于效率等问题 Android4.4 以后改为 Android Run Time(ART),但不管是 Dalvik 还是ART,都是用c/c++开发的,而用 Java 开发出来的 APP 其实是运行在 Dalvik/ART 上面的,皮之不存毛将焉附,没有 Dalvik/ART,那些 Java 开发的 APP 是根本没法运行的,所以说那些说 Android 系统不能用 c/c++ 开发的说法是站不住脚的,只要用 AOSP(安卓开放源码项目)里面的交叉编译器编译出来的二进制文件在 Android 上面照样也是可以运行的,而且跟 Dalvik/ART 属于同一层次的东西,即(都是init进程的子进程),但是一般的 Android 系统上 init 进程只有一个子进程即Dalvik/ART,如果非要说Dalvik/ART才算Android的话,那么Android确实不能用 c/c++ 开发,因为 Java 程序编译出来的是字节码,只能在 Dalvik/ART 上运行,c/c++ 编译出来的是二进制机器码直接在CPU中运行,应该说c/c++开发(这里不是说的JNI方式)Android 程序无法调用 Android 的 Java 类库这样才是正确的。
说了这么多Android的,再看看 Linux 发行版的做法,Linux 发行版一般是在 Linux 的基础上开发了一套桌面管理系统,比如基于 GTK 框架的gnome,比如基于Qt框架的LXQT(听说 Ubuntu 准备抛弃 gnome 投向Qt怀抱了?Qt的死忠粉表示干得好!)。跟 Windows 一样,经典的一个桌面系统+N个软件的模式,用 c/c++ 开发出来程序编译成二进制的机器码直接运行在 Linux 系统上,这些软件全部都是跟Dalvik/ART一个层次的东西,而Linux发行版的程序能不能用 Java 开发呢?这个问题就跟问 Windows上 能不能用Java开发一样没水准。毕竟 Dalvik/ART 本身也是运行在 Linux 系统上的,你只要把 Dalvik/ART 移植到 Linux 发行版甚至 Windows 上,你手机里的那些 APP 就可以运行了(当然是不依赖硬件的,如果要打电话肯定是不行了),不然你以为Android模拟器是怎么弄的。
总结起来,Android 系统和 Linux 发行版的系统根本区别是 Android 上面只跑了一个 Dalvik/ART,而Linux发行版上面跑了很多“Dalvik/ART”而已。如果你把 gnome 或者LXQT部署到Android 上,或者把 Dalvik/ART 部署到 Linux 发行版上的话,那么二者的区别可能并没你想象的那么大。
其实,在 Linux 上面跑一个软件(虚拟机、解释器),然后再基于这个软件做二次开发的的做法 Google 的 Android 并不是第一个这么干的。工控行业的小伙伴对控制器应该很熟悉吧?什么,你不知道控制器?或者说PLC更亲切吧,PLC(可编程控制器)只是一种通用的控制器而已,PLC 分为两种,一种是编译型的PLC,我们在学校里学习的什么欧姆龙,三菱,西门子S300都是这种PLC,这种PLC的软件架构很简单,就是一个单片机,然后我们画的梯形图跟我们编译单片机程序一样直接被编译成了机器码,然后烧写到单片机里面执行,这种PLC是没有办法监控运行的,不过我要说的是另外一种PLC,曾经机缘巧合接触过一段时间,那就是软PLC,最常用的软PLC就是codesys,codesys可不止是一个简单的PLC编译工具!它是一个软PLC核!为什么说他跟Android的做法十分相似呢?看看它的架构就知道了,codesys 通常被部署在Linux系统上面,开机即运行,然后我们的梯形图程序被codesys编译工具转成梯形图指令保存到内存中,然后codesys内核逐句解析梯形图指令,边解析边执行,而不是像传统的编译型的PLC一样先把所有程序编译成机器码再烧写到flash中,运行的时候再搬到内存里面运行,这跟JVM执行字节码如出一辙,这种PLC可以很方便的实现监控运行,怎么样,是不是跟Android的做法很相似呢?
浅谈 unix, linux, ios, android 区别和联系的更多相关文章
- 浅谈cookie 和session 的区别
具体来说 cookie 是保存在“客户端”的,而session是保存在“服务端”的 cookie 是通过扩展http协议实现的 cookie 主要包括 :名字,值,过期时间,路径和域: 如果cooki ...
- 浅谈Log4j和Log4j2的区别
相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程.我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代. log4j是Apache的 ...
- 浅谈 UNIX、Linux、ios、android 他们之间的关系
开源Linux 一个执着于技术的公众号 Unix, 简化形成了Linux,Linux则是Android的内核,而苹果则是使用unix系统作为ios和macos的内核. 几个系统出现的时间 UNIX系统 ...
- 【转】从Mac/OS和iOS开放源码浅谈UNIX家谱
阅读数:1245 苹果公司在各类开源项目中长期贡献着自己的力量,但其UNIX系统技术一直都属于闭源阵营(这一点可以从NUX OS阵营和家谱图中得到答案).然而,以封闭闻名的苹果公司,2017年国庆期间 ...
- ios浅谈关于nil和 NIL区别及相关问题
本文转载至:http://blog.csdn.net/guozh/article/details/8469131 1.nil和null从字面意思来理解比较简单,nil是一个对象,而NULL是一个值,我 ...
- ios浅谈关于nil和 NIL区别及相关问题(转)
转自:http://blog.csdn.net/guozh/article/details/8469131 个就是将引用技术减1,所谓的引用计数就是看看有多个指针指向一块内存实体,当release一次 ...
- 浅谈 Unix I/O 模型
原文出处:http://miaoo.in/talk-about-unix-io-model.html 在实际应用中,数据操作通常分为输入和输出,那么以输入为例,在操作系统中,一个数据的输入通常分为以下 ...
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信 ...
- 浅谈Unix I/O模型
关于I/O模型的文章比较多,参考多篇后理解上仍然不太满意,终需自己整理一次,也是编写高吞吐量高性能网络接口模块的基础.这里所说的主要针对网络I/O,近几年面对越来越大的用户请求量,如何优化这些步骤直接 ...
随机推荐
- 【笔记】AJAX基础
[笔记]AJAX基础 Django AJAX 知识储备:JSON 什么是 JSON JSON 是轻量级的文本数据交换格式 JSON 独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编 ...
- Jmeter创建FTP测试计划
创建FTP测试计划 在这一章,你将学习如何创建一个基础的测试计划来测试FTP站点.你将在一个FTP站点上的两个文件中创建四个用户来发送请求.并且,你将告诉用户运行测试两次.所以,总的请求数是(4个用户 ...
- Idea与Eclipse操作代码的快捷方式
1.Idea格式化代码的快捷键:ctrl+alt+L 2.在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码.如下 在project settings - File ...
- solr7之solrJ的使用
solr7的官网API介绍 网页翻译的不是很准确,只能了解个大概,基本能获取如下信息: 一.构建和运行SolrJ应用程序 对于用Maven构建的项目, pom.xml配置: <dependenc ...
- JavaScript数据结构-8.双向链表
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- applets
Java Applet 可以大大提高Web页面的交互能力和动态执行能力.包含Applet的网页被称为Java-powered页,可以称其为Java支持的网页. Applet 当用户访问这样的网页时,A ...
- C#中的委托 Delegate(委托 也叫代表,代表一类方法)
1. 委托类似与 C或C++中的函数指针,但委托是 面向对象的,并且是类型安全的 详情可查看官方文档:https://msdn.microsoft.com/en-us/library/ms173172 ...
- 如果天空不死博客java阅读列表整理
如果天空不死的主页https://home.cnblogs.com/u/skywang12345 下面是最近总结的Java集合(JDK1.6.0_45)相关文章的目录. 01. Java 集合系列01 ...
- Ibatis SqlMap映射关系总结
一.一对一关系一对一关系即一对单个对象,下面举例说明:一对单个对象例如:<resultMap id="loadAResult" class="A"> ...
- Python36和Python27共存的方法
Python26和Python37环境的配置 设置环境变量 我的电脑右键属性-高级系统属性-环境变量 选择系统变量中的Path,双击打开 加入你的Python安装路径 C:\Python27;C:\P ...