计算机存储方式

复习了有关数据结构和计算机组成原理部分内容
总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,统一控制内存、CPU等。在电路中相当于电路的总开关。
磁盘存储方式
磁盘只能地址非连续存储、不准有数据存在。但尽量地址是挨在一起的,这样可以加速存取的速度。
计算机存储
CPU–内存–磁盘
其中CPU到内存的存取速度较快,但磁盘由于自身是机械操作(包括寻道时间,读取时间等)存取速度非常慢,这两部分时间相差较大(内存到CPU所需时间为ns级,磁盘到内存所需时间为ms级),所以一般只需考虑磁盘读取到内存的时间。
磁盘内部的每个扇区都是等长等面积的,一个盘有两个机械臂。
补充:一般笔记本电脑中CPU转速为5400r,主机的转速为7200r。
现在发展过程中,CPU的速度相比于内存也是快很多的,为了尽快将内存和CPU的处理速度匹配,避免出现大批量的等待时间,所以设置Cache(或者分级Cache)。分级Cache中一般分为三个等级L1、L2、L3,数值越小越靠近CPU。

操作系统位数取决于寄存器的位数。磁盘一般以4KB为单位。操作系统是由汇编语言和C语言写的。
操作系统中
int占32b即4B long占64b即8B short占16b即2B char占8b即1B

C语言中struct存储边界对齐问题
重要条件:

  1. 每个成员按其类型的方式对齐
  2. struct长度必须是成员中的最大的对齐值的整数倍(不够就补空字节),以便在处理数组时保证每一项都边界对齐。
struct A{							struct B{
	int a;								char b;
	char b;								int a;
	short c;							short c;
}										}
//结果:sizeof(A)=8			sizeof(B)=12

因为编译器要对结构体成员在空间上进行对齐。若N为对齐值,则该成员的“存放起始地址%N=0”,而结构体中的成员定义都是按定义的先后顺序排放的。结构体要对齐排放,结构体长度需要是有效对齐值的整数倍。
结构体A中假设地址从0x0000开始,a的对齐值为4,存放在0x0000-0x0003中,符合0x0000%4=0,b的对齐值为1,存放在0x0004中,符合0x0004%1=0,c的对齐值为2,为满足存放起始地址%N=0,c存放在0x0006-0x0007这两个字节中,符合0x0006%2=0,结构体一共占8的字节
结构体B中假设地址从0x0000开始,b的对齐值为1,存放在0x0000中,a的对齐值为4,存放在0x0004-0x0007中,c的对齐值为2,为满足存放起始地址%N=0,c存放在0x008-0x0009这两个字节中。此外,结构体长度必须是最大对齐值的整数倍,即0x000A-0x000B也为B占用,结构体一共占12的字节。

数据结构
主要分为物理地址连续的数组,物理地址不连续的链表、树、图
为什么数组要连续分配存储空间?
防止其他进程进入,完成初始化过程
程序运行只记录开头?
若记录全部,对内存损耗非常大。
时间复杂度
O(1)=k
O(n)=an+k
O(n2)=a
n2+bn+k
O(logn)=a
logn+k
O(nlogn)=anlogn+bn+clogn+k

数组
移动O(n)
有序表的查找二分法O(logn)
改变顺序表中的一个数O(n) 先找到logn再移动数据O(n),总共O(logn+n) 即O(n)
有规律数组查找O(1),抽象成数学公式

链表
查找O(n)
链表增加删除O(1)记录尾指针
修改一个数O(n)==查找


增删改查都是O(logn)
改相当于先删除在插入
顺序二叉树根节点的删除:找左子树的最右子树的结点代替,找右子树的最左子树的结点代替

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值