4_指令系统
程序控制类指令主要包括:无条件转移、有条件转移、子程序调用和返回指令、循环指令 中断隐指令是由硬件实现的,不是指令系统中存在的指令,更不属于程序控制类指令 扩展操作码指令格式:定长指令字结构 + 可变地址码。目的:保持指令字长不变而增加指令的数量 指令系统采用不同的寻址方式的目的:可缩短指令字长,扩大寻址空间,提高编程的灵活性 提供扩展操作码不能降低指令译码难度 与实现程序控制无关 为了缩短指令中某个地址段的位数,有效的方法是采取:寄存器寻址 注意📢:按字节/字编址P + “1” 求地址还是内容 看清楚是H—这是十六进制
1_计算机网络体系结构
1.2体系结构与参考模型 实体:任何可以发送或接受信息的硬件或软件进程。同一层的实体称为对等实体
3_内存管理
🧀 可重入代码或纯代码或可重入程序:不能被任何进程修改的代码(不属于临界资源),是一种允许多个进程同时访问的代码 硬件地址变换机构一般用于动态重定位的情况 单一连续分配和固定分区分配采用的是静态重定位,不需要硬件地址变换机构,而由装入程序或操作系统来完成地址转换 页式存储管理、动态分区分配和页式虚拟存储管理需要硬件地址变换机构 共享段表的作用是实现多个进程共享同一段代码或数据;多个进程共享同一段物理内存空间并不需要共享段 采用分页或分段管理后,提供给用户的物理地址空间并不能确定,因为页表和段表的长度不确定 在页式存储管理中,查找页表的工作是由硬件完成的。由于地址变换的发生频率高,不能再把软件(操作系统)参与进来,大大降低了效率 可重入程序是通过减少对换数量来改善系统性能的 因为可以被共享使用,所以可减少对换数量(调入出内存) 对主存的访问是以字节或字为单位的,例如在页式管理中,不仅要知道块号,还要知道页内偏移量。主存的分配是以块为单位的
2_进程与线程
进程与线程 PCB是进程的唯一标志 进程是系统进行资源分配和调度的一个独立单位 动态性是进程最基本的特征 阻塞是进程的主动行为 高级调度即作业调度,会导致创建新进程 设备分配不需要创建进程 并发进程执行时具有 间断性 失去封闭性 不可再现性 封闭性是指程序执行的结果只取决于程序本身,不收外界影响,即程序的执行速度不会影响它的执行结果,即有再现性 增强进程安全性不是线程的优点 由于线程共享同一个进程的地址空间,一个线程出错,可能导致所有线程错误、崩溃 线程可以便于进程内的通信,而不能便于进程间的通信 线程又称为轻量级进程,但是当一个进程只有一个线程时,线程和进程一样大 输入设备通常由中断和事件处理,不依赖于线程 多线程的真正特长是并发处理,而非简单的事件响应 进程之间的通信方式主要有:管道、共享内存、消息传递、套接字、文件映射 处于运行态的进程被高优先级进程抢占,会使该进程回到就绪态 系统调用,是用户进程处于用户态通过软中断陷入指令调用内核功能 线程同步是指多个线程之间协调执行顺序机制 为了防止多个用户级线程同时访问共享资源而造成“混乱”或“数据错误”...
1_概述
脱机:由于程序和数据的输入输出都是在外围机的控制下完成的,或者说它们在脱离主机的情况下进行的,故称为脱机输入/输出方式 联机:反之,把在主机的直接控制下进行输入/输出的方式称为联机输入/输出方式 脱机命令接口和联机命令接口的区别:在于说一堆做一堆还是说一句做一句 基本特性: 并发:两个或多个事件在同一时间间隔内发生(区别并行 同一时刻) 共享:互斥共享 同时访问(宏观同时,微观交替) 虚拟:把一个物理上的实体变为若干逻辑上的对应物(时分复用技术 空分复用技术) 异步:由于资源有限,并发进程以人们不可预知的速度向前推进 并发和共享互为存在条件,是操作系统的两个最基本特性。没有并发和共享,就谈不上虚拟和异步 内核态/核心态/管态与用户态/目态如何互相转化? 中断是操作系统夺回CPU控制权的唯一途径 Trap指令会引发内中断,使CPU进入核心态 习题 顺序性不属于多道程序设计的基本特性。程序共享资源,产生制约性,为了公平,多道程序是断序的 分时系统的响应时间好,追求比较快速响应用户 多道批处理系统的主要缺点是不提供人机交互 多道程序系统不必需支持虚拟存储管理,进程数越多,...
2_数据的运算和表示
🧀 数制与编码 定点小数补码1000 0000表示-1 定点整数补码1000 0000表示-128 移码只能表示整数 C语言强制类型转换 无符号数和有符号数:不改变数据内容,改变解释方式 长整数变短整数:高位截断,保留低位 短整数变长整数:符号扩展 为什么要对数据进行长度扩展? ALU的位数是固定的 通用寄存器的位数是固定的 主存内的各种数据的长度不一,有时需要把短数据扩展为长数据 零扩展:适用于无符号整数,用0扩展高位 符号扩展:适用于有符号整数(补码),用符号位扩展高位 异或妙用:n bit进行异或,有奇数个1,异或结果为1,偶数个1,异或结果为0 反演律 A+B‾=A‾⋅B‾\overline{A+ B}=\overline{A} \cdot \overline{B} A+B=A⋅B A⋅B‾=A‾+B‾\overline{A\cdot B}=\overline{A} + \overline{B} A⋅B=A+B 主存地址用无符号二进制整数表示,不是原码! 运算方法与运算电路 带标志位的加法器 缩写 全...
1_概述
计算机系统层次结构 计算机系统 = 硬件 + 软件 软件和硬件在逻辑功能上是等价的 冯·洛伊曼计算机以运算器为中心 现代计算机一般以存储器为中心 CPU 和主存构成了主机 MAR 与 MDR 虽然是存储器的一部分,但在现代计算机中却是存在于 CPU 中 翻译程序 编译程序:将高级语言源程序翻译成汇编语言或机器语言(目标代码文件) 看起来可以一次性翻译为机器语言,但事实上仍然依赖于汇编器 汇编程序:将汇编程序转换成机器语言 解释程序:逐行读取和执行高级语言代码,不生成目标代码文件 计算机的性能指标 s>ms>μs>ns>pss>ms>\mu s>ns>ps s>ms>μs>ns>ps K>M>G>T>P>E>ZK>M>G>T>P>E>Z K>M>G>T>P>E>Z CPI:执行一条指令所需要的时钟周期数 IPS:每秒执行指令的数量 FLOPS:每秒执行浮点运算的次数 数据通路带宽:外...
2_线性表
🧀 顺序表是顺序存储的线性表,表中所有元素必须相同,且必须连续存放 一维数组中的元素可以不连续存放 封装的好处 小功能模块化,代码逻辑清晰 避免重复代码,简洁易于维护 位序从1开始,数组下标从0开始 大题 2.2 123456789101112131415161718192021222324252627282930313233// 用k来记录不属于区间内的元素bool del (SqList &L, ElemType s, ElemType t){ if ( L.length == 0 || s >= t ) return false; int k = 0; for ( int i = 0; i < L.length; i++ ){ if (L.data[i] < s || L.data[i] > t ){ L.data[k] = L.data[i]; k++; } }// for ( int j = L.length - k; j < L.length ...
1_绪论
基本概念 线性结构:有且仅有一个开始和终端结点,且所有结点都最多只有一个直接前驱和一个直接后序 非线性结构:多个直接前驱或多个直接后继 存储结构是逻辑关系的映象与元素本身的映象 逻辑结构是数据结构的抽象,存储结构是数据结构的实现。两者综合起来建立了数据元素之间的结构关系 注意区别逻辑结构和具体数据结构 P3X3 算法评估 算法必须是有穷的,程序可以是无穷的 可行性是指算法中描述的操作可以通过已经实现的基本运算有限次来实现 算法有零个或多个输入,一个或多个输出 健壮性是指能对输入的非法数据做出反应或处理,而不会产生莫名其妙的输出结果 O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)<O( \log_{2}{n})<O(n)<O(n \log_{2}{n})<O(n^{2})<O(n^{3})<O(2^{n})<O(n!)<O(n^{n}) O(1)<O(log2n)<O(n)&l...
Python
0 字面量 在代码中被写下来的固定的值 值的类型: 数字 int float complex bool 字符串 需要用 " 包围起来 列表 元组 集合 字典 注释 单行注释:以 # 开头,与注释内容一般建议以一个空格隔开 多行注释:以 一对三个双引号 引起来 变量 变量没有类型,但他存放的数据有类型 print 输出多份内容 1print(内容1,内容2,内容3) type() 语句 查看字面量或数据的类型 123print(type(666))# 输出666这个字面量的类型# 打印结果:<class 'int'> 数据类型转换 1234int(x)float(x)str(x)# 都是有返回值的 任何类型都能转换为 string float 转 int 会丢失精度,即去除掉小数点后面的内容,不是四舍五入 标识符 在编程的时候使用的一系列名字,用于给变量、类方法等命名 标识符命名规则: 内容限定 只允许出现: 英文 下划线 数字(不可以用在开头) 中文(不推荐) 大小写敏感 不可使用关键字 标识...