热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

20181113

20181113减少访问磁盘次数的措施既然要减少访问,那最理想的情况就是不访问呗,把所有的数据都丢进缓存中, 将缓存变得大速度变快避免随意访问磁盘,于是就 改良磁盘调度算法以上都是

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)可 以设置阻塞的时间

2018-11-13


推荐阅读
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 本文详细介绍了如何解决DNS服务器配置转发无法解析的问题,包括编辑主配置文件和重启域名服务的具体步骤。 ... [详细]
  • Framework7:构建跨平台移动应用的高效框架
    Framework7 是一个开源免费的框架,适用于开发混合移动应用(原生与HTML混合)或iOS&Android风格的Web应用。此外,它还可以作为原型开发工具,帮助开发者快速创建应用原型。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 解决Win10下MySQL连接问题:Navicat 2003无法连接到本地MySQL服务器(10061)
    本文介绍如何在Windows 10环境下解决Navicat 2003无法连接到本地MySQL服务器的问题,包括启动MySQL服务和检查配置文件的方法。 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • [c++基础]STL
    cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer ... [详细]
  • ZooKeeper 入门指南
    本文将详细介绍ZooKeeper的工作机制、特点、数据结构以及常见的应用场景,包括统一命名服务、统一配置管理、统一集群管理、服务器动态上下线和软负载均衡。 ... [详细]
  • 本文详细介绍了如何利用Duilib界面库开发窗体动画效果,包括基本思路和技术细节。这些方法不仅适用于Duilib,还可以扩展到其他类似的界面开发工具。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 使用Jsoup解析并遍历HTML文档时,该库能够高效地生成一个清晰、规范的解析树,即使源HTML文档存在格式问题。Jsoup具备强大的容错能力,能够处理多种异常情况,如未闭合的标签等,确保解析结果的准确性和完整性。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
author-avatar
明诺新源研_889
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有