摘要: 操作系统将内存按照页的进行管理,在需要的时候才把进程相应的部分调入内存。当产生缺页中断时,需要选择一个页面写入。如果要换出的页面在内存中被修改过,变成了“脏”页面,那就需要先写会到磁盘。页面置换算法,就是要选出最合适的一个页面,使得置换的效率最高。页面置换算法有很多,简单介绍几个,重点介绍比较重要的 阅读全文
posted @ 2017-11-21 22:29 luStar 阅读(22091) 评论(0) 推荐(2) 编辑
摘要: Python中,最常用的数据结构就是序列了。序列有以下几种:元组,列表,字符串等。注:代码都是在IDE中编辑的,没有用交互式环境。 一、元组(tuple) 元组其实有点类似C++中的数组,即一旦指定了内容,那么这个元组就固定下来不能变了。不过并不是绝对不能改变,如果一个元组成员是一个列表,那么这个列 阅读全文
posted @ 2017-11-20 15:54 luStar 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 一、存储器抽象:地址空间 现代计算机采用多道程序设计,系统中同时运行了多个进程。要保证多个程序同时在内存中并且互不影响,就需要解决两个问题:保护和重定位。 地址空间:一个进程可以用来寻址内存的一套地址集合。 每个进程都有自己的一个地址空间,并且这个地址空间独立于其他进程的地址空间。有了地址空间,一个 阅读全文
posted @ 2017-11-15 20:45 luStar 阅读(469) 评论(0) 推荐(0) 编辑
摘要: Python中的字典与C++中的map非常类似,即按照Key-value的模式进行存储,不过功能更加强大。 一、字典的创建 字典创建可以用大括号来直接进行,也可以对其他序列用dict()函数来进行: 二、字典的基本操作 字典有一些类似于序列的操作,也有一些不同之处。于C++中的map<type>类似 阅读全文
posted @ 2017-11-07 22:26 luStar 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 首先,Shell是发明这个算法的人名,不是这个算法的思想或者特点。 希尔排序,也称为增量递减排序。基本思路,是把原来的序列,等效视为一个矩阵的形式。矩阵的列数,也称为宽度或者增量,记为w。 假设数组A[n]以及矩阵B[][],对于两者的对应关系,可以记为A[k]=B[k/w][k%w]。也就是说,A 阅读全文
posted @ 2017-11-03 20:35 luStar 阅读(4054) 评论(0) 推荐(0) 编辑
摘要: 对于多道程序设计的系统,就会有多个进程或者线程在同时竞争CPU。对于单核系统,调度问题,就是选择下一个要运行的进程或者线程是哪一个。 线程的调度与进程类似,对于按内核级别的调度,与线程所属的进程基本没有关系。 进程切换的代价是比较大的,包括用户态到内核态的切换、保存当前进程的状态、内存映像的改变、调 阅读全文
posted @ 2017-10-23 12:31 luStar 阅读(8701) 评论(0) 推荐(2) 编辑
摘要: 在有了进程和线程的模型之后,一个很大的问题就摆在眼前:进程和线程的执行顺序是不可预知的,那么,如何使得两个进程按照我们想要的顺序执行,从而得出正确的结果呢? 竞争条件:两个或者多个进程读写某些共享数据,最后的结果依赖于进程运行的精确时序。 临界区:把对共享内存进行访问的程序片段称作临界区。如果能使两 阅读全文
posted @ 2017-10-18 21:21 luStar 阅读(6658) 评论(0) 推荐(1) 编辑
摘要: 进程可以说是操作系统最为核心的一个抽象,而线程可以认为是一种轻量级的进程,或者说一个进程内的多个迷你进程。 一、进程的模型 进程(process):进程是一个正在运行的程序的实例。对于一个单核的处理器,每个时刻只能运行一个程序,但在每一个时间段,它可能运行多个进程,这样就产生了并行的错觉。 从概念上 阅读全文
posted @ 2017-10-10 22:29 luStar 阅读(2162) 评论(0) 推荐(1) 编辑
摘要: C++中,动态内存可以用new来实现,即在堆上申请空间,并需要显示释放这块动态内存。当然,也可以用智能指针来实现。 new有一个缺陷,就是把内存分配和对象构造结合在了一起。对于单个对象,这是很方便的,然而对于大块的内存时,可能需要先申请空间,然后陆续执行构造,此时需要将内存分配和对象构造分离开来。a 阅读全文
posted @ 2017-09-27 11:51 luStar 阅读(1363) 评论(0) 推荐(0) 编辑
摘要: C++11 引入了lambda表达式,这个特性的最普遍应用,就是配合泛型算法。 泛型算法,采用了迭代器操作,从而使得各种不同的容器能使用一套算法。泛型算法允许我们定制自己的操作,即传递一个可调用对象,lambda其实也是一个可调用对象。下面先介绍下lambda表达式的基本结构和特性,最后再深入探索l 阅读全文
posted @ 2017-09-16 16:07 luStar 阅读(6423) 评论(0) 推荐(0) 编辑