当前位置:  技术问答>linux和unix

unix 设备文件疑问

    来源: 互联网  发布时间:2016-05-25

    本文导语:  很多资料都会如下这样说: unix 将设备看作一个文件, 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的. 例如, read(STDIN, ..) 从键盘读, write(STDOUT,..) 输出到屏幕.. .....  感觉很抽象啊,我想知道到底...

很多资料都会如下这样说: unix 将设备看作一个文件, 输入输出到外部设备的方式和输入输出到一个文件的方式是相同的. 例如, read(STDIN, ..) 从键盘读,
write(STDOUT,..) 输出到屏幕.. ..... 
感觉很抽象啊,我想知道到底是如何与设备通信使设备正常工作的?  例如 STDIN 与 STDOUT , 执行read 与 write的时候, unix 底层都做了些什么呢? 

|
1、通常設備是插在固定的插槽上的,比如主板上,串口,并口上,這樣就完成了物理上的連接

2、物理上的連接以後,設備只是和電腦有關聯了,但是還不能執行特定的操作。這個時候,系統會加載硬件的驅

動程序。因為設備有無數種,系統爲了方便,就定義了一些常用的接口,比如open()是打開設備,read()是讀取

設備的內容,write()是向設備內寫入數據等。這樣,OS內核就為所有的設備提供了一個統一的接口了,主意,這

裡只有接口,沒有行為,也就是說,這些函數的實現是留給硬件的廠商自己來實現的。

3、設備的廠商根據自己的產品來編寫針對自己設備的驅動。比如顯卡的驅動,比如聲卡的驅動。這些驅動會自己

定義open()還是具體要執行啥,read()具體執行啥,write()具體執行啥,這樣系統內核就調用這些函數就行了,

就可以操作聲卡,顯卡了。

4、根據3的方法就能發現,實際上系統內核是不用關心外部的硬件設備是什麽的!它只要提供一系列的接口函數,

然後讓設備的驅動自己去實現,然後由內核調用,就能正常使用設備了。這樣就有了一個優勢了,學名叫“設備

無關性”,接口函數對於所有的設備都是適用的。而open(),write(),read()這樣的操作,就跟傳統的C語言讀

取文件似的,所以在UNIX/LINUX看來,一切的外設都是文件,都可以打開,讀寫等

5、不得不補充一下,上面的只是一個大概的印象而已,其實把設備當成文件還有N多的優勢,比如統一尋址,比

如配置方便等等,這個就要樓主自己深入研究了,設計的知識面比較廣了

|
在Unit底层操作硬件设备时,大部分时候都是操作相关的芯片,比如使用write和read系统调用,需要传递的三个参数代表应用程序需要读写那个设备,要读多少数据出来,操作系统内核接到这个用户请求之后,就使用CPU去操作相关的设备,把相应设备里的数据通过相关的通道(比如系统总线,I2C,I2S之类的传输途径)把相应的数据读到内存里,然后在处理这些数据,处理完之后再通过同样的通道方式,将数据传到相关的芯片上去,芯片将根据数据操作具体硬件.比如键盘,鼠标,显示器等东西.你要完全理解这些东西,需要计算机组成原理和操作系统原理的相关知识.

|

第一个问题:系统启动后,如果设备正常会自动在/dev/下建立设备文件,不正常就不会建立设备文件就不能读,
如果有些字符设备文件是可以强行的建立的,如果没有硬件支持,读出来的也是空的

第二个问题:stdin和stdout这两个是标准输入输出文件,分别对应0,和1好文件,还有2号,stderr都是定死了的

我们知道很多输出输入设备种类很多,而我我们上层只要对这3个文件操作,具体那个设备我们交个给输入输出子系统去划分

|
具体就不清楚了。
反正stdin,stdout,stderr跟其他文件都认为差不多,只是作为0,1,2号文件描述符。
文件调用后,里面的操作,驱动什么的应该是交给内核处理。

|
看看ULK

    
 
 

