2018-11-13

2018/11/13

减少访问磁盘次数的措施

  • 既然要减少访问,那最理想的情况就是不访问呗,把所有的数据都丢进缓存中, 将缓存变得大速度变快
  • 避免随意访问磁盘,于是就 改良磁盘调度算法
  • 以上都是从调用情况的外部入手,指标也得治本,所以还要从自己的内部入手,将自己的目录管理的整齐,尽量不给人家添麻烦

I/O设备

  • 独享设备:在一个用户作业未完成或退出之前,此设备不能分配给其他作业用。所有字符设备都是独享设备。如输入机、磁带机、打印机等。——很明显:需要装驱动。
  • 共享设备:多个用户作业或多个进程可以“同时”从这些设备上存取信息。软硬盘、光盘等块设备都是共享设备。——无需驱动。
  • 虚拟设备:通过软件技术将独享设备改造成共享设备。例如:通过SPOOLing技术将一台打印机虚拟成多台打印机。——实质还是独享设备,需要驱动。

存根程序 驱动程序

  • 存根程序:用来代替被测试的模块所调用的模块,因此存根程序也称为“虚拟子程序”,它利用被它代替的模块的接口,只做尽可能少的数据操作。
  • 驱动程序:指的是设备驱动程序(Device Driver),是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作
  • 底层模块无需编写存根软件,顶层无需编写驱动软件

设备的分配算法

  • 先请求先服务
  • 优先级高者优先
  • 设备分配方式有静态分配和动态分配两种。

进程制约关系

  • 直接制约关系(即同步问题)
    • 是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作
  • 间接制约关系(即互斥问题)
    • 当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。

CPU现场信息

  • 指令计数器
  • 堆栈的栈顶指针
  • 段表控制寄存器
  • 不属于的:进程的就绪、阻塞、执行等基本状态进程信息保存在PCB中

JCL语言

  • JCL 又称 作业控制语言,是用于描述MVS,OS/390和VSE操作系统上描述作业的语言

FAT表

  • 用来描述文件系统内存储单元的分配状态及文件内容的前后链接关系的表格

FCB

  • 文件控制块:存储文件在磁盘中的相关信息。 为了便于对文件进行控制和管理,在文件系统内部,给每个文件惟一地设置一个文件控制块
  • 这种数据结构通常由下列信息项组成:
    • 文件名——符号文件名,如 files,mydata,ml.c等。
    • 文件类型——指明文件的属性,是普通文件,还是目录文件,特别文件,是系统文件还是用户文件等。
    • 位置——指针,它指向存放该文件的设备和该文件在设备上的位置,如哪台设备的哪些盘块上。
    • 大小——当前文件的大小(以字节、字或块为单位)和允许的最大值。
    • 保护信息——对文件读、写及执行等操作的控制权限标志。
    • 使用计数——表示当前有多少个进程在使用(打开了)该文件。
    • 时间——日期和进程标志,这个信息反映出文件有关创建、最后修改、最后使用等情况,可用于对文件实施保护和监控等。 核心利用这种结构对文件实施各种管理。例如,按名存取文件时,先要找到对应的控制块,验证权限。仅当存取合法时,才能取得存放文件信息的盘块地址

在生产者-消费者问题中,缓冲区是临界资源,在同一时间段只允许一个进程使用它,所以互斥信号量的初始值为1。

客户端-服务器(Client-Server)模式的进程间通信

  • 远程方法调用(Remote Method Invocation)
  • 远程过程调用(Remote Procedure Calls)
  • 套接字编程(Sockets)
  • 消息传递是共享内存的,必须在一个主机。当然不能用于CS模型了

总线传输

  • 猝发(突发)传输:在一个总线周期中,可以传输多个存储地址连续的数据,即一次传输一个地址和一批地址连续的数据
  • 并行传输是在传输中有多个数据位同时在设备之间进行的传输
  • 串行传输是指数据的二进制代码在一条物理信道上以位为单位按时间顺序逐位传输的方式
  • 同步传输是指传输过程由统一的时钟控制

文件分配

  • 对应于文件的物理结构,是指如何为文件分配磁盘块
  • 常用的磁盘空间分配方 法有三种:
    • 顺序分配:顺序分配方法要求每个文件在磁盘上占有一组连续的块。
    • 隐式链接分配:每个文件对应一个磁盘块的链表;磁盘块分布在磁盘的任何地方,除最后一个盘块外,每一个盘块都有指向下一个盘块的指针,这些指针对用户是透明的。
    • 显式链接分配:是指把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中。该表在整个磁盘仅设置一张,每个表项中存放链接指针,即下一个盘块号。 在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的FCB的“物理地址”字段中。由于查找记录的过程是在内存中进行的,因而不仅显著地提高了检索速度,而且大大减少了访问磁盘的次数。由于分配给文件的 所有盘块号都放在该表中,故称该表为文件分配表(File Allocation Table, FAT)。MS-DOS采用的就是这种方式。

线程执行方法

    • yield()暂时交出 cpu 控制权,从 running 状态转为 runnalbe 状态,但是仍有可能被调度
    • sleep()线程指定休眠一段时间
    • wait()在其他线程调用此对象的 notify()或 notifyAll()方法时才能继续执行
    • 线程中 sleep()方法和 yeild()方法的主要区别:
      • sleep()方法会给其他线程运行的机会,而不管其他线程的优先级,因此会给较低优先级的线程运行的机会
        yeild()方法只会给优先级相同的或者比自己高的线程运行的机会.
      • sleep()方法声明抛出 InterruptionException 异常
        yeild()方法没有声明 抛出任何异常.
      • sleep()方法比 yeild()方法具有更高的可移植性.
      • sleep()方法使线程进入阻塞状态
        yeild()方法使线程进入就绪状态.
    • 当前运行的线程可以调用另一个线程的 join()方法,当前运行的线程将转到阻塞状态,直到另一个线程运行结束,它才会恢复运行.
      • join()有两种形式:public void join()和 public void join(long timeout)可 以设置阻塞的时间
posted @ 2018-11-13 10:48  eemjwu_boy  阅读(214)  评论(0编辑  收藏  举报