- 博客(10)
- 资源 (9)
- 收藏
- 关注
原创 线程
现代的操作系统都提供了单个进程包括多个控制线程的特性。线程,有时候称为轻量级进程(lightweight process,LWP),是CPU使用的基本单元;它包含了线程ID,程序计数器,寄存器集合以及堆栈。它与属于同一进程的其他线程共享代码段,数据段和其他的操作系统资源。现代的应用程序通常都是一个具有多线程的独立进程。例如,Chrome浏览器。当我们用它打开一个网页的时候,它是这样工作的,...
2018-10-31 20:57:29 568
原创 优先队列(堆)
优先队列:顾名思义,这个队列中的元素是有优先级的,它和普通的先进先出(FIFO)不一样。我们在很多场合可能都需要用到这种特殊的队列(例如,操作系统的进程调度)。可以看出来,优先队列(priority queue)的核心操作有两个,分别是插入和删除。插入是显而易见的,删除就是找出这个队列中优先级最高的那个元素(可以是最大的,也可是最小的)。一些简单的想法:我们可以采用一个简单的链表来实现,表...
2018-10-29 10:13:27 1233 1
原创 从CPU管理到进程的引入
为什么要管理CPU,这是因为在“上古时代”,CPU是计算机硬件之中最昂贵的资源。因此提高CPU利用率是很有必要的。我们知道只要给CPU的PC一个地址,CPU就能运行起来了,假设在运行一段时间后,需要一些I/O操作,而I/O操作(当年主要是连接打印机等)是很费时间的。这个时候的CPU是闲置的。而实际等着CPU去处理的程序有一大堆,这时候CPU资源是被浪费掉的。因此必须想办法提高CPU利用率。现...
2018-10-27 23:09:11 247
原创 操作系统的系统调用
首先,有一个概念叫做接口。抽象而言的接口是连接两个东西的中间物。接口的好处是屏蔽了连接起来的实际细节。我们只关心接口如何使用。系统调用:操作系统的接口是连接应用软件与操作系统的中间桥梁。接口在程序设计中表现的形式就是:函数。操作系统提供的函数就被称为系统调用(system call)。这里有个标准POSIX(Portable Operating System Interface of UNIX...
2018-10-26 21:21:12 3829
原创 从图灵机到操作系统的启动
1936年,阿兰图灵提出了一种可计算模型——图灵机。图灵机是从模拟人用纸笔计算的过程得到的灵感。图灵设想只存在于想象中的机器由一个控制器、一个读写头和一根无限长的工作带组成的。纸带起着存储的作用;读写头能够读取纸带上的信息,以及将运算结果写进纸带;控制器则负责对搜集到的信息进行处理。图灵机原理图如下:根据这个原理,人类设计了第一台电子计算机——ABC计算机。但是ABC计算机实现的是图灵机,...
2018-10-25 12:45:19 1162 2
原创 伸展树(splay tree)
对于二叉查找树而言,每次操作的最坏时间复杂度是O(N)。(当树退化为链表的时候)。为了解决这个问题,我们给树附加了一个平衡条件。平衡条件限制了任何节点的深度都不能过深。其中一种限制条件是:一颗二叉查找树的左子树和右子树的高度差不能超过1,这个条件限制产生了AVL树。二叉查找树的最坏操作是O(N)。但是这样的操作并不常见。所以累加起来的时间就变得比单次操作时间的最坏情形要重要的多。但是二叉查找树...
2018-10-16 17:02:03 2789 1
原创 AVL树(平衡二叉树)
AVL树这样一棵搜索二叉树,它的左右子树的深度之差不超过1。因此,他是带有条件的搜索二叉树。这个条件保证了AVL树的深度是O(log n).最简单的想法是左右两棵子树保持相同的高度。但是这种条件过于苛刻,难以使用。AVL只要求深度之差不超过1。AVL解决了二叉搜索树带来的不平衡问题。但是要求变成了我们必须在每次操作后进行调整,以使得AVL树保持平衡。另一种较新的方法是放弃平衡条件,允许树有任意的深...
2018-10-15 22:33:18 1523 1
原创 二叉搜索树
二叉搜索树(Binary Search Tree)也叫做二叉排序树或者二叉查找树。顾名思义,它是一种对排序和查找都很有用的特殊二叉树。二叉查找树满足以下性质:(假设二叉查找树中每个节点元素都是不同的,它也可以为空)非空左子树的所有键值小于其根节点的键值; 非空右子树的所有键值大于其根节点的键值; 左,右两棵子树都是二叉搜索树二叉搜索树本质上还是一棵二叉树,只不过对它做了限定,就行队列...
2018-10-14 11:45:59 291
原创 二叉表达式树
表达式树:表达式树的叶节点是操作数,其他节点是操作符。假设所有的运算符都是双目运算符,那么刚好形成一颗二叉树。我们可以通过递归计算左子树和右子树的值,从而得到整个表达式树的值。这就是一颗表达式树,在这棵树中,只有叶节点是操作数,其他节点都是操作符。 我们先来遍历一下这棵树。前序遍历这棵树将会得到这样一个表达式:++a*bc*de;(这样的表达式,我们称之为前缀表达式,操作符位于操作数之前。...
2018-10-13 14:16:44 14151 7
原创 树
树的一些定义和基本性质:一棵树只有唯一的根节点。 子树的个数没有限制,但是它们一定是互不相交的。(一对多的关系,不能是多对多的关系) 1个N节点的树有N-1个边。 节点的度:节点的子树个数(度为0的节点称为叶子节点)。 树的度:树中节点度最大的值。 m棵树(一个森林)一共有k条边,那么该森林一共有m+k个节点。(假设每棵树有Ki条边,那么k1+k2+...+km = k。并且每棵树有...
2018-10-12 12:02:48 314
单片机开发USB转串口CH340驱动
2018-05-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人