摘要:
内存的划分分为静态划分和动态划分。都是连续内存存储技术,而非连续内存存储技术有分页、页段式分段。静态划分预先将物理内存划分为固定分区,当新进程装进内存,选择合适的空闲分区分配给进程。又称为固定分区法,分区的长度可以不同。管理分区使用分区使用表,表项的内容是分区编号(线性的)、分区大小、分区使用情况。按照分区大小从小到大方式排列。一种特殊的固定分区法:分页式划分。将内存划分为很小的页框,其中页框远小于上述的分区。两者的区别是:固定分区要求进程存进连续的内存空间,而分页式划分允许进程可以不连续存储在不同的页框。页框的管理使用空闲页框表,将连续空闲的页框集中管理。静态划分的缺点是会产生大量的内零头, 阅读全文
摘要:
操作系统的存储管理包含内存管理和外存管理,外存管理涉及到外设管理,因此这里主要讲内存管理。从所周知,cpu直接从内存中读取置零和数据,而不会与外存进行交互,因此存储在外存的程序和数据(可执行文件)必须装入内存才能够执行,这就是冯.诺依曼存储思想。但是在多道程序操作系统中或者是存在大进程的情况下,物理内存不一定够用,为了扩展内存就发明了虚拟存储技术等扩展技术,将程序的一部存在外存上,等到使用时调入内存即可。扩展技术有覆盖、交换和虚拟存储技术。问题1:多道程序操作系统中,程序的装入时一次性还是先装入一部分然后边执行边装入?若一次行装入内存不足,若边执行边装入效率低下。答1:现在系统多采用虚拟存储管 阅读全文
摘要:
一、分别编译与链接(Linking)大多数高级语言都支持分别编译,程序员可以显式地把程序划分为独立的模块或文件,然后每个独立部分分别编译。在编译之后,由链接器把这些独立的片段(称为编译单元)“粘接到一起”。(想想这样做有什么好处?)在C/C++中,这些独立的编译单元包括obj文件(一般的源程序编译而成)、lib文件(静态链接的函数库)、dll文件(动态链接的函数库)等。静态链接方式:在程序执行之前完成所有的组装工作,生成一个可执行的目标文件(EXE文件)。动态链接方式:在程序已经为了执行被装入内存之后完成链接工作,并且在内存中一般只保留该编译单元的一份拷贝。二、静态链接库与动态链接库先来阐述一 阅读全文