11 2012 档案
摘要:线程操作主要用到Thread类,他是定义在System.Threading.dll下。使用时需要添加这一个引用。该类提供给我们四个重载的构造函数(以下引自msdn)。Thread(ParameterizedThreadStart)初始化Thread类的新实例,指定允许对象在线程启动时传递给线程的委托。Thread(ThreadStart)初始化Thread类的新实例。由.NETCompactFramework支持。Thread(ParameterizedThreadStart,Int32)初始化Thread类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈大小。Thre
阅读全文
摘要:有时候写的.NET程序需要加载动态链接库文件,或者我们写的动态链接库文件需要被像AutoCAD、MATLB等程序加载,通常简单的加载没有任何问题,只是,有时候可能需要使用到dll文件夹下其他一些资源或者另外的链接库,这个时候获取动态链接库文件所在的文件夹路径就显得比较重要了,传统的一些方法(如下)并不能凑效:Application.StartupPathApplication.ExecutablePathAppDomain.CurrentDomain.BaseDirectorySystem.Threading.Thread.GetDomain().BaseDirectoryEnvironmen
阅读全文
摘要:影响文件安全性的主要因素,第一是人为因素,即由于人们有意或无意的行为,而使文件系统中的数据遭到破坏或丢失;第二是系统因素,即由于系统的某部分出现异常情况,而造成对数据的破坏或丢失,特别是作为数据存储介质的磁盘,在出现故障或损坏时,会对文件系统的安全性造成影响;第三是自然因素,即存放在磁盘上的数据,随着时间的推移将可能发生溢出或逐渐消失。为了确保文件系统的安全性,可针对上述原因而采取以下措施:(1)通过存取控制机制来防止由人为因素所造成的文件不安全性。(2)通过磁盘容错技术,来防止由磁盘部分的故障所造成的文件不安全性。(见4.5.5独立磁盘冗余阵列(RAID)技术)(3)通过“后备系统”来防止由
阅读全文
摘要:磁盘的逻辑组织一个物理磁盘在逻辑上可分为几个区域,分区信息存放在主引导块分区表中。分区表中保存磁盘各种分区起始和终止的磁头、柱面、扇区、总的扇区数等信息。在主引导块中有三种类型分区:主分区、扩展区和逻辑分区。主分区是常用的,加载一个操作系统所需文件安装其上,操作系统必须从主分区上引导,一个硬盘上只能有四个主分区。为了突破四个分区的限制,就要在四个分区中创建立一个扩展分区。扩展分区其实是一个逻辑盘,它不能格式化,也不能分配盘符。但可在扩展分区中创建一个或多个逻辑分区,或称逻辑驱动器、卷(volume)。每个逻辑分区分配一个盘符,可以格式化成一个特定的文件系统。为了实现存储空间的分配和回收,系统应
阅读全文
摘要:上篇说到文件内部的逻辑结构和物理结构,而如何在系统中实现按文件名存取文件是非常重要的,也就是如何实现文件名到物理存储地址的转换。为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为文件控制块FCB,文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。文件控制块FCB中包含的信息有以下三类:1. 基本信息类文件名:标识一个文件的符号名,在每个系统中文件必须具有唯一的名字。. 文件的物理地址:这由于文件的物理结构不同而不同。对于连续文件就是文件的起始块号和文件总块数;对于MS-DOS是文件的起始
阅读全文
摘要:计算机系统对系统中软件资源:无论是程序或数据、系统软件或应用软件都以文件方式来管理。文件是存贮在某种介质上的(如磁盘、磁带等)并具有文件名的而且在逻辑上具有完整意义的一组有序信息的集合。文件系统就是操作系统中实现对文件的组织、管理和存取的系统程序,或则说文件系统是管理软件资源的软件,文件系统是用户和外存的接口。文件系统的功能有:(1)实现文件按文件名存取,实现从文件名到物理存储地址的转换(2)管理文件存储空间的分配和回收(3)实现文件的基础操作:新建、删除、修改等操作(4)实现文件共享和安全性(5)实现文件目录的管理(6)向用户提供文件系统的接口------------------------
阅读全文
摘要:伪函数或者函数对象只是翻译的问题,英文全部都是functor,还有些读物管这个叫函数符。functor作为C++ STL六大基本组件之一被广泛使用(其他五个分别是容器、演算法、迭代器、适配器、分配器),那么,functor的意义在哪里?或者说它有什么作用?这项技术从概念上不难理解,伪函数也好,函数对象也好,都说明了它不是真正的函数,而是一种类似函数作用的东西,在STL里,我们经常需要对容器内元素进行批量操作,手写循环确实是个方法,但是,代码冗余,而且效率普遍偏低,这就需要一个批量操作方法,能够对容器内的元素进行批量操作,那么,怎么操作,操作什么,这就需要用户去定义了,你需要告诉程序,你想要什么
阅读全文
摘要:C++指向函数的指针定义方式为:返回类型 (*指针名)(函数参数列表),例如 void (*p)(int)是指向一个返回值为void 参数为int类型的函数。而若想定义一个指向类成员函数的函数指针该怎么定义呢?对成员函数指针的使用。(1)非静态成员函数定义方式:返回类型 (类名::*指针名)(函数参数列表)例如void (A::*p)(int)是一个指向A类中成员函数的函数指针。赋值方式:p=&A::函数名,而一般的函数指针的赋值是p=函数名即可,注意区别。(成员函数必须是public类型的)调用方式:成员函数指针的调用必须通过类对象进行调用,a.*p(int)即可调用成员函数(该成员
阅读全文
摘要:磁盘高速缓存:在磁盘和cpu之间插入一个更快和更小的存储单元,作用是减小对磁盘的平均存取时间,称为磁盘高速缓存(disk cache)。主要是在内存中开辟一块区域为磁盘扇区缓冲区,这个缓冲区包含了磁盘一部分数据的副本,当I\O请求磁盘时,首先检查缓冲区中是否存在该扇区,如果有则直接对cache操作,否则被请求的扇区首先被写进cache中。缓冲区的替换策略:最近最少使用算法,cache中没有被使用最长的扇区将被替换。磁盘高速缓存数据的安全性:读数据没有问题,因为数据在磁盘中还有备份,而写数据则可能出现问题,数据未能及时写进磁盘,而cpu认为数据已经写入磁盘。因此,操作系统必须在合适的时间将数据从
阅读全文
摘要:磁盘管理包括磁盘调度算法、磁盘高速缓存、RAID技术。首先学习磁盘的结构如图所示:磁盘由多个盘片组成,每个盘片有两个盘面,每个盘片都有两个磁头,统一由磁头臂控制。盘片上的存储区域被分为磁道,每个磁道上又分多个扇区。如图,每个扇区的大小事512字节,所以扇区也是数据存储和传输的基本单位。按磁头的工作方式,可以分为活动头磁盘和固定头磁盘。1.活动头磁盘活动头磁盘一个盘面上仅配有一个磁头,所有磁头都安装在一个传动臂上,在访问盘面上的磁道时,传动臂在步进电机的控制下,可在整个盘面上从外向内,或从内向外移动,这称为寻道。活动头磁盘只能进行串行读/写,导致I/O速度较馒,但是由于结构简单,仍广泛用于中、小
阅读全文
摘要:在操作系统中,引入缓冲的主要原因,可归结为以下几点:1.改善CPU与I/O设备间速度不匹配的矛盾。例如一个程序,它时而进行长时间的计算而没有输出,时而又阵发性把输出送到打印机。由于打印机的速度跟不上CPU,而使得CPU长时间的等待。如果设置了缓冲区,程序输出的数据先送到缓冲区暂存,然后由打印机慢慢地输出。这时,CPU不必等待,可以继续执行程序。实现了CPU与I/O设备之间的并行工作。事实上,凡在数据的到达速率与其离去速率不同的地方,都可设置缓冲,以缓和它们之间速度不匹配的矛盾。众所周知,通常的程序都是时而计算,时而输出的。2.可以减少对 CPU的中断频率,放宽对中断响应时间的限制。如果I/O操
阅读全文
摘要:虚函数表对C++了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。这里我们着重看一下这张虚函数表。C++的编译器应该是保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证取到虚函数表的有最高的性能——如果有多层继承或
阅读全文
浙公网安备 33010602011771号