408复习打卡
文章平均质量分 60
坚持
-小透明-
记录自己的一些学习笔记。
展开
-
操作系统5
答:因为不同的设备内部的硬件特性不同,这些特性只有厂家才知道,因此厂家必须提供与设备对应的驱动程序,CPU执行这些驱动程序的指令序列,来完成设置设备寄存器,检查设备状态等工作。通道:一种硬件,可以理解为“弱鸡版的CPU”、“一个任务清单”。答:块设备,以快为单位进行数据的传输,可寻址;字符设备以字符为单位传输速度慢,不可寻址,常采用中断驱动的方式。答:读取地址连续的磁盘块时,采用(柱面号,盘面号,扇区号)的地址结构可以减少磁头移动消耗的时间。2. 为什么不同的设备需要不同的设备驱动程序?原创 2023-07-30 21:07:38 · 322 阅读 · 0 评论 -
操作系统4
文件管理文件管理文件的逻辑结构文件的目录文件的物理结构文件存储空间管理文件的基本操作文件共享文件保护文件系统的层次结构文件系统的全局结构虚拟文件系统。原创 2023-07-30 14:56:15 · 126 阅读 · 0 评论 -
操作系统3
空间分配---动态分区分配算法内存管理内存可存放数据。程序执行前需要先放到内存中才能被CPU处理。程序运行的原理编辑源代码文件-->编译-->链接-->装入链接的三种方式① 静态链接:程序运行前,将各目标模块及它们所需的库函数连接成一个完整的可执行文件(装入模块),之后不再拆开。② 装入时动态链接:将目标模块装入内存时,边装入边链接的方式。:执行中需要该目标模块时,才对它进行链接。优点:便于修改和更新,便于实现对模块的共享。三种装入方式① 绝对装入:编译时产生绝对地址。原创 2023-07-30 10:31:41 · 238 阅读 · 0 评论 -
操作系统2
各进程相互等待对方手里的资源,导致各个进程都阻塞,无法向前推进。死锁、饥饿、死循环的共同点和区别死锁产生的必要条件。原创 2023-07-29 17:53:49 · 167 阅读 · 0 评论 -
操作系统1
答:当两个进程并发运行,同时请求同一个系统资源时,为了保证两个进程能够协调进行使用资源,需要由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”,进程通过系统调用向内核发出请求,内核对各个请求进行协调处理。有:陷阱,陷入(由陷入指令引发,是应用程序故意引发的)、故障(由错误条件引发的,可能被内核程序修复)、终止(由致命错误引起,内核程序无法修复)两类指令:特权指令、非特权指令;③ 对硬件机器的扩展:将cpu、内存、磁盘、显示器、键盘等硬件合理的组织起来,让硬件能够协调配合,实现更多复杂的功能。原创 2023-07-28 09:45:11 · 198 阅读 · 0 评论 -
计算机组成原理问答6
按功能:片内总线(CPU内部各部件连接的总线)、系统总线(计算机系统内部各部件连接的总线。包括数据、地址、控制总线)、通信总线(用于计算机系统间或计算机系统与其他系统间的连接)是指总现在双方交换数据的过程中需要时间上配合关系的控制,这种控制称为总线定时,它的实质是一种协议或规则。特性:机械特性(尺寸、形状)、电气特性(传输方向、电平有效范围)、功能特性(数据、地址、控制信号)、时间特性(信号和时序的关系)按数据传输格式:串行(一个比特一个比特的传输)、并行(一次传输多个比特)解决了多个设备争用总线的问题。原创 2023-07-27 09:48:42 · 81 阅读 · 0 评论 -
计算机组成原理问答5
CPUCPUCPU两大核心部件:运算器+控制器运算器的核心:ALU(算数逻辑单元),功能:对数据进行加工。基本结构:ALU、暂存寄存器、通用寄存器组、累加寄存器ACC、程序状态寄存器PSW、移位器、计数器。控制器功能:取指令、分析指令、执行指令。基本结构:程序计数器PC、指令寄存器IR、指令译码器、时序系统、微操作信号发生器、MAR、MDR。用户可见的寄存器(可更改内容的):通用寄存器组、PSW、PC不可见的:MAR、MAD、IR、暂存寄存器CPU功能指令控制。原创 2023-07-26 20:33:21 · 328 阅读 · 0 评论 -
计算机组成原理问答4
分类:数据传输类(CPU、主存间的数据传送)、运算类(算术逻辑操作、移位操作)、程序控制类(代表程序执行流,跳转指令)、输入输出类(cpu、IO设备直接的数据传送)设计时注意,短的操作码不能是长操作码的前缀(类似于哈夫曼编码),不能重复。:PC+“1”----->PC(1个指令字长,不是单纯的地址+1)定长指令字+可变长操作码:不同地址数的指令使用不同长度的操作码。确定下一条要执行的指令的存放地址,有程序计数器PC指明。半字、单字、双字指令----是机器字长的多少倍决定的。指令字长:指令的长度,是可变的。原创 2023-07-26 10:41:27 · 105 阅读 · 0 评论 -
计算机组成原理问答3
存储系统存储系统辅存:实现虚拟存储系统,解决了主存容量不够的问题。存储器的层次结构:"从下到上":外存、辅存、内存、Cache(高速缓存)、寄存器、CPU,成本越来越高,容量越来越小,速度越来越高。内存1. 添加Cache的作用?答:解决主存和CPU之间速度不匹配的问题。辅存中的数据要调入主存中,才能被CPU访问。虽然主存的访问速度已经比辅存高很多,但与CPU相比还是慢的,因此,增加了Cache。2. 存储器的性能指标答:① 存储容量=存储字数*字长;原创 2023-07-25 17:01:40 · 231 阅读 · 0 评论 -
计算机组成原理问答2
因为在计算机内部,尾数是定点小数,即小数点固定不变,如果让大阶向小阶对齐,"大阶"会出现好几个有效位,需要使小数点固定在好几个有效位后面,用计算机硬件很难实现。每4个对应一个十进制位(共16个,10个有映射关系,6个冗余,因此如果加法执行后结果对应到冗余码时,则需加6(0110)修正<强制向高位进1>),ALU支持同时输入多少比特信息,那么经过处理后输出的数据需要存放在相应的寄存器中,因此ALU能够处理的数据多少位,寄存器也会设计为多少位。短整数变长整数:符号位扩展,负数补1,正数补0,真值不变。原创 2023-07-24 23:12:16 · 92 阅读 · 1 评论 -
计算机组成原理问答1
输入设备(将信息转化为二进制形式)、输出设备(通称I/O设备)、存储器(主存储器存放数据和程序)、运算器(进行算数运算、逻辑运算)、控制器(指挥各部件,使程序运行)。:早期使用纸带机进行编程,如果有一只虫子在上面就会导致纸带机读取的二进制代码出现错误,从而导致程序出错。然后按其在存储器中的首地址执行程序的第一条指令,以后就该程序的规定顺序的执行其他指令,直至程序执行结束。:将源程序的一条语句翻译为对应的机器语言,立即执行,再翻译下一句(响应时间:从输入有效到系统产生响应之间的时间度量,用时间单位度量。原创 2023-07-24 13:45:06 · 70 阅读 · 0 评论 -
数据结构问答9
答:除时间空间复杂度外。还要关注算法的稳定性:即经过排序算法关键字相同的元素在排序之后则为稳定的算法。原创 2023-07-23 11:00:51 · 562 阅读 · 0 评论 -
数据结构问答8
基本思想:在[low, high]之间查找目标关键字,每次检查mid=(low+high)/2,根据mid所指元素与目标关键字的大小调整low和high,不断缩小low和high的范围,当low>high时则查找失败。缺点:需确定查找区间,只适用于顺序表,且要保证表的有序性,如果需要插入会和删除需要在顺序表中移动大量元素,所以适合需要少改动经常查找的线性表。:∑pici,pi:查找第i个元素的概率,一般为1/n,ci:找到第i个元素所需进行的关键字的比较次数。:整个查找过程在内存中进行,称之为内查找;原创 2023-07-22 20:23:31 · 704 阅读 · 0 评论 -
数据结构问答7
1. 图的定义和相关术语答:定义:图是由顶点集V和边集E组成,其中。相关术语:n个顶点,e条边,G=(V,E)中,若存在一条边(i, j),则称,且它们;在,若存在一条边,则称i,j分别为,j是i的,i是j的。中,顶点所具有的为该;中,以顶点i为该,以其的数为该。一个图中,所有顶点的度之和=边数的两倍。③ 完全图:若无向图中、有向图中每两个顶点之间。④ 稠密图和稀疏图:当一个图时,为;,为。V和E的构成的图。但并非所有V和E的子集都能构成G的(因为不一定构成图)。原创 2023-07-21 16:59:06 · 249 阅读 · 0 评论 -
数据结构问答6
答:递归定义:树是由n个结点组成的有限集合。n=0时,是一颗空树,n>0时,只存在一个结点作为树的根结点,其余结点可分为m个互不相交的有限集,每个子集本身又是一颗符合定义的树,称为根节点的子树。固有特性:一棵树有若干棵互不相交的子树构成,而子树又由更小的若干棵子树构成。特点:一种非线性数据结构,每个结点都可以有0个或多个后继结点,但有且只有一个前驱结点(根节点除外);原创 2023-07-20 17:35:52 · 77 阅读 · 0 评论 -
数据结构问答5
答:定义:广义表是线性表的推广,是n个元素的一个有限序列。广义表GL表示与线性表相同若ai是单个数据元素,这称之为广义表的原子;如果是一个广义表,则称之为广义表的一个子集。特性:GL=(a, (b, (c), (#))),head=a,tail=((b, (c), (#)))① 一个广义表中的数据既可以是原子,也可以是子表② 广义表中的数据元素有相对次序,数据元素个数有限③ 其长度定义为最外层包含的元素个数④ 深度定义为所包含的括号的重数,原子深度为0,空表深度为1。原创 2023-07-20 09:58:28 · 91 阅读 · 0 评论 -
数据结构问答4
'ab'原创 2023-07-19 23:29:44 · 392 阅读 · 0 评论 -
数据结构问答3
区别:线性表可以在中间和两端任何地方插入和删除元素,而栈只能在同一端插入和删除元素,具有后进先出的特点、队列只允许在一段插入元素,另一端删除元素,具有先进先出的特点。但循环队列中出队元素的空间可能被后来进队的元素覆盖,如果算法要求在队列操作结束后利用进队的所有元素实现某种功能时,此时循环队列就不适合了。答:在实际应用中,一般栈和队列都是用来存放临时数据的,如果先保存的元素先处理,应该采用队列;判满:top==maxsize-1;原创 2023-07-19 16:41:07 · 1139 阅读 · 0 评论 -
数据结构问答2
链表是链式存储结构,逻辑上相邻的两个元素在物理位置上可以不相邻,链表结点除了存储元素本身的数据外,还需要存储一个指向下一个元素的位置数据,程序可以通过该信息访问到下一个元素。对于带头结点的单链表,在单链表的任何节点之前插入或删除节点,都是修改前一个节点的指针域,因为其他节点都有前驱节点(若无头结点,则首节点无前驱节点,在其前插入和删除节点时操作复杂一些),使得算法设计方便。① 由n个数据元素组成的有限序列,所有元素性质相同,元素之间呈线性关系(除开始元素外,每个元素只有唯一前驱;原创 2023-07-18 18:53:43 · 969 阅读 · 0 评论 -
数据结构问答1
数据元素与数据之间的关系就是元素与集合之间的关系。2.“抽象数据类型”本质是“数据类型”,与计算机相关,涉及数据的存储及如何用存储来反应数据元素之间的关系.它定义为一个三元组(D,S,P),加上的P是定义的一组针对存储的数据操作(如插入,删除,排序等).数据类型:是计算机程序中的数据对象以及定义在这个数据对象集合上的一组操作的总称。1.“数据结构”定义为一个二元组(D,S),即两个集合,D是数据元素的集合,S是数据元素之间一个或多个关系的集合.数据元素是数据的子集,数据包含了数据元素,数据元素组成了数据。原创 2023-07-18 09:47:27 · 819 阅读 · 0 评论 -
day22--哈希
从开始处遍历数组,对于第i个位置,原创 2023-06-15 09:47:52 · 683 阅读 · 0 评论 -
day21--滑动窗口的最大值
我们都知道,若是一个数字A进入窗口后,若是比窗口内其他数字都大,那么这个数字之前的数字都没用了。因为它们必定会比A早离开窗口,在A离开之前都争不过A,所以A在进入时依次从尾部排除掉之前的小值再进入,而每次窗口移动要弹出窗口最前面值,因此队首也需要弹出,所以我们选择双向队列。原创 2023-06-14 18:43:28 · 40 阅读 · 0 评论 -
day20--堆
用来解决,时间复杂度为,其中n为数组的长度。原创 2023-06-13 09:58:44 · 83 阅读 · 1 评论 -
day19--栈
因此两个栈即可模拟队列。原创 2023-06-12 10:24:57 · 367 阅读 · 0 评论 -
day18--序列化二叉树
遍历二叉树,记录每个节点,原创 2023-06-11 10:20:43 · 38 阅读 · 0 评论 -
day17--二叉树
先找到根节点。原创 2023-06-10 11:40:21 · 40 阅读 · 0 评论 -
day16--二叉树
完全二叉树。原创 2023-06-09 08:49:55 · 48 阅读 · 0 评论 -
day15--二叉树
对于二叉树进行,在遍历的同时,使之成为双向链表。原创 2023-06-08 09:41:33 · 41 阅读 · 0 评论 -
day14--二叉树
【代码】day14--二叉树。原创 2023-06-07 10:02:10 · 54 阅读 · 0 评论 -
day13--二叉树遍历
的遍历方式。原创 2023-06-06 12:20:51 · 58 阅读 · 0 评论 -
day12--排序-查找-比较
【代码】day12--查找、排序。原创 2023-06-05 20:49:32 · 38 阅读 · 0 评论 -
day11--查找
【代码】day11--查找。原创 2023-06-01 12:49:58 · 45 阅读 · 0 评论 -
day10--链表回文、奇偶重排、删重
快慢指针:找到链表中点;将前半段入栈,然后一个一个出栈与后半段比较。原创 2023-05-30 21:26:39 · 48 阅读 · 0 评论 -
day9--链表(公共结点、相加、排序)
使用两个指针p和q分别指向两个链表head1,head2的头结点,然后同时分别逐结点遍历,当p到达链表head1的末尾时,重新定位到链表head2的头结点;当q到达链表head2的末尾时,重新定位到链表head1的头结点。这样,当p和q相遇时,所指向的结点就是第一个公共结点。我们将链表的节点装入栈中,比较顶部的节点,然后遍历栈查找公共节点。原创 2023-05-29 21:22:47 · 112 阅读 · 0 评论 -
day8--链表倒数第k个结点
是定义两个指针p和q,先让p指向链表的头结点,然后让q指向第k个结点。接着,同时移动p和q,直到q指向链表的尾结点。此时,p指向的结点就是倒数第k个结点。原创 2023-05-28 11:11:02 · 58 阅读 · 0 评论 -
day7--链表中环的入口结点
2. 一个从头结点开始,一个从第一次相遇的点开始走;1. 利用"快慢指针"先找到第一次相遇的点;3. 再次相遇时即入口点。原创 2023-05-27 18:41:09 · 41 阅读 · 0 评论 -
day6--合并k个已排序的链表
时间复杂度是O(Nlogk),其中N是所有链表中节点的总数,k是链表的数量。将k个链表分成两组,分别递归合并,最后再将两个合并后的链表合并成一个。原创 2023-05-26 14:40:26 · 49 阅读 · 0 评论 -
day5--链表中的节点每k个一组翻转
先计算出链表的长度,然后每次翻转k个节点,直到链表中剩余的节点不足k个为止。在翻转过程中,使用一个循环来交换相邻的两个节点,直到完成翻转。指针,即为翻转后的链表头指针。最后,我们返回虚拟头节点的。指针指向原链表的头节点。然后,我们使用三个指针。的虚拟头节点,将它的。原创 2023-05-25 10:30:16 · 61 阅读 · 0 评论 -
day4--链表内指定区间反转
3. 将pre节点的next指向反转后链表的头节点,将反转后链表的尾节点的next指向n+1节点。1. 第m个节点的前一个节点pre和第n个节点;2. 将第m个节点到第n个节点的链表部分反转;原创 2023-05-24 16:37:27 · 558 阅读 · 0 评论 -
day3--判断链表中是否有环
因为 fast 要比 slow 移动的快,如果有环,fast 一定会先进入环,而 slow 后进入环。当两个指针都进入环之后,经过一定步的操作之后二者一定能够在环上相遇,并且此时 slow 还没有绕环一圈。fast 每一步向前两步即:fast = fast→next→next(需先判断next是否空,不空再next)每次:slow 向前走一步:slow = slow→next。原创 2023-05-23 11:01:02 · 61 阅读 · 0 评论