百科问答小站 logo
百科问答小站 font logo



如果让计算机不使用操作系统做服务器性能上是否会更有优势? 第1页

  

user avatar   bei-ji-85 网友的相关建议: 
      

一句话的回答就是:性能上是肯定有优势的,但系统的可扩展性很差,并且成本很高

裸机跑服务,思路其实就是高度定制化的操作系统,只保留必要的功能,把不需要的东西都砍掉。这种设计在RTOS/嵌入式领域非常常见,很多RTOS/嵌入式都可以实现高度的定制化,确实可以提供非常高的性能。

然而这种系统的问题是成本太高,一个是定制操作系统本身,另一个是软件设计限制,尤其是后者。比如内存管理性能太差,开发出一套基于裸机的内存管理模块,那么像malloc/free这种最基础的API可能都要从头写。考虑到glibc的很多东西都是基于系统调用之上的,现在连操作系统都没有,那么glibc也要重新设计,这对于上层应用(比如题主的web服务)来说简直是灾难。

而且一旦有新的技术规范出现以后,这种系统上扩展新功能的成本过于高昂。比如现在有一套新的加密算法,对于一般的Linux服务器来说,从开源社区拿一个开发包编译一下就可以了,接口可能都是POSIX规范的。但高度定制化的系统里,POSIX接口可能是不完整甚至是没有的,那么就需要自己重写一套,这样的开发成本太高了。

现在软件开发领域,由于代码的复杂度太高,大多数软件都需要互相借鉴、依赖其他软件包的代码、库等等,很少有公司会从头造轮子,那样的话软件开发成本远远高于硬件成本。

一个高度定制化的web服务器,可能性能上最多高出1-2倍,但开发成本可能是10-20倍都不止,有这个钱,多买几台服务器就好了。而且后期升级困难,维护困难(操作系统的很多功能其实是方便用户调试、维护的,这些“多余”的功能确实影响性能,但非常有用)。

当然了,如果有钱,非常有钱的话,这种定制的系统是可以做到的,有一些特殊的领域,比如金融、航空航天、军工等,都可以找到这种类似的系统,只要不差钱。


高度定制化的,不仅仅有软件,还有硬件,比如高端交换机的交换芯片,就是高度定制化的,比特币的矿机,也是高度定制化的,芯片只有一个功能,只做一件事,性能非常高,通用性很差。只要有钱(比如挖矿),肯定有人造的出来。

所以,这不是一个技术问题,这是钱的问题


user avatar   haozhi-yang-41 网友的相关建议: 
      

和通常的os比,绝对会。

但你真要做下来就会发现,最终效果是:你自己实现了一个迷你的os kernel。既然如此,和你一开始从某个os(例如说*nix/bsd)出发,按需裁剪一个高度定制化的极简os又有多大区别呢?

所以,实际上如果有类似“独占硬件所有资源以实现性能最大化”的需求,如很多“硬件”(如F5、游戏机),或者裸服务器上跑的系统(如vmware esx),都是走的定制化kernel路线的。


user avatar   yang-leonier 网友的相关建议: 
      

Web或数据库服务器一定涉及到文件系统、内存管理、多线程/多进程、I/O调度、TCP/IP协议栈、网卡驱动、磁盘控制器驱动.....。这样你如果自底向上做一个服务器软件,最终实现的就必然包括一个符合《操作系统原理》教材描述的操作系统概念的底层框架,相当于自己实现了一个操作系统。

至于性能上有没有优势,就看你做的这一套东西和成熟的操作系统比有没有优势了。


user avatar   zignforever 网友的相关建议: 
      

答案是可以,而且也不罕见,但并没有更有优势。

如果没有os直接跑,那很多os来处理的杂活你就得自己来,比如文件系统的管理。比如tcp/ip协议栈的实现。

进程线程内存管理你也都得自己从头写。当然喽,都是自家人,好好相处可以不打架。但所有东西就都得你自己做了,也就不用指望第三方给你做开发了。因为我想你也接受不了第三方写的东西出一点点问题整个系统就崩溃,对吧?

而且硬件部分你也都得自己驱动,比如网卡。所以通用方案你也就别想了,硬件打包一起卖吧。

那有没有这样得产品呢?有呀,显卡,阵列卡,甚至路由器,交换机,凡是厂商自己做固件的,基本上都是呀。

为什么说没有优势呢,这些底层的东西每个产品你都得重新开发一遍,不累吗?咱还没说bug的问题对不对?所以直接拿个好用的不就得了?比如Linux。


user avatar   wang-wei-77-36 网友的相关建议: 
      

你说的这个东西早就被广泛应用了,尤其是在互联网服务器领域和金融领域,每一家稍微大点的交易公司都有一套这个系统吧。

你说的这个东西,名字叫内核旁路, kernel bypass。

