浅谈 unix, linux, ios, android 区别和联系

  浅谈 unix, linux, ios, android 区别和联系

  网上的答案并不是很好,便从网上整理的相对专业的问答。

  1、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作为商用,定位在其使用 SPAR C/SP ARCI I 的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才能真正意义上的进入高端行业,对以后的职业发展是至关重要的。

  2、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)内核以便符合自主安全,成为一个事件。

  各系统发展时间轴:

  3、iOS

  iOS 是由苹果公司开发的移动操作系统,iOS 与苹果的 Mac OS X操作系统一样,属于类 Unix 的商业操作系统。原本这个系统名为 iPhone OS,因为iPad,iPhone,iPod touch 都使用 iPhone OS,所以 2010WWDC 大会上宣布改名为 iOS(iOS为美国Cisco公司网络设备操作系统注册商标,苹果改名已获得Cisco公司授权)。

  4、Android

  Android 是一种基于 Linux 的自由 及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较 多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。

  虽然 Android 基于 Linux 内核,但是它与 Linux 之间还是有很大的差别,比如 Android 在 Linux 内核的基础上添加了自己所特有的驱动程序。

  android 是否能称为一种新的操作系统呢?至少我自己认为不算是,它最多算作一个新的应用程序罢了。

  5、Android 为什么会选择 Linux ?

  成熟的操作系统有很多,但是 Android 为什么选择采用 Linux 内核呢?这就与 Linux 的一些特性有关了,比如:

  (1)、强大的内存管理和进程管理方案 (2)、基于权限的安全模式(3)、支持共享库 (4)、经过认证的驱动模型 (5)、Linux本身就是开源项目

  可以这么说 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的做法很相似呢?

原文地址:https://www.cnblogs.com/yyuyu/p/10897004.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple 最新软件的错误和性能问题。
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只有5%的概率会遇到选择运营商界面且部分必须连接到iTunes才可以激活
一般在接外包的时候, 通常第三方需要安装你的app进行测试(这时候你的app肯定是还没传到app store之前)。
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应用变灰了。那么接下来我们看一下Flutter是如何实现的。Flutter中实现整个App变为灰色在Flutter中实现整个App变为灰色是非常简单的,只需要在最外层的控件上包裹ColorFiltered,用法如下:ColorFiltered(颜色过滤器)看名字就知道是增加颜色滤镜效果的,ColorFiltered( colorFilter:ColorFilter.mode(Colors.grey, BlendMode.
flutter升级/版本切换
(1)在C++11标准时,open函数的文件路径可以传char指针也可以传string指针,而在C++98标准,open函数的文件路径只能传char指针;(2)open函数的第二个参数是打开文件的模式,从函数定义可以看出,如果调用open函数时省略mode模式参数,则默认按照可读可写(ios_base:in | ios_base::out)的方式打开;(3)打开文件时的mode的模式是从内存的角度来定义的,比如:in表示可读,就是从文件读数据往内存读写;out表示可写,就是把内存数据写到文件中;
文章目录方法一:分别将图片和文字置灰UIImage转成灰度图UIColor转成灰度颜色方法二:给App整体添加灰色滤镜参考App页面置灰,本质是将彩色图像转换为灰度图像,本文提供两种方法实现,一种是App整体置灰,一种是单个页面置灰,可结合具体的业务场景使用。方法一:分别将图片和文字置灰一般情况下,App页面的颜色深度是24bit,也就是RGB各8bit;如果算上Alpha通道的话就是32bit,RGBA(或者ARGB)各8bit。灰度图像的颜色深度是8bit,这8bit表示的颜色不是彩色,而是256
领导让调研下黑(灰)白化实现方案,自己调研了两天,根据网上资料,做下记录只是学习过程中的记录,还是写作者牛逼
让学前端不再害怕英语单词(二),通过本文,可以对css,js和es6的单词进行了在逻辑上和联想上的记忆,让初学者更快的上手前端代码
用Python送你一颗跳动的爱心
在uni-app项目中实现人脸识别,既使用uni-app中的live-pusher开启摄像头,创建直播推流。通过快照截取和压缩图片,以base64格式发往后端。
商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付,支付完后跳回到商户APP内,最后展示支付结果。CSDN前端领域优质创作者,资深前端开发工程师,专注前端开发,在CSDN总结工作中遇到的问题或者问题解决方法以及对新技术的分享,欢迎咨询交流,共同学习。),验证通过打开选择支付方式弹窗页面,选择微信支付或者支付宝支付;4.可取消支付,放弃支付会返回会员页面,页面提示支付取消;2.判断支付方式,如果是1,则是微信支付方式。1.判断是否在微信内支付,需要在微信外支付。
Mac命令行修改ipa并重新签名打包
首先在 iOS 设备中打开开发者模式。位于:设置 - 隐私&安全 - 开发者模式(需重启)
一 现象导入MBProgressHUD显示信息时,出现如下异常现象Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_MBProgressHUD", referenced from: objc-class-ref in ViewController.old: symbol(s) not found for architecture x86_64clang: error: linker command failed wit
Profiles >> 加号添加 >> Distribution >> "App Store" >> 选择 2.1 创建的App ID >> 选择绑定 2.3 的发布证书(.cer)>> 输入描述文件名称 >> Generate 生成描述文件 >> Download。Certificates >> 加号添加 >> "App Store and Ad Hoc" >> “Choose File...” >> 选择上一步生成的证书请求文件 >> Continue >> Download。
今天有需求,要实现的功能大致如下:在安卓和ios端实现分享功能可以分享链接,图片,文字,视频,文件,等欢迎大佬多多来给萌新指正,欢迎大家来共同探讨。如果各位看官觉得文章有点点帮助,跪求各位给点个“一键三连”,谢啦~声明:本博文章若非特殊注明皆为原创原文链接。