File tree Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Original file line number Diff line number Diff line change 1111
1212..  chyyuu 可以简单介绍一下文件的起源???
1313
14- 在UNIX操作系统之前,大多数的操作系统提供了各种复杂且不规则的设计实现来处理各种I/O设备(也可称为I/O资源),如键盘、显示器、以磁盘为代表的存储介质、以串口为代表的通信设备等,使得应用程序开发繁琐且很难统一表示和处理I/O设备。随着UNIX的诞生,一个简洁优雅的I/O设备抽象出现了,这就是 **文件** 。在 UNIX 操作系统中,”**一切皆文件**“ (Everything is a file) 是一种重要的设计思想,这种设计思想继承于 Multics 操作系统的 **通用性** 文件的设计理念,并进行了进一步的简化。在本章中,应用程序访问的 **文件** (File) 就是一系列的字节组合。操作系统管理文件,但操作系统不关心文件内容,只关心如何对文件按字节流进行读写的机制,这就意味着任何程序可以读写任何文件(即字节流),对文件具体内容的解析是应用程序的任务,操作系统对此不做任何干涉。例如,一个Rust编译器可以读取一个C语言源程序并进行编译,操作系统并并不会阻止这样的事情发生 。 
14+ 在UNIX操作系统之前,大多数的操作系统提供了各种复杂且不规则的设计实现来处理各种I/O设备(也可称为I/O资源),如键盘、显示器、以磁盘为代表的存储介质、以串口为代表的通信设备等,使得应用程序开发繁琐且很难统一表示和处理I/O设备。随着UNIX的诞生,一个简洁优雅的I/O设备抽象出现了,这就是 **文件** 。在 UNIX 操作系统中,”**一切皆文件**“ (Everything is a file) 是一种重要的设计思想,这种设计思想继承于 Multics 操作系统的 **通用性** 文件的设计理念,并进行了进一步的简化。在本章中,应用程序访问的 **文件** (File) 就是一系列的字节组合。操作系统管理文件,但操作系统不关心文件内容,只关心如何对文件按字节流进行读写的机制,这就意味着任何程序可以读写任何文件(即字节流),对文件具体内容的解析是应用程序的任务,操作系统对此不做任何干涉。例如,一个Rust编译器可以读取一个C语言源程序并进行编译,操作系统并不会阻止这样的事情发生 。 
1515
1616
1717
242242--------------------------------------------------- 
243243
244244由于有基于文件抽象接口和文件描述符表,之前实现的文件读写系统调用 ``sys_read/write `` 可以直接用于标准输入/输出文件,很好地达到了代码重用的目标。
245- 这样,操作系统通过文件描述符在当前进程的文件描述符表中找到某个文件,无需关心文件具体的类型,只要知道它一定实现了 ``File `` Trait 的 ``read/write `` 方法即可。Trait 对象提供的运行时多态能力会在运行的时候帮助我们定位到符合实际类型的 ``read/write `` 方法,完成不同类型文件各自的读写。
245+ 这样,操作系统通过文件描述符在当前进程的文件描述符表中找到某个文件,无需关心文件具体的类型,只要知道它一定实现了 ``File `` Trait 的 ``read/write `` 方法即可。Trait 对象提供的运行时多态能力会在运行的时候帮助我们定位到符合实际类型的 ``read/write `` 方法,完成不同类型文件各自的读写。
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments