新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 操作系统研究。UEFI
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机理论与工程『 操作系统原理 』 → 请教:操作系统可以用高级语言写么? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 33863 个阅读者浏览上一篇主题  刷新本主题   平板显示贴子 浏览下一篇主题
     * 贴子主题: 请教:操作系统可以用高级语言写么? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     jbh811 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:100
      门派:XML.ORG.CN
      注册:2007/2/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jbh811发送一个短消息 把jbh811加入好友 查看jbh811的个人资料 搜索jbh811在『 操作系统原理 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jbh811的博客楼主
    发贴心情 

    操作系统不能完全用高级语言来实现。实际上,所谓的高级语言也不是一个绝对的概念。汇编语言,应该算是公认的低级语言了,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:我自己写过操作系统,不过只写完引导和简单中断处理就懒惰了:)

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/2/1 12:11:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 操作系统原理 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/6/29 4:19:41

    本主题贴数12,分页: [1] [2]

     *树形目录 (最近20个回帖) 顶端 
    主题:  请教:操作系统可以用高级语言写么?(412字) - 硕鼠,2006年12月7日
        回复:  不错呀?(7字) - 计算的高手,2007年12月14日
        回复:  事实上是,操作系统大部分都是用高级语言写成的。比如说我所知道的一个操作系统就是用大约一百行汇..(173字) - Landings,2007年6月6日
        回复:  有志者,事竟成.^_^(19字) - Angelo.j63,2007年5月28日
        回复:  高级语言写出来了也慢啊``````````````````(42字) - weson,2007年5月9日
        回复:  开了眼界了(28字) - gmg_211,2007年3月1日
        回复:  操作系统不能完全用高级语言来实现。实际上,所谓的高级语言也不是一个绝对的概念。汇编语言,应该算是公..(1550字) - jbh811,2007年2月1日
        回复:  我是做编译系统研究的,我的看法是你不如试试用自己的编译器来完成代码的转译这样可以笔尖容易实现..(106字) - lidongbin,2006年12月15日
        回复:  你恐怕要自己些微程序了(22字) - rhonda,2006年12月10日
        回复:  恩,如果写一个可以在裸机上访问硬盘的程序,应该从那里着手呢?形式大致如下:mov ax..(424字) - 硕鼠,2006年12月9日
        回复:  有本专门讲解Linux内核源码的书,推荐你看一下。书名忘了,是浙大的一位老师写的..(77字) - flyhigher,2006年12月9日
        回复:  呵呵,Linux就是用C语言写的。(28字) - flyhigher,2006年12月9日

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