- 博客(90)
- 资源 (6)
- 收藏
- 关注
原创 I/O接口
数据缓冲寄存器DBR暂存即将输入输出的数据主机和外设的速度匹配状态/控制寄存器命令字:CPU对设备发出的具体命令状态字:设备的状态信息,供CPU检查串-并转换机构数据格式的转换I/O控制逻辑根据命令字向设备发出控制信号地址译码逻辑将地址信号映射到指定I/O端口。
2022-09-28 20:47:10
295
1
原创 机器指令和微指令的关系
微程序是由若干条微指令构成的,一个微指令我们称一个微周期,等于比如取指周期,间址周期,执行周期,中断周期。总之,一条机器指令所完成的操作划分成若干条微指令来完成,由微指令进行解释和执行。只有在微程序控制器中,才有微命令的概念,硬布线控制器最小单位就是微操作。一条机器指令对应一个微程序,他们是一一对应关系。一个程序是由多条机器指令组成。
2022-09-24 14:23:13
4334
原创 认识计算机性能指标
cpu性能指标高电平1代表1个数字脉冲低电平0也代表1个数字脉冲1个cpu时钟周期 = 1个数字脉冲信号(通常单位微秒、纳秒)cpu主频(时钟频率) = 1/cpu时钟周期cpi(clock cycle per instruction): 执行1条指令需要几个时钟周期...
2022-05-09 15:21:21
767
原创 Mysql存储过程和函数
存储过程和函数Mysql从5.0 版本开始支持存储过程简单说,存储过程就是一条或多条的sql语句集合,我们可以简单看成是批文件处理优点封装我们sql语句,可以支持复杂的sql语句提高我们sql表的安全性,比如一些敏感的字段,可以设置访问权限可以减少磁盘访问次数,提高查询效率存储过程和函数区别本质上都是存储程序函数只能通过return 返回单个值或者表对象存储过程不允许return 只能通过out参数返回值函数不能使用临时表,只能使用表变量,一些函数也不可以用,存储过程可以函数可
2022-04-18 18:29:25
852
原创 having关键字和where关键字区别
select语句的基本格式select {*|字段列表} from 表 where 表达式 group by 字段 having 表达式 order by 字段;having关键字和where关键字区别相同点:都是用来过滤数据不同点:having是搭配group by 使用, 是针对分组数据过滤, where是再分组之前用来选择数据where优先级比having高, 过滤掉的数据不再包括在分组中, having也就无须过滤这部分记录...
2022-04-11 17:39:10
1139
1
原创 mysql常用函数实例
mysql常用函数实例mysql> select 18 / 5 , 18 % 5;+--------+--------+| 18 / 5 | 18 % 5 |+--------+--------+| 3.6000 | 3 |+--------+--------+1 row in set (0.00 sec)mysql> select degrees(pi()/4);+-----------------+| degrees(pi()/4) |+----------
2022-04-11 14:04:37
924
原创 数据表的基本操作(实例)
数据表的基本操作12个步骤# 步骤一:创建数据库 companymysql> create database company;Query OK, 1 row affected (0.00 sec)mysql> use companyDatabase changedmysql> show tables;Empty set (0.00 sec)# 步骤二:创建数据表 officesmysql> drop table if exists offices;Quer
2022-04-01 20:50:45
493
原创 C#第八章属性和方法
第8章 属性和方法8.1 属性8.1.1 属性描述属性不能作为ref参数或out参数传递8.1.2 属性的使用对象名.属性名8.2 方法8.2.1 方法的声明声明时需要制定访问级别、返回值、方法名称及方法参数8.2.2 方法的参数类型params参数ref参数out参数8.2.3 方法的分类静态方法非静态方法8.2.4 方法的重载8.2.5 Main方法main 方法 默认访问级别是privatemain方法是程序的入口点,程序控制在该方法中开始和结束该方法
2022-01-28 19:28:16
531
原创 多级页表计算
多级页表例如,某系统按字节编址,采用40位逻辑地址,页面大小是4KB,页表项大小是4B,假设采用纯页式存储,则采用几级页表,页内偏移量多少40位 = {28位页号={根据页表大小得到页号一级、二级},12位偏移量}首先,这里的页表项大小已经给出来了,正常我们是可以自己算的,比如一块内存4GB,页面大小4KB,有多少个内存块呢,2^32 / 2^12 = 2^20 也就是我们最多要用20位才能表示一个内存块号,一般计算机都是8的整数倍,所以页表项占3B回到题目,页内偏移量大小,就是指一个页面有几位因
2021-12-21 11:35:13
4503
1
原创 I/O设备无关性是什么
I/O设备无关性I/O设备无关性是指应用程序独立于具体使用的物理设备优点用户可以抽象使用I/O命令,还可以使用抽象的逻辑设备名来使用设备提高操作系统的可移植性和容易适应性,对操作系统而言,新增或者减少新的设备驱动程序,不需要将整个操作系统进行重新编译,就能很方便I/O设备安装...
2021-12-12 12:38:09
2726
原创 IO系统引入缓冲机制原因
IO系统引入缓冲机制原因缓和cpu 和 I/O 设备之间速度不匹配的矛盾,因为cpu 的运算效率远远高过I/O 设备的速率减少对cpu 的中断频率,放宽对中断响应时间的限制提高cpu 和 I/O 设备之间的并行性以上,引入缓冲机制,可以显著的提高cpu 和 I/O 设备 之间的并行操作程度,提高操作系统的吞吐量和设备的利用率...
2021-12-12 12:24:28
1923
原创 读者-写者问题
读者-写者问题有读者和写者两组并发进程,共享一个文件,要求:允许多个读者进程同时对共享文件执行读操作只允许一个写者进程往里写数据任意一个写者进程在完成写操作之前不允许其他读者进程或者写者进程访问共享文件写者执行写操作前,应等到已有的读者进程和写者进程全部退出关系分析:只有2类进程,写进程、读进程互斥关系:写进程-写进程,写进程-读进程semaphore rw = 1;//用于实现对共享文件的互斥访问int count = 0;//用于统计读者进程访问文件数量,第一个读者上锁,最后
2021-11-08 20:01:09
229
原创 吸烟者问题
吸烟者问题假设一个系统中有3个抽烟者进程,还有一个供应者进程。每个烟民不停地卷烟并抽掉它,但是一支香烟要烟民自己组装,分别需要三种材料:烟草、纸、胶水。第1个烟民自备烟草,第2个烟民自备纸,第3个烟民自备胶水。供应者供应烟民需要的其他2种材料,烟民抽完后会通知供应者他抽完了,然后供应者就会继续提供。这个过程一直重复,我们要实现让3个烟民轮流抽烟semaphore offer1 = 0;//烟草+纸semaphore offer2 = 0;//烟草+胶水semaphore offer3 = 0;//纸
2021-11-08 12:12:21
317
原创 生产者-消费者同步互斥问题
信号量机制-进程同步解决方法3用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而实现进程互斥(进程对临界资源的单独访问),进程同步(进程对临界资源的访问顺序)问题信号量听名字,好像是个跟信号、电气沾边的东西,其实信号量就是一个变量,用来表示系统资源数量,比如打印机的数量,也可以理解为操作系统层面的变量,每个进程共享注意信号量可以是整型变量,也可以是个结构体变量原语就是一种特殊的程序段,它的执行是一气呵成,不可被中断的,比如A用户先检查厕所没人,然后进去上锁,这两个步骤是连贯的;试想如
2021-11-06 09:35:02
1558
原创 进程同步和互斥的联系
进程同步和互斥的联系进程与进程之间存在两种制约关系,同步和互斥同步是由于并发进程之间需要协调完成相同一个任务,而引起的联系,比如2个人一起去打球,要完成这个任务,要1个人先把球带过来,另外1个人才能打,也就是B进程需要等待A进程的数据,否则B进程没办法完成任务的一种制约关系互斥是并发进程之间,相互竞争系统中的临界资源引起的,比如2个人去打球,球就是临界资源,要么A占着,要么B占着,是一个进程等待另外一个进程已经占用的,必须互斥使用资源时的一种制约关系...
2021-11-04 15:20:50
879
原创 mysql的基本操作
mysql的基本操作查看数据库结构语句show create database 数据库名 \G查看表详细结构语句show create table 数据表名 \G修改表名alter table old_table_name rename to new_table_name;查看数据库所有表show tables;查看表结构describe table_name;修改数据表某个字段数据类型alter table table_name modify field_name data_typ
2021-10-27 12:10:01
95
原创 系统调用与库函数的区别
系统调用与库函数的区别库函数是应用程序的一部分,运行在用户空间中,而系统调用是属于操作系统部分,是操作系统内核给用户提供的接口有的库函数内部封装了系统调用的代码,是对系统调用的进一步封装,有的库函数没有用到系统调用系统调用过程:在用户态下,传入参数,比如打开哪个文件,传入文件名在用户态下,发出trap指令,立即引发一个内中断,让cpu进入核心态由操作系统内核程序处理系统调用请求,比如从磁盘读入文件内容到内存返回应用程序注意,我们发出系统调用请求是在用户态下的,而系统调用的实际处理是在核心
2021-10-25 18:25:12
375
原创 递归和非递归快速排序算法实现
快速排序快速排序算法核心思想,在快速排序过程中,通过一趟划分,可以把待排序区间分为两个子区间,然后分别对这两个子区间再进行同样的划分,这样的套娃机制我们常常使用递归算法解决比较轻松,不过也可以通过非递归的方法实现。比如我们下面讲到的非递归算法,分别使用了栈,还有队列实现,以栈为例,栈的作用就是在处理一个子区间的时候,保存产生的新的左、右区间,待一个区间处理完后,再从栈中取出另外一个子区间进行处理递归算法实现栈实现队列实现// 快速排序的两种实现方式1-递归2-非递归#include &l
2021-10-23 18:03:26
620
原创 关键路径-数据结构
关键路径AOE网全称 Activity On Edge Network有向边,带有权值,权值代表时间花销,有向边代表活动顶点代表事件,事件是某个状态,立刻马上,没有时间花销相关概念在AOE网中仅有1个入度为0的顶点,我们叫源点,这个顶点的事件我们称整个工程的开始状态在AOE网中仅有一个出度为0的顶点,我们叫汇点,即结束顶点,该顶点事件我们称整个工程的结束状态从源点到汇点的路径有多条,最长那条就是关键路径,关键路径上面的活动叫关键活动,注意活动是一段时间内完成的求解方法求出所有
2021-10-16 12:15:52
345
原创 拓扑排序C++代码实现
拓扑排序//伪代码typedef struct ArcNode{ int adjvex;//该边指向的顶点的下标 struct ArcNode *nextarc;//下条边指针}ArcNode;typedef struct VNode{ char data;//顶点信息 例如a,b,c... ArcNode *firstarc;}VNode, AdjList[10];//最多10个顶点typedef struct{ AdjList vertices;//邻接表 int vexnum
2021-10-16 11:46:20
679
2
原创 二叉树基本操作C++实现
二叉树基本操作C++实现基本操作预览:先序遍历: element:1 element:2 element:3中序遍历: element:2 element:1 element:3二叉树的结点个数: 3度为2的结点个数: 1度为1的结点个数: 0叶子结点个数: 2二叉树的高度: 2是不是完全二叉树(1-是;0-不是): 1#include <stdio.h>#include <iostream>using namespace std;typedef st
2021-10-14 14:36:32
1019
原创 哈夫曼树与哈夫曼编码
哈夫曼树概念哈夫曼树也是二叉树叶子结点的权值,权值比如重要性,某种含义的数字叶子结点的带权路径长度 = 根到该结点的路径长度(也可以说是该叶子结点的父亲结点的高度)*该结点的权值树的带权路径长度WPL = 树中所有叶子结点的带权路径长度之和哈夫曼树是WPL最小的二叉树,比它大的都不叫哈夫曼树,由此可见哈夫曼树也是最优二叉树构造哈夫曼树每次选2个叶子结点权值最小的合并,并将2个权值的和作为新的根结点的权值由此可见,如果有n个结点,会有n-1次合并,也就是会多出n-1个非叶子结
2021-10-13 17:03:55
467
原创 平衡二叉树
平衡二叉树AVL树是带有平衡条件的二叉查找树,命名的由来是1962年 Adelson-Velskii和Landis 提出一篇论文,名字从名字中摘取而来代码实现:LL类型原来结点情况*gf->lchild/rchild = f;*f -> A//(根结点)*p->B//(根结点的左孩子)其中 f是爹,p为左孩子,gf是f他爹现在旋转f->lchild = p->rchild;//A的左孩子是原先B的右孩子p->rchild = f;//B的右孩
2021-10-13 11:34:06
82
原创 Prim和Kruscal最小生成树算法
最小生成树Prim算法Prim算法 主要是从结点出发,需要用到2个数组path数组保存结点从哪个结点过来lowcost保存起始结点到其他结点的代价,可以直接读邻接矩阵的内容path = {-1, 1, 1, 0, 0}lowcost = {0, 10, 5, ∞, ∞}显然我们要遍历n-1轮,每1轮确定1个结点第1轮遍历 找到lowcost中最小不为0的值,数组下标代表顶点确定顶点后,看下跟他相连的结点的代价,跟原来的代价,谁大谁小,小的替换大的,修改代价后把path对应的点改成当前顶点
2021-10-12 16:22:18
294
原创 非递归图的深度优先遍历算法
非递归图的深度优先遍历支持无向图和有向图,讲道理有向图的代码会比无向图的更容易理解,下面代码都做了兼容#include <stdio.h>#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;#define MAX_NUM 20 //顶点的最大个数bool visited[5];
2021-10-11 12:54:38
1747
1
原创 图的广度优先遍历实现
图的广度优先遍历图的广度优先遍历,除了本身存储顶点和邻边的信息需要存储空间外,还需要借助一个队列,空间复杂度是O(1)~O(Vertex)其实这个遍历算法跟树的层次遍历很类似,也是加多了个visited[] 数组标记是否已经访问过,避免死循环的情况直接上代码#include <stdio.h>#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;
2021-10-11 10:16:39
456
原创 图的深度优先遍历算法
图的深度优先遍历算法图的深度优先遍历算法,适用无向图和有向图跟树的先序遍历实现思想相同,只不过多了个数组标记已访问的顶点#include <stdio.h>#include <iostream>#include <stdlib.h>#include <time.h>using namespace std;#define MAX_NUM 20 //顶点的最大个数bool visited[5];
2021-10-10 23:18:15
2081
原创 树的双亲表示法C++代码实现
树的双亲表示法// 树的存储结构(包含二叉树)// 双亲表示法#include <stdio.h>#include <iostream>using namespace std;#define MAX_TREE_SIZE 100typedef struct{ int data; int parent;//数组下标} PNode;// 默认下标为0是根结点typedef struct{ PNode nodes[MAX_TREE_S
2021-10-08 21:14:10
656
原创 树的孩子兄弟表示法C++代码实现
树的孩子兄弟表示法// 孩子兄弟表示法#include <stdio.h>#include <iostream>using namespace std;#define ElemType chartypedef struct Node{ ElemType data; struct Node * firstchild,*nextsibling;}Node,*Tree;Tree init_data2(Tree tree){ ElemTy
2021-10-08 20:54:30
1338
原创 树的孩子表示法C++代码实现
树的孩子表示法树的孩子表示法,概念很简单,是用一个数组保存每个节点的数据,每个节点再用1个链表保存树的关系比如{<R,A>,<R, B>},这个数有3个节点,数组长度是3,然后有3个链表R的链表有{头结点,A,B}A的链表有{头结点}B的链表有{头结点}下面用代码实现#include <stdio.h>#include <iostream>using namespace std;#define MAX_TREE_SIZE 100
2021-10-08 16:12:41
1154
原创 图的基本概念以及常见公式汇总
图的基本概念无向图对于n个顶点的无向图G所有顶点的度 = 2*edge如果是连通图,即任意2个顶点都有路径,最少有n-1条边,比如树就满足如果是非连通图,最多边的情况就是把1个顶点摘出来,其他顶点两两之间都有路径,这种情况边(n-1)*(n-2)无向完全图有n*(n-1)条边有向图对于n个顶点的有向图G所有顶点的出度 = 所有顶点的入度 = edge,所有顶点的度 = 2*edge如果是强连通图,即任意2个顶点都有路径,最少有n条边,比如简单回路有向完全图有2n(n-1)条边
2021-10-07 09:52:27
1217
1
文件系统管理——10张思维导图
2021-09-23
apache-maven
2018-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人