• 3.4 目录和spooling


    文件管理部分主要讲文件目录.文件目录它是用于检索文件的.文件目录它是一种文件系统实现按0存取的一种重要手段.一个文件目录它由若干个目录项组成的.每一个目录项它记录了一个文件的相关信息.这个文件信息指明了文件的文件名,文件类型,文件的物理信息,存储的相关的位置,包括建立日期啊相关的一些属性.所以通过对文件的目录项进行分析,就可以得到文件的一些常用的信息.

    文件目录有三种目录结构形式.一级目录有一个很大的问题,就是文件名它不能够同名.因为只有一个目录,一个目录如果有多个用户在使用它,用户有自己的取名的习惯,那么很有可能它就会有文件名相同的.一级目录只有一个目录,那么它就不允许存在文件名同名.所以这种形式的目录结构只适用于单用户的系统.

    第二种是二级目录结构.二级目录结构它分了两级,第一级的就是主文件目录,主文件目录有很多目录项,这个目录项是按用户来分配的.二级目录把每一个用户分配了一个目录,这些目录之间就可以存在同名了.在不同的目录允许有同名的现象.

    windows和doc系统都是使用的是树型目录结构.树型目录结构可以分很多级了.

    在树型的目录结构当中,任何一个文件或者是目录,它的路径表示法有两种:一种表示法是绝对路径表示法.绝对路径表示法是指的从根目录开始,逐级的标出这个路径来.从根目录到每一个目录、每一个文件它都有唯一的一条路径.这一条路径就是绝对路径.当前目录底下我们可以直接访问里面的文件.也就是说有一个相对路径,相对路径它是从当前目录开始写这个目录结构的.相对路径的提出使得这个结构变得简化了.W1/f1是相对路径.

    二级目录讲过在不同的目录底下我们是允许有同样名字的文件的,但是相同目录底下是不允许有同名的.树型目录结构相当于是二级目录的扩充,每一个用户目录它可以根据自己的情况创建任何名字的一个文件.如果用户D2他创建了一个f2文件是用于存储email地址的一个列表,而D1用户他存储的这个f2不是这个含义,他是存的他的重要资料的一个目录.

    方式1采用的是一个相对路径,方式2采用的是一个绝对路径.相对路径和绝对路径它的一个最大区别就是一个必须要从根目录开始一级一级往下找,另外一个就从当前目录往下找就可以了.很明显从当前目录往下面找它要找的这个范围就小了很多.范围小了它的效率也就高了,所以说方式1之所以效率高,是因为它可以从当前路径开始查找所需要的文件.

    C选项提到方式1只需要访问1次磁盘,那么实际情况并不是这样子.前面提过目录项里面是存了一个文件的大致信息,它这些信息包括了它的修改时间、创建时间、作者、文件的性质、文件的扩展名等等等等,还包括一个重要东西:文件的起始地址.所以从这个意义上来讲,存储一个文件是把它拆分成了两个部分,一个是目录项,记录了大致的信息,这个是存放在目录表里面的,目录文件里面的.然后就是具体的文件的内容,是存在另外一块空间的.而根据这个目录项我们就可以找到这块空间.所以要访问/打开这个f1,它就要两次访问这个磁盘.第1次是找到/访问这个目录项,把这个目录项的内容找出来,然后取出它目录项里面记录的文件的真实首地址,就把这个文件全部都读出来.所以它要经历两次读取磁盘.所以C和D都是错误的.


    Spooling技术

    属于设备管理的内容.缓冲的机制.假脱机技术.理解SPOOLING靠技术的含义.

    因为打印机是独占设备,它不能够同时几个人打印.关键问题是我们现在不晓得A要用多久,是1分钟呢还是1个小时呢还是10个小时呢?这样B、C、D要做的工作是隔一会儿就提交一次打印,结果就会发现失败.打印机仅仅会告诉你提交失败,现在有人在用这个资源但是它不会告诉你你什么时候申请能够得到资源.这种状态就比较麻烦了,B、C、D老是在尝试但是老是无法完成它的工作.是不是有一种方案我提交之后我就不管了,打印完之后我去拿就可以了呢?这就是SPOOLING技术的想法了.也就是说它们提交作业A、B、C、D并不是直接提交给打印机,而是提交给虚拟打印机,这个虚拟打印机是缓冲池/输入井,它们提交的内容会一条一条的记录在这个缓冲区当中,然后由缓冲区给打印机派发任务,这样子即使A、B、C、D四个人同时提交打印,也不会发生冲突因为你的信息会暂时放在缓冲区当中,逐个的提交给这个打印机.打印机会逐个的完成这些打印任务.然后A、B、C、D直接隔一段时间去取就可以了.而不要老是反复地去提交而提交又失败.这种形式就被称为SPOOLING技术.

  • 相关阅读:
    centos8 将SSSD配置为使用LDAP并要求TLS身份验证
    Centos8 搭建 kafka2.8 .net5 简单使用kafka
    .net core 3.1 ActionFilter 拦截器 偶然 OnActionExecuting 中HttpContext.Session.Id 为空字符串 的问题
    Springboot根据不同环境加载对应的配置
    VMware Workstation12 安装 Centos8.3
    .net core json配置文件小结
    springboot mybatisplus createtime和updatetime自动填充
    .net core autofac依赖注入简洁版
    .Net Core 使用 redis 存储 session
    .Net Core 接入 RocketMQ
  • 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/7204717.html
Copyright © 2020-2023  润新知