摘要: 一、设备分配的策略为了使系统能够安全高效地工作,系统在进行设备分配时应考虑的因素有:⑴设备的固有属性;⑵设备的分配算法;⑶设备分配的安全性。1.根据设备的固有属性而采取的策略在分配设备时,首先应考虑设备的属性。根据设备的固有属性采取以下三种策略:(1)独享方式独享方式是指将一个设备分配给某进程后,便一直由它独占,直至该进程完成或释放该设备为止,系统才能将该设备分配给其它进程使用。这种分配方式是对独占设备采用的分配策略。它不仅往往造成设备利用率低,而且还会引起系统死锁。(2)共享方式共享方式是指将共享设备(磁盘)同时分配给多个进程使用。但是这些进程对设备的访问需进行合理的调度。(3)虚拟方式虚拟 阅读全文
posted @ 2012-10-25 19:10 我不是geek 阅读(5353) 评论(0) 推荐(0) 编辑
摘要: 一、学习IO控制方式之前首先学习IO系统结构组成。1.大、中、小型计算机的硬件组织 小型到大型的计算机系统多由中央处理机(CPU)、输入输出处理机(又称通道)、存储器和输入输出设备组成,图1-1是一个典型中型计算机(IBM370)的硬件组织,这类计算机以存储器为中心,CPU和各种通道都与存储器相连,CPU执行的程序和数据都存放在存储器中并从存储器中取来执行。CPU需要与输入输出设备交换数据时,不能直接从输入输出设备中取(或存)数据,它必须命令通道来负责进行管理和控制数据输入输出,把数据输入到存储器或从存储器输出。2.微型计算机的典型组织 微型计算机是以总线为纽带来构成计算机系统,中央处理机.. 阅读全文
posted @ 2012-10-25 17:20 我不是geek 阅读(9846) 评论(1) 推荐(2) 编辑
摘要: 一、设备的分类1、按照设备传输速率分类(1)低速设备:传输速率在几字节到几百字节的设备,如鼠标、键盘灯输入输出设备。(2)中速设备:指传输速率在每秒钟数千个字节至数十千个字节的设备。典型的设备有行式打印机、激光打印机等(3)高速设备:指传输速率在数百千个字节至数兆字节的设备。典型的设备有磁带机、磁盘机、光盘机等存储设备。2、按功能分类(1)输入输出设备:键盘、鼠标、显示器、打印机等设备,主要的任务就是输入或者输出。(2)存储设备:磁带机、磁盘、光盘机,他们同时是输入输出设备,但是主要的功能是进行存储。3、按数据传输的单位分类(1)块设备(Block Device):指以数据块为单位来组织和传送 阅读全文
posted @ 2012-10-25 14:40 我不是geek 阅读(2861) 评论(1) 推荐(1) 编辑
摘要: 设备管理一般指的是计算机外部设备,主要功能有设备分配、设备映射、设备驱动、I\O缓冲区的管理等。设备分配:用户进程不能直接使用设备,必须通过操作系统的分配和调度完成对设备的操作。操作系统对提出申请使用设备的进程使用分配算法,按照一定的策略为用户分配设备,并且记录设备的使用情况。设备映射:操作系统要求程序中对设备的引用不能通过物理名称指定,这样做是为了提高应用软件对设备的适应性。应用软件不应该知道将会使用到的具体哪一台设备,由操作系统调度。因此,设备的名称有了逻辑名称和物理名称,逻辑名称是在程序中使用的,每一类设备使用统一的命名规则,物理名称则是实际用户可见的设备。操作系统必须完成从逻辑名称到物 阅读全文
posted @ 2012-10-19 17:23 我不是geek 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 因为很多编译器在编译程序的过程是对程序进行优化,将程序中的变量值存储在缓存中以提高运行效率,这就可能出现这样的情况,用的到变量值不是最新的,而是已经存在在缓存中的值,这样就可能出现莫名其妙的错误,所以对一些易变的变量,加上violate 修饰,编译器在编译过程中就不会对读写这个变量就不会进行优化比如两个线程在运行中。第一个线程已经初始化,将变量a载入了缓存后,这时候第二个线程改变了a的值。如果a没有用volatile修饰的话,那么可能在第一个线程中使用a时,还是使用的缓存中没有改变过的值。(这只是一个可能性,因为多线程的运行谁都不能保证结果是什么,这是与不同的系统有关的)。如果使用了volat 阅读全文
posted @ 2012-10-19 15:04 我不是geek 阅读(719) 评论(0) 推荐(0) 编辑
摘要: 在imperfect c++里,书里是这样解释POD的:1、 所有标量类型(基本类型和指针类型)、POD结构类型、POD联合类型、以及这几种类型的数组、const/volatile修饰的版本都是POD类型。2、 POD结构/联合类型:一个聚合体(包括class),它的非static成员都不是pointer to class member、 pointer to class member function、非POD结构、非POD联合,以及这些类型的数组、引用、const/ volatile修饰的版本; 并且,此聚合体不能有用户自定义的构造函数、析构函数、拷贝构造函数.POD结构(P... 阅读全文
posted @ 2012-10-18 21:44 我不是geek 阅读(25107) 评论(1) 推荐(1) 编辑
摘要: STL全称为标准模板库,它是一套程序库,是一个框架,是一个架构,不仅仅提供了大量的数据结构和算法,还带给我们一个高层次的、以泛型编程为基础的、系统化的、组件化设计的方法。STL是基于泛型编程架设起来的概念结构,它分成几个大部分,每个部分之间由接口、迭代器或适配器连接起来,形成了一个完整的架构。STL提供了六大组件:容器、迭代器、算法、仿函数、配接器(适配器)、配置器。其中容器、算法和迭代器主要用于应用,仿函数和适配器主要用于连接和算法的策略,配置器主要为容器进行内存管理。容器是各种数据结构,比如vector、list、deque、set、map、hash等。算法是一些函数模板用于容器,比如排序 阅读全文
posted @ 2012-10-17 21:47 我不是geek 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 在将页面算法置换算法之前,首先需要了解系统如何分配给每个进程内存空间,即为每个进程分配多少个页框驻留进程。分配到的页框称为驻留集。有两种方法:固定驻留策略和动态驻留策略。固定驻留策略指为每个进程分配固定的页框数,不能增减,也不能使用别的进程的空间动态驻留策略指在进程活跃期间,系统可以根据进程的缺页率进行动态调整,进程的页框数可以增减。这样就有两个问题:页框置换的范围,如何选择置换出内存的页框。页框置换有局部置换和全局置换,局部置换仅限于本进程的空间中,全局置换则允许置换别的进程中的页框。固定驻留策略必然导致局部置换,而全局置换必须使用动态驻留策略。第一个问题解决,第二个问题则涉及到置换算法,坏 阅读全文
posted @ 2012-10-16 22:25 我不是geek 阅读(6083) 评论(0) 推荐(1) 编辑
摘要: 内存存储管理技术分为简单存储管理技术和虚拟存储管理技术,区别在于简单存储管理技术一次性的将进程的程序和数据装入内存,而虚拟存储管理技术则允许一部分程序和数据装入内存开始执行。从内存分配的连续性上,存储管理技术又分为连续存储和非连续存储,其中非连续存储分为分页存储、分段存储和段页式存储。连续存储则是上几次内存管理学习内容中的主角,这里不再详细介绍。连续存储首先介绍连续存储中的越界保护问题,在连续存储系统中,将会为每个进程都分配两个寄存器来存储进程内存空间的基址和大小,分别为基址寄存器和界限寄存器。进程在装入内存后将自己所分配到的基址和尾址存放在pcb中,等待cpu调用时将这两个值放入寄存器中。当 阅读全文
posted @ 2012-10-16 21:55 我不是geek 阅读(915) 评论(0) 推荐(0) 编辑
摘要: 程序执行的过程经历几个阶段:编译---链接---装入内存模块---执行阶段。源程序经过编译后成为目标文件模块,在经过链接库文件等后变成可执行文件。链接的方式有两种:静态链接和动态链接。静态链接指在执行前将所有的目标模块都链接到可执行文件中等待装入执行。动态链接分为装入时动态链接和执行时动态链接。动态链接允许程序不必形成完整的可执行文件,而是生成一个未完成链接的外部模块,等待装入。装入时动态链接指在装入时遇到外部模块连接查找相应的目标模块装入内存,这种方法仍然要将所有的链接模块都装入内存,知识将链接推迟到了装入时。执行时动态链接指在执行时遇到链接部分查找相应的模块装入内存,木有用处的模块将不会装 阅读全文
posted @ 2012-10-15 21:58 我不是geek 阅读(483) 评论(0) 推荐(0) 编辑