以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 操作系统原理 』  (http://bbs.xml.org.cn/list.asp?boardid=63)
----  请教:操作系统可以用高级语言写么?  (http://bbs.xml.org.cn/dispbbs.asp?boardid=63&rootid=&id=40968)


--  作者:硕鼠
--  发布时间:12/7/2006 8:47:00 PM

--  请教:操作系统可以用高级语言写么?
大家好,偶尔发现了这个论坛,感觉很好。希望大家帮助我,谢谢!

有一个问题一直捆饶着我,就是:高级语言如何能写操作系统呢?
我想操作系统只能用汇编语言来写吧?比如说文件系统,如果用C语言写的话,C自身就要调用操作系统提供的系统调用来完成文件操作,又怎么能用C语言写呢?

我想自己写一个实验型的操作系统,无奈无法操纵磁盘。有哪里可以查到磁盘方面的资料?(不通过BIOS的INT 13H来操作磁盘,因为我想对保护模式做一些实验)


--  作者:flyhigher
--  发布时间:12/9/2006 5:12:00 PM

--  
呵呵,Linux就是用C语言写的。
--  作者:flyhigher
--  发布时间:12/9/2006 5:22:00 PM

--  
有本专门讲解Linux内核源码的书,推荐你看一下。
书名忘了,是浙大的一位老师写的
--  作者:硕鼠
--  发布时间:12/9/2006 5:47:00 PM

--  
恩,如果写一个可以在裸机上访问硬盘的程序,应该从那里着手呢?

形式大致如下:

mov   ax   ,    柱面号
mov   bx   ,    磁道号
mov   cx   ,    扇区号
mov   dx   ,    内存地址
call    read_disk

这个   read_disk 就是读磁盘的某个扇区到dx指定的位置。
我的意思是不能拿别人写好的程序库中的程序来实现 read_disk 子程序 读磁盘的功能
当然也不可以通过BIOS的功能调用和DOS的功能调用来完成。
我应该怎么写这个read_disk 程序呢?


--  作者:rhonda
--  发布时间:12/10/2006 12:43:00 PM

--  
你恐怕要自己些微程序了
--  作者:lidongbin
--  发布时间:12/15/2006 10:32:00 PM

--  
我是做编译系统研究的,我的看法是你不如试试用自己的编译器来完成代码的转译
这样可以笔尖容易实现

仅工参考


--  作者:jbh811
--  发布时间:2/1/2007 12:11:00 PM

--  
操作系统不能完全用高级语言来实现。实际上,所谓的高级语言也不是一个绝对的概念。汇编语言,应该算是公认的低级语言了,java算是高级语言了,但c语言却很难界定。由于c语言和汇编语言一样是属于编译性的语言,所以c语言的程序性能才会有极大的优化空间,这点上,c语言很接近于低级语言。但c语言又是面向过程的,并不是汇编那样的机器级指令,这样来看,他又很像高级语言。而java语言,并不是编译性的语言,java程序编译出的目标文件是字节码文件,是用java自己的虚拟指令集实现的。而其程序能够运行则需要java虚拟机将其虚拟指令集转换成真正可以执行的机器指令。所以java这种高级语言是不能用于实现操作系统的,因为要实现操作系统只能依赖cpu的实指令集,或者说这时候并没有可以依赖的虚拟指令集,因为这时候还没有其他软件。这也决定了,需要实现操作系统,必然应该选取编译性的语言。
    前面说过了,c语言是编译性的语言,但是,操作系统的实现并不能完全的依赖c语言。正如全面说的,c语言在设计的时候就是以一种面向过程的语言来设计的。这也是c语言区别于汇编的根本,否则c语言就退化成汇编语言了。这也就决定了c语言更多的是过程设计,而一些细节的实现c语言是实现不了的(最直接的,c语言不能直接访问寄存器),这部分还是需要依赖汇编。比如引导程序,中断处理,低级I/O等。说白了就是c语言不能实现所有的机器指令集。如果想全部用c语言来实现的话,除非扩展标准的c语言,比如定义一些新的语法,你可以自己扩展编译器来实现。
    很多人都说linux是用c语言写的,其实linux是用c和汇编写的。其实关于c和汇编之间的区别也不是那么大,因为他们都是编译性的语言,所以他们之间的联系也异常紧密,只要固定目标文件格式,c语言编译的目标文件和汇编编译的目标文件是可以链接的。

    ps:我自己写过操作系统,不过只写完引导和简单中断处理就懒惰了:)


--  作者:gmg_211
--  发布时间:3/1/2007 11:15:00 AM

--  开了眼界了
我深深理解了学无止境这句话。
--  作者:weson
--  发布时间:5/9/2007 10:49:00 PM

--  
高级语言写出来了也慢啊``````````````````

--  作者:Angelo.j63
--  发布时间:5/28/2007 4:32:00 PM

--  
有志者,事竟成.
^_^
--  作者:Landings
--  发布时间:6/6/2007 4:27:00 PM

--  

事实上是,操作系统大部分都是用高级语言写成的。

比如说我所知道的一个操作系统就是用大约一百行汇编语言加上C语言写成的。

我敢肯定WINDOWS大部分也是C,虽然我没有看过源代码


--  作者:计算的高手
--  发布时间:12/14/2007 2:03:00 PM

--  
不错呀?
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms