linux系统和windows系统到底哪个好?

linux系统和windows系统到底哪个好?,第1张

Linux是一个主要运行于inetel架构的 *** 作系统,不仅具备Unix系统全部特征,而且与POSIX标准兼容。Linux的功能包含真正的多任务、虚拟内存、共享库、需求装载等,发行遵循GNU的通用公共许可证。而Windows *** 作系统却和Linux有着完全不同的开发模式和发展历史。

1、进程管理以及调度:从这个方面来说,Linux是一个单块式 *** 作系统, *** 作系统通常在用户进程内存空间内进行,可免去发生系统调用时的进程切换开销。Windows是一个准微内核 *** 作系统,许多功能以单独进程实现,从而提高了系统模块化程度,但是进程切换开销大一些。

2、进程间通信机制:Linux提供了标准的UNIX IPC机制,而Windows

则在基本IPC机制的基础上,提供了许多直接面向应用程序的高级IPC机制。从本质来说,Linux的IPC机制接近了IPC原语,底层化,提供了最大的灵活性,也可以在此基础上建立更复制的IPC价值,而Windows在原语提供的IPC机制有管道、命名管道、消息传递、共享内存、信号量等。

3、内存管理:Linux优于Windows,在面对相同的进程地址空间大小时候,对内存布局的使用方式不同,Windows实际只为了进程准备了2GB弱的可用虚拟地址空间,而Linux中的进程地址空间使用更灵活些。

虽然Linux和Windows都提供了内存共享技术,但是他们实现有些思维的区别,Linux系统给用户接口非常简单,只需要将自己虚拟内存空间附加到共享内存对象之上。Windows则是通过内存映射文件提供共享内存机制,从使用上来说,比较复杂。

进程创建:

WINDOWS:WIN32接口,函数略。

LINUX:FORK函数,父子进程的区别PPID和PID。LINUX中的进程的含义和WINDOWS中是不一样的。LINUX中的进程本身是可以执行的。而WINDOWS中,进程只是表示一个资源的拥有体,是不能执行的。要执行的话,一定需要一个线程。这也部分解释了为什么CreateProcess中为啥一定要传入要执行的文件的名字。LINUX子进程直接使用父亲的地址空间,只有子进程加载一个新的可执行文件的时候才创建自己的地址空间。也就是很多时候共享地址空间,有个函数(忘了)就是如果决定开始写入,则将资源拷贝一份;如果此时突然决定不需要写入,此时就能避免系统资源的消耗。进程相对于WINDOWS中的线程,所以同WINDOWS中的线程创建相比,二者的开销应该差不多。

执行:

LINUX:exec

WNDOWS:WIN32函数。

底层:两者大部分都是C和汇编,在我们看来以为LINUX全是C,WINDOWS是C++,其实不然 *** 作硬件的是汇编和C。使用了不少宏定义,简化地址运算和程序结构,如定义一个空地址:0x000000表示NULL。

内核:

WINDOWS:相对稳定的API,就是向后兼容,我们总是看到兼容的字眼。升级方便,过于臃肿。

复杂的继承关系,藏得结结实实的代码。

LINUX:不固定的接口,为了更加的技术化,所以LINUX一直改进,很多时候偏离了桌面用户。头文件和执行文件也就是一些算法的改进和函数改进。如果你看完2.4的内核后,再看2.6的内核差异不大,但是不少。升级复杂,考虑的东西太多。数不尽的代码,代码是宝贵的,又是该死的。

进程算法(优先级):

LINUX:图形界面少点,内核支持抢占的同时又支持CFS公平调度算法。二叉树、红黑树等算法。

WINDOWS:进程假死现象普遍,采用阻塞算法,很多时候导致不流畅、卡死。现在win7做了相当大的改进。算法不清楚,以前阻塞编程的不少。

内存:

基本上两者差不多,在X86你懂得。

【以上纯属个人看法,如有不对请指正。给普及教育下。】

Linux的线程是用轻量级进程实现的,比Windows真正的线程开销大,

特别是没有加装Native POSIX Thread Library的Linux Kernel上,差距更明显。

我想是不是该从这方面想想原因和解决办法。

你的Linux Kernel至少得是2.6以上


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/8655812.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存