您可能感兴趣的文章:

  • 关于学习Unix一些疑问?help me!!!
  • 莱昂氏UNIX源码分析的疑问(1)
  • 关于信号量与UNIX信号的疑问
  • 看<<UNIX环境高级编程>>的疑问
  • 《Unix网络编程》的疑问
  • 关于在UNIX中使用消息队列的一点疑问
  • unix/linux中eval语句的一个疑问
  • 入门unix的疑问?
  • 关于unix下的fifo的疑问
  • unix环境高级编程中一个习题的疑问
  • <unix环境变量高级编程第8章> vfork例题的疑问
  • 【error: dereferencing pointer to incomplete type】学unix网络编程,有疑问~~
  • 紧急求救:HP UNIX环境下使用CPPUNIT之疑问
  • 小问题, Unix 如何建立一个文件 ,unix 文件有后缀名吗
  • .zip文件怎样在Unix下解压缩?.tar.tar文件怎样在Unix下解压缩
  • java中使用jxl生成excel文件,在unix中比在windows中明显慢,有高手知道原因吗?或者说unix和windows的文件系统哪个更快?
  • 各位兄弟帮忙,cut-ftp连接hp-unix,连接上了,但是unix上的文件不能显示,还能上传文件
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • 在 WINDOWS 2000 用 TELNET + IP 登录到 UNIX 中,怎样 GET UNIX 中的指定文件?
  • 在unix下如何拷贝文件?在windows下如何访问安装unix系统的硬盘?
  • UNIX怎样处理ASCII文件与文本文件
  • 新学者,各位不要吐血:哪儿有Unix的操作系统安装文件,我没有它的概念,我想学习之。Unix好神秘呀!
  • UNIX下how to 查找所有的文件夹下的文件?
  • 求助批处理实现dos -〉unix文件的转换,要将^M 替换为unix回车
  • unix下文件IO和dos下文件IO有什么区别?
  • 文件名为“apue.tar.Z”的文件在UNIX下怎么打开?大家帮帮忙
  • 谁有办法把一个原来是fat32的文件系统,被格式成为sco unix文件系统还原回来?
  • unix(IBM AIX)下怎么样删除文件名为e:bbbddd.dmp的文件啊?
  • UNIX中相当于WINDOWS中.bat文件的是哪种文件
  • Linix下编译生成的文件可以在本机器运行为什么不能在一Unix机器下运行。另外Unix下为什么没有make命令
  • hp-unix下,我用ftp软件打开hp-unix的时候目录不显示文件,我记得是用ROOT用户设置一下什么init.d什么的,但是忘记了,请知道的朋友指点!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问SCO Unix Open Server5.0.6是否支持即插即用设备?
  • 高分相赠:如何在UNIX的配置文件中,关闭或删除SCSI设备?
  • 请问如何查询Unix主机的硬件设备信息?
  • java命名空间java.util.regex类pattern的类成员方法: unix_lines定义及介绍
  • 刚刚接触Unix系统和Unix编程。急需Unix下多线程程序设计和网络Socket程序设计方面的资料。
  • unix/Linux下c++ boost thread库读写锁介绍
  • 关于UNIX的历史 : 1973年,K.Thompson和D.M.ritchie,用C改写UNIX。那么,在此之前,UNIX是用什么写的?
  • php将标准字符串格式时间转换成unix时间戳_strtotime
  • 没有unix系统我如何学习unix
  • php将unix时间戳转换成字符串时间函数(date)
  • unix盘哪里有下载的??哪里有比较好的unix论坛??万分感谢!!!!!!!!!
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • 急!装完unix5.06,再装win2000。重启后不能进unix.
  • UNIX特急!!!digital unix问题,请专家快来!!!
  • UNIX支持中文否,请推荐UNIX好书
  • SCO UNIX 5.0用软盘启动之后无法启动UNIX
  • 散分!!unix 用户调查!!!你使用哪款unix
  • hp unix 和 sco unix的区别
  • 入门问题,我想向UNIX编程方向发展,单目前不会UNIX,我该如何做
  • 强烈建议将linux/Unix栏目放到“软件开发者”大类里面来。----Unix开发的人助威支持!!!
  • 现在那些unix比较流行?Linux和 Unix有 什么区别?
  • 我想学习Unix,请高手给个下载网址,用linux来学习Unix差别大吗?
  • unix环境高级编程中一个习题的疑问 iis7站长之家
  • 学UNIX从SOC UNIX开始好吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3