操作系统-3.1内存管理概念
1. 原理程序的链接&装入将用户程序变为内存中可执行程序 编译 链接 静态链接:运行前链接成完整的装入模块 装入时动态链接 运行时动态链接:只在需要它时才进行链接 装入(逻辑地址→物理地址) 绝对装入:绝对地址 可重定位装入: 相对地址,从0开始 装入内存时进行重定位,若起始物理地址为100,所有地址+100 动态重定位 装入时并不会立即将逻辑地址→物理地址,等程序真正执行时才进行 进程的内存映像当一个程序调入内存,就构成进程的内存映像 代码段:机器指令、只读数据 数据段:读/写数据 进程控制块PCB 堆: 存放动态分配的变量。 调用malloc动态向高地址分配空间 栈 实现函数调用 从用户空间最大地址→低地址增长 宏定义常量不专门分配空间,在预编译阶段直接读入 内存保护 ①设上下限寄存器 ②重定位寄存器+界地址寄存器 例:进程A物理地址100-279,逻辑地址0-179 重定位寄存器=100 界地址寄存器=179 此时访问逻辑地址80的内存单元 80<179→未越界(否则抛出异常) 80...
操作系统-2.4死锁
1. 概念产生必要条件(同时满足) 互斥 不可剥夺 请求并保持 循环等待(必要不充分) 2.预防 3.⭐避免安全序列 按这个序列给系统分配资源,进程能够顺利完成 不安全状态 找不到任何安全序列,系统进入不安全状态。可能发生死锁 银行家算法(安全性算法) ①资源请求 12345678910111213141516// 1. 检查请求是否越界if (Request_i > Need[i]) then ERROR// 2. 检查资源是否足够if (Request_i > Available) then WAIT// 3. 试探性分配Available = Available - Request_iAllocation[i] = Allocation[i] + Request_iNeed[i] = Need[i] - Request_i// 4. 检查安全性if (IsSafe() == TRUE): COMMIT_CHANGES() // 真正分配else: ROLLBACK_CHANGES() // 恢复数据,Pi 等待 ②安全性算法 1234567891...
操作系统-2.3同步与互斥
1. 概念 临界资源:一次仅允许一个进程使用的资源 访问过程:进入区(检查)-临界区(访问)-退出区-剩余区 同步:直接制约关系,源于进程间相互合作 互斥:间接制约关系 2.互斥实现方法①软件实现 一、单标志法 两个进程轮流进入临界区 不足:若一个无法不不再进入,另一个也将无法进入(违背“空闲让进”原则) 二、双标志先检查法 不足:可能同时进入临界区。即检查对方标志后和设置自己标志之前可能发生进程切换(违背“忙则等待”原则) 三、双标志后检查法 不足:两个都想进时谁都进不了(违背“空闲让进”、“有限等待”原则) 四、Peterson算法(四种算法中最好) ②硬件实现 中断屏蔽方法(最简单,效率降低,不适用多处理系统) 硬件指令方法——TestAndSet指令(原子操作,适用多处理系统,但违背“让权等待”) 硬件指令方法——Swap指令 3.信号量一个变量。表示系统中某种资源的数量。 ①整型信号量 操作:初始化、wait(P操作:“申请”)、signal(V操作:“释放”) 缺陷:不满足“让权等待” ⭐②记录型信号量 在整型基础上加一个进程链表L...
操作系统-2.2CPU调度
1. 概念CPU调度就是对CPU进行分配。从就绪队列中按照一定算法选择一个进程将CPU分配给它运行。 CPU三级调度 高级(作业调度):从外存后备队列中调选作业分配内存,使之可以竞争CPU 中级(内存调度):提高内存利用率,将不能运行的进程调至外存 低级(进程调度):最基本,给就绪队列中的进程分配CPU 2.实现调度程序由三部分组成 排队器 分派器 上下文切换器 不能进行调度&切换的情况 处理中断过程中 原子操作过程中(连中断都屏蔽) 进程调度方式 非抢占调度 抢占调度(允许更紧迫的插队) 常用计算 周转时间=作业完成时间−提交时间周转时间= 作业完成时间-提交时间周转时间=作业完成时间−提交时间 平均周转时间=(周转时间1+...+周转时间n)/n平均周转时间= (周转时间1+...+周转时间n)/n平均周转时间=(周转时间1+...+周转时间n)/n 带权周转时间=作业周转时间作业实际运行时间带权周转时间=\frac{作业周转时间}{作业实际运行时间}带权周转时间=作业实际运行时间作业周转时间 CPU利用率=CPU有效工作时间CPU有效工作时间+...
计网-1.计网体系结构
1.1 计网概述计算机网络:由节点+连接节点的链路组成 互连网:多个计算机网路互连而成的计算机网络 互联网:专用名词。特定计算机网络,采用TCP/IP协议。 计网组成 组成部分: 硬件:主机、通信链路、交换设备等 软件 协议:计网核心。规定传输数据时遵循的规范。 工作方式: 边缘部分:主机 核心部分:网络+路由器 功能组成: 通信子网:负责信息传输的部分(传输介质+通信设备+协议) 资源子网:主机+软件 计网功能 数据通信 (最重要最基本) 资源共享 分布式处理 提高可靠性 负载均衡 交换技术1.电路交换比特流直达终点 建立连接 通信(一直占用通信资源) 释放连接 优点:传输速率高 缺点:需额外时间开销、线路利用率低、灵活性差、不支持”差错控制“ 2.报文交换采用存储转发技术。 信息→封装→报文 报文→传送→相邻节点 查转发表→转发到下个节点→重复,直至达目的地 优点:无需建立连接,线路利用率高、灵活、支持”差错控制“ 缺点:时延大、缓存开销大、容易出错 3.分组交换采用存储转发技术。解决报文过长问题。 长报文→划分→等长数据段 ...
操作系统-2.1进程与线程
程序执行进程基本内容进程的概念进程是程序的一次执行过程 程序是静态的,进程是动态的 进程的组成 PCB:进程控制块。进程存在的唯一标志。进程结束时会回收PCB PID:进程ID,唯一的,不重复 程序段 数据段 进程控制进程的状态与转换 进程的状态转换必须一气呵成(利用“原语”实现) 相关原语原语用关/开中断来实现,不可中断 阻塞和唤醒成对出现 进程通信1. 共享存储 基于存储区的共享(高级) 基于数据结构的共享(低级) 2. 消息传递进程间数据以格式化的消息为单位。 消息头(进程ID,长度等)+消息体(实际数据) 进程通过”发送/接受消息“两个原语进行数据交换。 直接通信:直接指明要通信的进程ID 间接通信:通过”信箱“ 3. 管道通信 相比共享存储,要求数据读写先进先出 管道数据一旦被读出就彻底消失 信号 用于通知进程某个时间已经发生 线程基本线程是程序执行流的最小单位,是调度的基本单位(进程是资源分配的基本单位) 作用:每一个进程可以有多个线程,增加并发度 切换进程开销大;同进程内切换线程开销小 实现...
java-5.集合
什么是集合——若干确定元素构成的整体。 特点: 接口与实现分离:即接口只定义行为,不关心怎么做。例如有序表的接口是 List,具体的实现类有 ArrayList,LinkedList等 支持泛型(java-4.泛型) 通过统一方式——迭代器 (Iterator) 访问 12345Iterator<String> it = list.iterator(); // 获取遥控器while (it.hasNext()) { // 问:还有吗? String s = it.next(); // 答:给我下一个 System.out.println(s);} 集合的分类有哪些 list:有序列表 set:无重复元素 map:键值对 List常用函数 1234567list.add(i) //末尾添加元素list.add(int index, i) //在指定索引添加元素list.remove(i) //删除元素list.remove(int index) //删除指定索引的元素list.con...
系统结构-2指令系统
1. 指令系统的分类 以C=A+B为例说明不同指令系统的特性 堆栈型 计算只能从栈顶拿数据,计算完也只能放回栈顶。 代码: Push A (内存 →\to→ 堆栈) Push B (内存 →\to→ 堆栈) Add ([计算数]堆栈 →\to→ ALU →\to→ [计算结果]堆栈) Pop C (堆栈 →\to→ 内存) 累加器型 一个操作数必须来自累加器,另一个操作数必须来自内存。结果必须放回累加器。 代码: Load A (内存 A →\to→ 累加器) Add B (累加器 + 内存 B →\to→ ALU →\to→ 累加器) Store C (累加器 →\to→ 内存 C) 寄存器型 寄存器-内存型 累加器型的“升级版”。计算时,一个操作数来自任意寄存器,另一个可以来自内存。 代码: Load R1, A (内存 A →\to→ 寄存器 R1) Add R3, R1, B (R1 + 内存 B →\to→ ALU →\to→ 寄存器 R3) Store R3, C (寄存器 R3 →\to...
系统结构-1.基本概念
定量准则Amdahl定律 系统加速比 SnS_nSn: Sn=T0Tn=1(1−Fe)+FeSe S_n=\frac{T_0}{T_n}=\frac{1}{(1-F_e)+\frac{F_e}{S_e}} Sn=TnT0=(1−Fe)+SeFe1 改进前整个任务执行时间/改进后整个任务执行时间 FeF_eFe:可改进比例 SeS_eSe:部件加速比 例题:假设某测试程序中FP指令执行时间占50%,FPSQR指令占20%,用改进FPSQR指令速度为原来的10倍和改进FP指令速度为原来的2倍,哪种方案更好? ① Sn=1(1−0.2)+0.210=1.22 S_n=\frac{1}{(1-0.2)+\frac{0.2}{10}}=1.22 Sn=(1−0.2)+100.21=1.22 ② Sn=1(1−0.5)+0.52=1.33 S_n=\frac{1}{(1-0.5)+\frac{0.5}{2}}=1.33 Sn=(1−0.5)+20.51=1.33 ∴ 方案2 优于方案1 CPU性能公式CPU时间= IC × C...
操作系统-1.6虚拟机
虚拟机分类 直接运行在硬件上(性能高、可迁移性差) 运行在现有的宿主操作系统上(性能略低、可迁移性高)