有一些特定的网卡,为了保证数据收发/读写的速度,数据不过内核, 不过CPU,从旁路直接进出user space(内存或外存)。如果你要系统操作这些数据,用的不是一般系统层的包,而是用Programmable packet processing. 直接pcap抓数据包操作。

如果你为了速度要你的服务器绕开kernel, 你的数据发送方法不是web/数据库,而是共享内存。你都不计开销的跑web/数据库了,绕开系统还不如优化下你的网页/数据库。


user avatar   starwlstar 网友的相关建议: 
      

这是个错误的看法。

如果没有操作系统,你要怎么做哪些基础设施?

比如网络驱动文件管理驱动?比如多进程多线程并行?你不会认为自己服务器就一个进程线程?

这一堆东西都没有,你怎么方便去编程构建业务?

该程序只提供web或者数据库之内的其中一项服务,”你难道认为web服务器或者数据库就一个进程线程?没有调度你怎么去做?你自己重写文件管理读写驱动?自己重写网络驱动?自己重写终端链接?

当然,如果是极其精简的程序,确实可以做到不用操作系统,比如很多嵌入式设备就没有操作系统,这是常识。但如果你的嵌入式系统想要访问网络想要即时存文件,你至少需要去适配网络驱动模块,而这些知识恐怕不是那些写java增删查改的人会的。


user avatar   s.invalid 网友的相关建议: 
      

不会。一般来说会更慢。


会这么想,是因为你对操作系统有太多的误解。


你以为操作系统是到乡间扰民、不干正事的高官:

其实操作系统是一个随叫随到兢兢业业任劳任怨、苦活累活都归他干的打工仔:


别以为你随随便便就能造出这么一个站到台上能玩调度、俯下身去能玩好网卡硬盘、把各种缓存管的条理分明效率一流的全才。


你以为操作系统是个华丽的空壳子、劳民伤财只为排场:

那叫用户界面。


其实操作系统核心小的很,哪怕最新的Windows10/11以及Linux核心都非常非常的小,小而精简——你看到Linux kernel有几十M,那是因为里面放置了太多设备驱动,打个比方的话就是带了个专业技术团队。

实际上,去掉多余的驱动、去掉不常用功能后,Linux kernel甚至可以裁剪到不到2M大——甚至带上基本的、图形化的桌面都可以小至10M。


没错,那就是个最精简最高效却又无所不能的加工中心:


你以为操作系统像多管闲事却又志大才疏的无能领导,每个人做每件事它都要插个手、添添乱:

其实绝大多数时候,操作系统会完全让出硬件供各种程序使用,你不叫它它绝不出现,给你完全的自由;只有你主动叫他、或者时间片到了不得不出来调度时,它才会执行必不可少的几条指令,完了继续隐退,做一个彻彻底底的小透明,连一个时钟周期(不到1纳秒)都不会多占……

换句话说,这是一个只在关键时刻出现的长者;你的工作效率差,可赖不到他头上:


恰恰相反,正因为对操作系统的效率和能力有如此多的要求,设计一个优秀的操作系统才如此困难。


结果,你来了。你简单粗暴的开除了所有做实事的打工人,又清退了所有专家顾问——还以为从自己亲戚里随便抓几个人都比他们干的好……

嗯,折腾吧。祝你好运。


user avatar   netwarm007 网友的相关建议: 
      

一大早起来真是笑死我了。

由于老头环空前的热潮,以及B站特有的UP主靠制作视频吸引流量转直播的模式,导致很多有人气但完全没有魂系列经验的主播在播这款游戏。比如某幻、瓶子。

(就是一开始制作视频是主业,直播是兼职,甚至是乐趣兴趣,到直播为主,制作视频反倒成了兼职。这种现象在游戏区特别明显。)

这就很有节目效果了,我看几个有名气的主播,都是重复被虐,平均活不过5分钟。真正是在哪里跌倒就从哪里跌倒。

很多在我们这些老玩家看来常识性的东西,对于他们来说完全不存在的。

盾反这种就不提了(其实我也不会),连二人转、回合制、推图都不懂。在大型地牢里不想打小怪,一个劲往前跑,结果变成开火车;当着怪物的面喝药=白喝;开宝箱被怪物背刺;以为学了法术就是法爷了,结果被几只鸟打得抱头鼠窜。

然后另一边,那些原本有魂系列经验的主播,就吃了刻板印象的亏。觉得自己有技术有实力,也不练级就顺着主线硬钢。就比如一上来的野外精英太阳骑士,要么你死要么我亡,绕路是不可能绕路的。

太阳骑士都还好,毕竟王老菊都能杀。

但没有等级,没有血量,没有伤害,硬钢噩兆。

真当噩兆快慢刀是假的,自己打几次就能盾反了?而且老头环这次砍了盾反在BOSS战中的作用,要反三次(二次)才能触发处决。

结果被虐3000遍,又不好意思去练级,尬在那了。

老头环是不是玩家的盛宴我还不知道(买了游戏,昨天也预下载了,结果今天起来发现那个盘满了……正在重新下载,下载完了又发现,我的电脑只有8G内存……),但肯定是不少主播的灾难、观众的盛宴。

当然,我也知道有些主播直播受罪是搞节目效果,但我也是真看到有主播被气到下播了。

另外一点,老头环这次其实是以探索为主要玩法。

B站UP主老戴今天专门做了一期视频讲解,想要玩好、玩轻松,就是尽可能的探索地图,拿物品、刷等级。而不是走到哪杀到哪,打不过硬去打。

就比如第一个剧情BOSS前,大地图上有的是小型地牢,野外精英,要把图清完了再去打噩兆,真跟打弟弟一样。(收回我的话,40级30血20耐20敏+3打刀7瓶奶,打了7次才过。前三次就是纯背板,后三次有点贪,经常血瓶白喝,最后一次基本掌握出手时机,就硬耗过去了。)

其实魂系列游戏特别吃角色强度(等级、装备),一些小怪你一刀砍死和一刀残血,完全就是两种难度。打BOSS,你挨一下就要喝药,和挨两下才需要喝药也是两倍的差距。

不过按照这么个玩法,的确没有什么节目效果。

讲真,还真就是看那些新手主播无能狂怒最有节目效果。

至于游戏本体,如今我也的确是玩上了,总体上来说符合我的期待。

作为一个中年人,我其实是在看了老头环试玩视频后才接触魂系列的。

原因有2,一是手残反映慢,玩这种游戏非常苦手;二是,我其实不太喜欢魂系列那种压抑的黑暗风格。

但老头环作为开放世界,虽然依旧以压抑阴郁为主,但也有光明广阔的场景。比如一开始做完新手指引推门而出的那一刻。

至于在难度与操作方面,远程技能的实用化,召唤物的存在,以及跳砍与伪盾反的出现,真的能够解决很多问题。

只是看你愿不愿意当一个“卑鄙的褪色者”。

远程技能包括法术与射击。我玩的武士,初始给的长弓非常给力。尤其记得推一座城堡图的时候,一开始不清楚套路,进入城堡被满地的炸药桶与两个放火球的法师直接秒了。复活后掏出长弓,一剑封喉,解决掉法师无伤过了。

还有初期的一个地牢,一个场景墙上爬着的与左右墙角蹲着的类似地精的怪物,近战5-6刀才能砍死。

第一次去直接围殴致死。

第二次,用弓箭一只只引过来,很轻松就过了。

至于近战武器,我是非常推荐初期见完老婆就能开箱子拿到的君王大剑。

这把武器虽然攻速低,成长性也低,但在初期真的非常实用。

尤其是在跳劈方面。

这一作跳劈虽然强但也看武器,比如武士上来给的打刀就属于跳劈对空,跳起来横着劈一刀,有时候都打不到站着的怪。而大剑则是竖着往地上砸,范围极大。

我举一个例子,就是我开地图第一次遇到红灵。就是等对方打完一套跳劈就完了。

我的战斗策略就是,遇事不决,举盾防御,然后跳劈。

至于BOSS战,依旧有难度,也许跳劈和法术都没啥作用,依靠的依旧是精准的闪躲后普攻(排除盾反)。

但我觉得这算是魂系列的乐趣之一。

如果随便什么BOSS战都能逃课,那也就没意思了。


user avatar   ling-jian-94 网友的相关建议: 
      

这是我看到的最准确的总结。

总的来说,就是中国的高考相对公平,所以性价比极高,所以其他活动都可以适当让步。




  

相关话题

  近十年CPU速度有较大提高么? 
  软件工程界有其它与『操作系统内核』与『浏览器引擎』齐名的高难度项目吗? 
  为什么 CPU 不做成可以换插槽的,或者把除内存插槽 PCIe 之外的东西都外置? 
  如何用云服务器建立一个wordpress网站? 
  如果让计算机不使用操作系统做服务器性能上是否会更有优势? 
  石头和塑料袋对于计算机传感器的差别在于什么?为什么无人驾驶系统会依然存在对周围环境的误判? 
  有没有一进制?一进制下1+1=几? 
  如何理解 “c++缺少对象级别的消息发送机制” 这句话? 
  市售的『USB 键盘记录器』可以记录和窃取账号密码,是什么原理? 
  为什么计算机科学没有系统的学派? 

前一个讨论
内存为什么要分页?
下一个讨论
如何评价C语言让数组退化为指针的设计?





© 2024-12-25 - tinynew.org. All Rights Reserved.
© 2024-12-25 - tinynew.org. 保留所有权利