`
lovnet
  • 浏览: 6714826 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

文件管理原理简介

 
阅读更多

我们知道操作系统做的最重要的几件事就是管理CPU,内存,硬盘,IO设备了啊.而文件就是保存在硬盘上,所有文件管理大部分时候实际上也是研究怎么管理硬盘.所有文件在硬盘上保存都是一样的,一串0101,没一点区别.只有我们读取文件中的信息做不同的处理时才看出不一样的东西.

文件管理系统和数据库管理系统

实际上两者的基本思想差不多的.我们知道在数据库中最常用的操作先是create table,然后去select , insert ,update, delete.假如我们没有网络的话.我们在电脑上做的最多的操作也差不多就是创建文件,相当于创建table,然后搜索文件,往文件里添加内容(insert),更新文件中的内容(update),删除文件.可能读取文件数据这一块就比较有趣一点,比如不同的文件经过不同的应用程序做相应的处理就呈现丰富多彩的东西.比如读取电影文件时,播放器给你显示出画面,并通过音箱发出声音来.

由于操作的文件管理是真正与硬盘打交道,而数据库是先通过操作系统与硬盘打交道.所以实际上数据库上所有的操作最终还是会转化成文件系统的操作.当然也不完全一一对应.因为数据库会先把很多数据加载到内存中,然后做些复杂的处理.然后过段时间往硬盘读写数据,比如要找的数据不在内存,或者内存快满了之类的情况下啊.数据库中的所有信息最终是保存在硬盘上一个个文件.比如Oracle里那些表中所有的内容都保存在一个个的后缀为DBF的文件中,还一些日志文件保存在log文件中

另外数据库中会有非常多的权限管理,Oracle中的权限操作就有几百种.操作系统也有文件的权限管理.只不过比较简单没那么复杂,一般整个啥读写权限就差不多了.

实际上操作系统管理硬盘时也会把很多关于硬盘的信息在开机启动时先加载到内存.比如硬盘用了多少空间,还剩下多少空间这些信息啊.

硬盘与内存

硬盘和内存都叫存储器.都是用来存储东西的.只不过的制作材料有点不一样.也有一些区别.硬盘能永久保存,内存只能临时保存信息.一断就没了.我们编程时有时会自己申请一块在内存空间,然后用个指针指向那,通过指针去读取数据.实际上在硬盘上也差不多,我们创建一个文件或者拷贝过来一个文件的话还相当于去申请一块硬盘空间,内存空间比较小,都按字节为单位去用,你一次可能也就申请几个字节,几十个字节就差不多了,而硬盘比较大.一般以多少K(几千字节啊)为基本单位,你一次可能申请几十M,甚至几个G都有可能.内存中的指针具体怎么实现的可能凭我们经验直觉貌似不容易想通.但硬盘上的指针真的就是名副其实的指针了啊,像指南针一样看得见,摸得着,只不过比较小.而且我们一般叫它磁头.当你把文件保存到硬盘上后,操作系统会给你记录下文件的位置.你读取时硬盘就用磁头给你转到指定的地方然后读取数据到内存中.硬盘上的数据只有到了内存中,再被应用程序处理下才是有用的信息.

内存或硬盘要申请空间那肯定得先有操作系统去管理这方面的信息,看哪些地方还有空地方.然后给你用分配.如果没有足够的空间就会报错的.而内存中你用完了一块申请的内存就会delete掉,不然就内存泄露了啊.硬盘的话你也会经常删除文件.实际上不管是内存还是硬盘,你删除并没有直的删了.你只是通知操作系统那块内存或硬盘不需要了.系统就把它标志为空,并把你的引用信息去掉,你再也查看不到它了.然后如果有其他人申请空间的话系统就可能分配给别人.别人再覆盖里面的信息.但没分配给别人之前里面的信息还仍然在的.这就是为什么有所谓的磁盘还原技术.就是你把文件删了,连回收站里的也删了还有可能找回来.只要你信息所在的硬盘那一块暂时还没被别人覆盖掉.当然要还原自然还会涉及到很多技术,不会简单的拷回来就行的.具体操作原理我也不太懂.

IO设备与文件

有些操作系统把一些IO设备也当作文件一样去处理,比如打字机啊.你直接往它里面写东西,就像往文件里写一样.写了之后怎么处理你不不管了.有驱动程序去处理.而输入设备如键盘,我们就把它当作一个文件就读数据,你敲进去的东东就被读取到内存中了啊.

Linux与windows

我们大部分人都用windows比较多,而像linux,Unix,Apple之类的操作系统听是偶尔听说,没怎么用过.我们对自己不熟悉的的事物总是有一种神秘感.于是觉得啥Linux应该是个很神秘的东东.用起来应该很难的.实际上你想想操作系统做的事都差不多,还不就是管理CPU,内存,硬盘之类的.使你们更方便的用电脑.你的电脑能装下windows也能装上linux,当然貌似有些操作系统会存在硬件的一些谦容问题了.只不过不同的操作系统采取一些算法和方式有点不一样.不过其实这些都封装起来了,我们用户不关心.很多时候我们只关心怎么去用.

windows流行的最重要的一个原因就是UI界面友好,易用.不过Linux等一些操作系统也同样有图形操作界面.其实按道理来说所有操作系统都能给你提供一样的图形界面,使你用起来完全感觉不到到底是用哪一种操作系统了.就跟你的电脑硬件一样,都是封装起来了.你用不同的硬件你会觉得不一样吗?你看到的只是用户图形界面.内部硬件和操作系统背后的原理你都不知道,一般情况也不用知道.

那为啥不把所有操作系统的界面都统一了,都整成一样呢?这里基本上不存在啥太多的技术原因.实现起来不困难的.主要还是商业原因.假如你Linux把界面做成跟windows一样的了,然后拿去卖钱.人家微软肯定跟你打官司了.另外还有就是应用程序兼容的问题.因为用windows的人多,大部分开发软件的人也是首选支持windows.人多就有钱赚嘛.很多软件都不能运行在linux上.

操作系统只是提供一些基本的功能,提供一个支撑平台.我们大部分时候是想用各种各样五花八门的应用软件.所以哪种操作系统上能跑的软件多用户就喜欢用哪个啊.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics