摘要:
(1)内存分配未成功,却使用了它。 (2)内存分配虽然成功,但是尚未初始化就引用它。 (3)内存分配成功并且已经初始化,但操作越过了内存的边界。 例如在使用数组时经常发生下标“多1”或者“少1”的操作。特别是在for循环语句中,循环次数很容易搞 错,导致数组操作越界。 (4)忘记了释放内存,造成内存 阅读全文
2021年8月14日
摘要:
1、最佳置换法(OPT) 最佳置换算法(OPT,Optimal) :每次选择淘汰的页面将是以后永不使用,或者在最长时间内不再被访问 的页面,这样可以保证最低的缺页率。 最佳置换算法可以保证最低的缺页率,但实际上,只有在进程执行的过程中才能知道接下来会访问到的 是哪个页面。操作系统无法提前预判页面访问 阅读全文
摘要:
死锁是指两个(多个)线程相互等待对方数据的过程,死锁的产生会导致程序卡死,不解锁程序将永远无法进行下去。 1、死锁产生原因 举个例子:两个线程A和B,两个数据1和2。线程A在执行过程中,首先对资源1加锁,然后再去给资源2 加锁,但是由于线程的切换,导致线程A没能给资源2加锁。线程切换到B后,线程B先 阅读全文
摘要:
从操作系统层面上看,malloc是通过两个系统调用来实现的: brk和mmap brk是将进程数据段(.data)的最高地址指针向高处移动,这一步可以扩大进程在运行时的堆大小 mmap是在进程的虚拟地址空间中寻找一块空闲的虚拟内存,这一步可以获得一块可以操作的堆内存。 通常,分配的内存小于128k时 阅读全文
摘要:
应用数据与静态资源分离 将静态资源(图片,视频,js,css等)单独保存到专门的静态资源服务器中,在客户端访问的时候从 静态资源服务器中返回静态资源,从主服务器中返回应用数据。 客户端缓存 因为效率最高,消耗资源最小的就是纯静态的html页面,所以可以把网站上的页面尽可能用静态的来 实现,在页面过期 阅读全文
摘要:
频繁修改:需要频繁创建和销毁的优先使用多线程 计算量:需要大量计算的优先使用多线程 因为需要消耗大量CPU资源且切换频繁,所以多线程好一 点 相关性:任务间相关性比较强的用多线程,相关性比较弱的用多进程。因为线程之间的数据共享和同 步比较简单。 多分布:可能要扩展到多机分布的用多进程,多核分布的用多 阅读全文
摘要:
阅读全文
摘要:
对于外部碎片,通过紧凑技术消除,就是操作系统不时地对进程进行移动和整理。但是这需要动态重定 位寄存器地支持,且相对费时。紧凑地过程实际上类似于Windows系统中地磁盘整理程序,只不过后者 是对外存空间地紧凑 解决外部内存碎片的问题就是内存交换。 可以把音乐程序占用的那 256MB 内存写到硬盘上, 阅读全文
摘要:
60、为什么分段式存储管理有外部碎片而无内部碎片?为什么固定分区分 配有内部碎片而不会有外部碎片? 分段式分配是按需分配,而固定式分配是固定分配的方式 61、内部碎片与外部碎片 内碎片:分配给某些进程的内存区域中有些部分没用上,常见于固定分配方式 内存总量相同,100M 固定分配,将100M分割成1 阅读全文
摘要:
共享是指系统中的资源可以被多个并发进程共同使用。 有两种共享方式:互斥共享和同时共享。 互斥共享的资源称为临界资源,例如打印机等,在同一时刻只允许一个进程访问,需要用同步机制来实 现互斥访问。 阅读全文
摘要:
1. 交换需要备份存储,通常是快速磁盘,它必须足够大,并且提供对这些内存映像的直接访问。 2. 为了有效使用CPU,需要每个进程的执行时间比交换时间长,而影响交换时间的主要是转移时间,转 移时间与所交换的空间内存成正比。 3. 如果换出进程,比如确保该进程的内存空间成正比。 4. 交换空间通常作为磁 阅读全文
摘要:
处理器使用基于对缓存加锁或总线加锁的方式来实现多处理器之间的原子操作。首先处理器会自动保证 基本的内存操作的原子性。处理器保证从系统内存中读取或者写入一个字节是原子的,意思是当一个处 理器读取一个字节时,其他处理器不能访问这个字节的内存地址。Pentium 6和最新的处理器能自动保证 单处理器对同一 阅读全文
摘要:
ASCII ASCII 只有127个字符,表示英文字母的大小写、数字和一些符号,但由于其他语言用ASCII 编码表示字 节不够,例如:常用中文需要两个字节,且不能和ASCII冲突,中国定制了GB2312编码格式,相同的, 其他国家的语言也有属于自己的编码格式。 Unicode 由于每个国家的语言都有 阅读全文
摘要:
保存在磁盘中,也就是外存中。具有对换功能的操作系统中,通常把磁盘空间分为文件区和对换区两部 分。文件区主要用于存放文件,主要追求存储空间的利用率,因此对文件区空间的管理采用离散分配方 式;对换区空间只占磁盘空间的小部分,被换出的进程数据就存放在对换区。由于对换的速度直接影响到 系统的整体速度,因此对 阅读全文
摘要:
可优先换出阻塞进程;可换出优先级低的进程;为了防止优先级低的进程在被调入内存后很快又被换出, 有的系统还会考虑进程在内存的驻留时间… (注意: PCB 会常驻内存,不会被换出外存) 阅读全文
摘要:
内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都 存在。例如全局变量,static变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这 些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中 阅读全文
摘要:
从两方面来考虑: 分配和释放,堆在分配和释放时都要调用函数(malloc,free),比如分配时会到堆空间去寻找足够大小 的空间(因为多次分配释放后会造成内存碎片),这些都会花费一定的时间,具体可以看看malloc和 free的源代码,函数做了很多额外的工作,而栈却不需要这些。 访问时间,访问堆的一 阅读全文
摘要:
刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为称为 抖动,或颠簸。产生抖动的主要原因是进程频繁访问的页面数目高于可用的物理块数(分配给进程的物 理块不够) 为进程分配的物理块太少,会使进程发生抖动现象。为进程分配的物理块太多,又会降低系统整体的并 发度,降低某 阅读全文