找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 149|回复: 4

一直困惑很多年的一个问题

[复制链接]

18

主题

15

回帖

130

积分

至尊会员

积分
130

至尊会员

发表于 2024-5-2 21:30:20 | 显示全部楼层 |阅读模式
以前上学时,我们的老师不止一次的和我们说 “操作系统也是用C写的!”,“操作系统也是用C写的!”,“操作系统也是用C写的!”,也不敢问,问了只会牵扯出更多不懂的问题,
为了不让自己陷入混沌中后来干脆就不去想了,以至于这个问题至今也没想明白,时过境迁,人总是好奇的,也是要跟上时代发展的,最近因为项目需要用C语言,于是乎这个问题又从脑海里冒了出来.......我感觉C语言它本身只能做加减乘除和写一些数据结构,设备的访问也只能直接的通过系统调用,或者间接的利用C实现中的标准库函数来进行访问设备,总之还是离不开操作系统提供的系统调用,那么我一直再想,再开发操作系统的时候,操作系统本身还没有出来更别提还有系统调用了,那么C语言如何去访问IO设备呢?难不成在C语言中嵌入对应处理器的汇编语言使用in/out去访问设备.....总之我也没有完全想明白,想听听各位老师和学长们的理解~

98

主题

144

回帖

1568

积分

管理员

积分
1568
发表于 2024-5-3 10:52:46 | 显示全部楼层
万物皆出于C是有点夸张了。
诚如你所说,C本身只能进行常规的运算。所以最底层用C反而更麻烦,传统上是汇编的世界。
用汇编写底层,到了一定的程度之后,再用C才会变得简洁和高效。

18

主题

15

回帖

130

积分

至尊会员

积分
130

至尊会员

 楼主| 发表于 2024-5-3 11:30:40 | 显示全部楼层
站长 发表于 2024-5-3 10:52
万物皆出于C是有点夸张了。
诚如你所说,C本身只能进行常规的运算。所以最底层用C反而更麻烦,传统上是汇编 ...

嗯,那么写操作系统时,只能用C语言的常规逻辑吧,这个时候的C实现是不是还不包含库的概念!!!就算有库也是那种汇编写好的一个模块然后集成在C实现中形成一个函数,然后C语言可以调用。比如控制设备的某个寄存器等....

98

主题

144

回帖

1568

积分

管理员

积分
1568
发表于 2024-5-3 13:21:09 | 显示全部楼层
linuxspring 发表于 2024-5-3 11:30
嗯,那么写操作系统时,只能用C语言的常规逻辑吧,这个时候的C实现是不是还不包含库的概念!!!就算有库 ...

写操作系统时没有库的概念,就是写一些模块来调用,一个模块调用另一个模块。正好C语言只能把代码放函数里。

在这个阶段,使用C语言的唯一好处是方便,比如对复杂数据结构的处理非常方便,往往几条C语句就能代替几十条几百条汇编指令。但也只是在操作系统的开发达到一定规模的时候。还处在底层开发的时候,用C反而更麻烦。

18

主题

15

回帖

130

积分

至尊会员

积分
130

至尊会员

 楼主| 发表于 2024-5-3 14:21:23 | 显示全部楼层
站长 发表于 2024-5-3 13:21
写操作系统时没有库的概念,就是写一些模块来调用,一个模块调用另一个模块。正好C语言只能把代码放函数里 ...

我好像被你几段文字说的,有些似懂非懂了,
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2024-5-17 15:45 , Processed in 0.220435 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表