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



为何x86中“系统调用”要使用“内中断”实现? 第1页

  

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

0. 系统调用不一定非要用内中断,x86体系CPU实际上提供了多种方式,中断机制确实是符合要求,但不代表中断机制是唯一的选择。比如x86里的call gate也可以用来做系统调用,也能做到权限控制和内核代码保护,跟中断的效果完全一样,甚至像Task gate/TSS这种东西,也能玩出花出来。

1. 使用int作为系统调用入口,其实只是习惯问题。因为DOS时代,系统调用就是走的INT 21H,所以到了保护模式,习惯性的仍然用中断的方式完成系统调用,属于设计上的延续。至于DOS的这种机制更早是因为什么,我了解的就不多了。可以推测一下,在没有保护模式概念的时代,在非x86架构上,中断是唯一一种:能保护PC指针+flag寄存器的、各个arch上实现基本都统一的硬件指令(别的arch上可不一定有call gate),所以跨平台的操作系统,通过中断进入系统调用可能是当年唯一的选择。

2. 中断屏蔽是无法屏蔽内部中断的,Intel的手册上有写,所以跟中断屏蔽没关系,跟外中断IO更不是一回事,外中断用的是IOAPIC来控制,跟内中断不相关。

3. 用中断做系统调用,开销比较大,所以才有了SYSCALL/SYSENER等一系列新的指令,新的操作系统已经很少用INT指令了,所以这更证明了用INT指令不是唯一的选择,至少不是现在的选择。

4. 据说call gate用于WOW64中的32到64的切换,有些嵌入式系统可能是用call gate而非INT方式完成系统调用。

5. 用中断,能保证安全,但不代表中断是唯一的选择,也不代表“最”安全。这是一个设计选型的问题,不是一个技术问题。甚至连内存模型都可以不是平坦模型,但需要编译器支持。


user avatar   crimzon 网友的相关建议: 
      

借用一下德国的观点,我觉得非常合理。

我记得一个德国UP主关于纳粹暴行的言论,让我觉得德国部分民众是对历史有敬畏之心的。

1.不支持纳粹的德国民众不应当承受纳粹的战争暴行罪责,因为他们不支持纳粹。如果将来纳粹复辟,他们也拒绝成为纳粹的帮凶,他们出生在战后也没有事实性的帮助纳粹。

那么谁来承受纳粹的战争暴行的罪责呢?新纳粹应该承受,那些叫嚣这纳粹无罪的人应该承受,那些试图将法西斯在德国复辟的人应该承受,他们是纳粹的后继者。

二战的德国民众有罪责么,有的,他们有的真心诚意帮助纳粹,有的事实性的帮助纳粹。

2.德国人民即使不支持纳粹,也应当承担传递历史真相的使命。

不支持纳粹的德国民众不会去给也不需要给奥斯维辛,屠杀等行径洗地或者否认,因为他们本身不是罪人,但是他们理应告诉后代,在1939-1945年发生了什么,德国做了什么,万恶的法西斯分子做了什么丧尽天良的龌龊事情。

正是因为这样,德国人才有如此资格挺起腰来对历史的受害者正视,我不支持纳粹,我也没支持过纳粹,纳粹干的坏事赖不到我头上,但是我仍然告诉你们当年纳粹丧尽天良的事。

正视历史,反思历史,肩负历史,这是德国人的优良品质。


回到日本法西斯这边。

相信很多人已经看过了小约翰可汗最新一期的日本变态“鸟”,其实这就是日本战后的写照。

战犯一个劲地说不是我,我没有,文化差异,试图逃避自己的罪行,似乎忘记了就在几个月前还在满脸狰狞的虐待战俘营里的战俘。

民众们有的不能接受自杀殉道,有的遮遮掩掩地说不是我不是我不是我与我无关。

是的,这群人要么畏畏缩缩地求原谅,要么装的楚楚可怜,要么假惺惺的说自己是被上级逼迫的。

施加暴行的时候笑得比谁的猖狂,接受惩罚的时候哭的比谁都可怜。

在1970—80年代,日本经济高速发展,似乎那个战败国日本已经一去不复返,他们开始让军国主义和右翼抬头,因为自己是世界第二经济体,自己有权说不。

那些躲起来的军国主义者们又威风地穿着军服走上了街头,带着军刀的老不死们走过街头,脸上洋溢着得意的神情,忘了十几年前自己如何装成一个可怜的良民丑态。

他们堂而皇之的把战犯放在神社里面供奉。他们小人得志地嘲笑那些被侵略的国家。

他们求饶只是因为弱小。

他们凌虐只是因为强大。

他们支持右翼,却说自己并无罪责。

他们声称自己并无罪责,却不敢承认犯下的战争暴行。

相比之下我甚至还觉得德国的新纳粹也算好东西,至少他们从不遮掩,他们极端排外,他们也不洗地,直接说杀的好。

坏,坏到了极致也至少敢作敢当。

而某些民族,明明是自己犯下了战争暴行,明明是自己侵略其他国家,却支支吾吾不敢承认,却明里暗里洗地,却一个劲的支持右翼,还对中国的dislike率直飙90%以上,不知道的还以为是日本被中国侵略了。

也不是说这是劣根性,人民从来没有什么劣根性支撑,只是麦跑跑当初的清算似乎并不彻底,让大正时期的龌龊国风传递到了现在还能生根发芽。




  

相关话题

  x86架构处理器中不同的寄存器有性能区别吗? 
  为何x86中“系统调用”要使用“内中断”实现? 
  如何看待英特尔员工称丢掉苹果订单是因为 Skylake 处理器的 QA 测试「异常糟糕」? 
  给RISC-V设计自定义指令,有什么需要注意的事情吗? 
  为什么 lea 会被用来计算? 
  页表到底是保存在内核空间中还是用户空间中? 
  为什么目前x86的CPU的L1 Cache这么小? 
  寄存器会比用库开发,程序运行更快吗? 
  为何x86中“系统调用”要使用“内中断”实现? 
  如果arm或者其他架构严重到了威胁x86架构的地位,intel和amd会将其开源并开放授权吗? 

前一个讨论
掌握很多门计算机语言的人不会记串吗?
下一个讨论
为什么编译器过度优化导致线程安全问题?





© 2024-11-22 - tinynew.org. All Rights Reserved.
© 2024-11-22 - tinynew.org. 保留所有权利