go 适合写操作系统吗?

2021-01-26 09:41:39 +08:00
 downstairs

我知道基本的 C 和汇编可以写,但晦涩难懂。 用 go 怎么样?

4713 次点击
所在节点    问与答
22 条回复
PiersSoCool
2021-01-26 10:11:10 +08:00
还是要性能
写汇编最好
但是出于性能和书写的平衡 还是 C 吧
yyfearth
2021-01-26 10:11:21 +08:00
不太适合 因为有 GC
你可以试试 Rust 比 C/C++强 但是也比 Go 难
renmu123
2021-01-26 10:12:14 +08:00
不适合,现在开始转向 rust 了
yyfearth
2021-01-26 10:12:15 +08:00
Rust 我说的是可读性和内存安全性而言
不是效率
misaka19000
2021-01-26 10:13:18 +08:00
不适合,因为 go 的 runtime 太多了
misaka19000
2021-01-26 10:13:52 +08:00
也就是说 golang 语言本身附带的运行时特性太多了
hwdef
2021-01-26 10:17:01 +08:00
有 gc 的语言都不适合写操作系统。
sampeng
2021-01-26 10:17:59 +08:00
一个 gc 0.1ms 操作系统都会受不了
Kilerd
2021-01-26 10:23:58 +08:00
go 不能做实时系统。
xdeng
2021-01-26 10:26:11 +08:00
go 有 GC 就不适合实时要求高的操作
cmostuor
2021-01-26 10:27:02 +08:00
go 语言一开始的定位就不是写操作系统的语言
cmostuor
2021-01-26 10:28:43 +08:00
@Kilerd github 上还真有嵌入式的版本 但也是拿来写应用而已
ManjusakaL
2021-01-26 10:43:41 +08:00
OSDI 2018 上有篇文章,The benefits and costs of writing a POSIX kernel in a high-level language

MIT 那边用 Go 实现了一个 POSIX 内核,具体可以看一下,https://www.usenix.org/system/files/osdi18-cutler.pdf
UN2758
2021-01-26 11:04:16 +08:00
有 gc 不合适的原因是在 gc 的时候,os 无法响应任何指令?但是现在消费级 os 都不是严格实时的吧
ashong
2021-01-26 11:13:53 +08:00
不知道是不是和 rust 有关,windows 10 长时间运行 firefox 和 thunderbird 就会变得非常慢,关掉重新打开就好了
lysS
2021-01-26 11:32:42 +08:00
为什么不设计成 GC 可选择的喃?
t6attack
2021-01-26 12:10:41 +08:00
举个例子:大多数电脑在闲置状态下,底层其实在频繁收发数据包。但 CPU 占用却趋近与 0%,因为 tcp/ip 、arp 、802.11 。。这些底层通信协议是用 C 语言定义和实现的,网卡驱动是用汇编写的。效率很高,性能浪费极少。所以底层的东西感觉不到资源占用,资源占用主要来自系统之上的应用。
如果把这些用高级语言实现,底层日常收发数据包,CPU 占用就应用直接飙上去。这系统能用嘛?
Jirajine
2021-01-26 12:14:37 +08:00
go 且不说 gc 导致的效率问题。
安全性和可靠性也不行,从 c 那里继承太多糟粕。
BingoXuan
2021-01-26 13:32:15 +08:00
@t6attack
那是因为内核可以捕获硬件中断,中断到了就会切换对应的系统组件的处理函数处理,而一般程序还要等内核处理好中断及其数据交回数据给应用程序,自然很慢,而且中断多了也一样 CPU 占用一样高。网卡驱动都有 dma 的,而应用程序还要自己叫 CPU 搬当然更慢。
chenyi
2021-01-26 13:53:58 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/748374

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX