浅析Linux与VxWorks的区别

创作目的:按自己的理解简化和归纳,方便自己后续的复盘

        VxWorks 是美国Wind River System 公司的实时操作系统。Tornado与workbench是vxworks系统的开发环境,应用程序可以设置diab和gnu等编译器。

        Linux是类Unix计算机操作系统的统称,虚拟机搭建各类发行本常用makefile设置编译规则后用gcc编译。


Linux与vxWorks的主要区别
1、内核结构

Linux是宏内核,Vxworks是微内核。

微内核架构设计的操作系统:鸿蒙OS、Vxworks、Minix、Fuchsia、QNX等

宏内核架构设计的操作系统:OpenVMS、Linux、FreeBSD、Solaris等

        微内核是只提供必要服务的操作系统内核,包括但不限于任务调度、中断处理、内存管理等。其他服务,如文件管理、网络支持等通过接口连到微内核。这种内核设计保持操作系统的内核尽可能小,内核直接与计算机硬件相关,内核越小,越便于在不同的硬件系统间进行移植。微内核可以使不需要的模块不加载到内存中,可更有效地利用内存。有很好的扩展性,可简化应用程序开发。用户只运行他们需要的服务,利于减少磁盘空间。

        宏内核是操作系统核心架构的一种,除了基本的服务,内核还包括文件系统、网络支持等。宏内核的内部可被分为若干模块,但在运行时,是一个独立的二进制大映像。模块间的通信是直接调用其他模块中的函数来实现的。在运行阶段,以动态方式来加载、卸载可运行的模块,但模块均为二进制代码。若没有动态加载/卸载机制,操作系统的核心想要进行任何的调整、变换,都必须重启才能达成,为了核心功效轻松地扩展、延伸模块化是必然且必要的。


2、内存访问和内存保护

Linux采用虚拟存储管理方式,vxworks采用实存储管理方式

        VxWorks的内核采用实存储管理方式,所有任务运行于同一物理地址空间用户程序直接操作物理地址,不能直接地提供内存保护,不能防止错误蔓延。一个模块崩溃,将导致整个系统崩溃。更换组件或者升级只能重启系统。

        Linux的内核采用虚拟存储管理方式,用户具有独立的地址空间,用户进程只能访问本进程的虚拟空间,提供了内存保护,可以防止错误蔓延。进程间内存隔离,一个进程故障崩溃,其他进程不受影响进程和核心隔离,进程异常地址访问核心不受影响。统一的内存管理,按需分配。


3、执行单元

        任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、IO设备及内存空间等系统资源,并独立于其它任务,宏观上与它们一起并发运行VxWorks内核使任务能快速共享系统的绝大部分资源。 在我的理解中VxWorks中的进程是指Rtp,进程包含任务。

        进程(重量级进程)是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈操作系统管理在其上运行的所有进程,并为这些进程公平地分配时间。也因为各个进程有自己的内存空间、数据栈等,所以只能使用进程间通讯(IPC),而不能直接共享信息

        线程(轻量级进程)跟进程相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境。它们均认为自己才是那个主进程,并且不知道有其他进程的存在。线程的运行可能被抢占(中断),或暂时的被挂起(也叫睡眠),让其它的线程运行。

        一个进程中的各个线程之间共享同一片数据空间,所以线程之间可以比进程之间更方便地共享数据以及相互通讯。线程一般都是并发执行的,正是由于这种并行和数据共享的机制使得多个任务的合作变为可能。实际上,在单CPU 的系统中,真正的并发是不可能的,每个线程会被安排成每次只运行一小会,然后就把CPU 让出来,让其它的线程去运行。在进程的整个运行过程中,每个线程都只做自己的事,在需要的时候跟其它的线程共享运行的结果。


4、请求内核服务方式

        系统调用:由操作系统实现的所有系统调用所构成的集合即程序接口或应用编程接口(API)。是应用程序同系统之间的接口。操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序。

        Linux通过fork 创建一个新进程 、clone 按指定条件创建子进程,而vxworks则是直接调用系统的函数执行功能。


5、实时性

        实时操作系统 (RTOS) 是相对于分时操作系统而言。在分时操作系统中,CPU资源会被平均地分配。在一个实时操作系统之中,每个任务完成的时长。

        在实时操作系统中,系统必须在特定的时间内完成指定的应用,而分时操作系统则注重将系统资源平均地分配给各个应用,不太在意各个应用的进度如何,什么时间能够完成。不过,就算是实时操作系统,系统的“硬度”也会有所不同,因而有了所谓的硬实时和软实时 。

        硬实时系统不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现预期目标。 而软实时系统以容忍偶然的超时错误。失败造成的后果并不严重,例如在网络中仅仅是轻微地降低了系统的吞吐量。

        软实时只能提供统计意义上的实时。例如发射卫星应用系统,这些系统的实时性必须达到100%,绝对不允许出现意外故而硬实时系统尤为重要。

著名的硬实时系统包括:VxWorks,rtems, rtlinux, ThreadX, QNX,Nucleus等

软实时系统包括:Linux, winCE

        也可以这样理解:硬实时是指那些对时间要求非常严格的系统一旦系统不能满足程序对时间的要求的话系统就要崩溃。软实时是指那些对时间要求不是很严格的系统一旦系统不能满足程序对时间的要求也不至于引起系统的崩溃


6、文件系统差异

        分区实质上是介质上的一片连续的扇区。如果介质是磁盘,则是磁盘分区,如果介质是内存,则为内存分区。它本身可以与文件系统无关(在我们对它进行格式化之前)。它不隶属于任何目录,不存在某个分区所在的目录的说法。

        文件系统可以理解为一个分区上存储文件的一种管理方式和布局,简称“管理布局”。如一个分区可以以ext2的布局方式来管理文件,也可以以其余文件系统的布局方式来管理文件等。有不同“管理布局”的分区,可以有相同的目录/文件树结构。

        当分区被格式化后(即有了布局后),就可以用来存储文件。这时这样的一片连续的扇区,需要有一个入口,即挂载点。一个分区的挂载点可以是“/”的任意目录。进入挂载点,就等于进入到了该分区的所谓的最上层目录。显而易见,一个分区可以有多个挂载点,即多个入口。也可以更换入口。也可以没有任何入口,即把该分区的所有挂载点都umount。

        访问一个分区有两种方法,一是可以通过挂载点来访问,此时可以看到分区的目录/树结构。二是绕过文件系统和挂载点,直接访问物理设备(通过设备文件)。此时看不到分区的目录/树结构,只能读写扇区裸数据。未格式化或尚未挂载的分区,只能通过这种方法。当然即使拥有挂载点(入口)的分区也可以直接读写扇区裸数据。个人认为linux归属第一类,vxworks归属第二类。

你可能感兴趣的:(linux,运维,服务器)