计算机系统工程笔记

Lec1 系统概述

①共性问题:

     涌现性(只有系统完成了会呈现新的特性)
     影响传播(蝴蝶效应)
     不成比例效应(老鼠变大象被自身压垮)
     取舍(二分分类问题)

②复杂性的原因:

	需求太多
	利用率高

③应对复杂性:

	模块化
	(模块间和模块内通信)
	抽象
	(接口与内部相互独立,避免影响传播)
	(宽进严出)
	分层
	(低层模块构成高层模块)
	(相比于模块化的O(N2),是O(N))
	层级
	(模块化变种,小模块在大模块中)
	(相比于模块化的O(N2),是O(N))

④模块之间:

	交互
	(命名要访问的模块)
	合作
	(通过绑定完成特定功能)

⑤设计原则:

	迭代:
	(设计简单可运行系统,满足问题子集,逐步改进)
	(系统要易于修改)

⑥系统的四个基本特性:

	正确性
	一致性
	(学院派)
	简单性
	完整性
	(工业派)

Lec2 设计基本的计算机系统

①抽象三大件

(1)存储
	虚拟内存
	
	~原子性:
	(程序要么完整执行,要么不执行)
	~一致性:
	(读到的一定是最新写的)
(2)解释器
	处理器
(3)通信链路
	以太网

②命名

	名称映射算法
	value ← resolve (name, context)
	(由名称和上下文同时决定)

	递归要避开软链接
	(软链接到目录容易产生链路环)
	(软链接的数据可能为空)

Lec3 命名

①解决命名冲突问题

		1.跟踪上下文
		2.使用间接名称
		3.闭包

②元数据

	    1.定义:不包含在对象内部,或包含却难以查找的信息。(文件的元数据:名称,标识符,类型,时间,版本)
		2.名称重载导致元数据改变,破坏模块化和抽象。purename导致寻址时只能通过搜索,太耗时。

③地址

		1.特殊的名称
		2.不应暴露给用户(设置转发器)

④唯一名称

		1.生成唯一名称
		(连续整数,时间戳,伪随机数)

⑤用户友好性

		1.牺牲高效性
		2.大小写敏感在数据库使用方面不大友好
		3.交叉链接系统无法清楚引用关系

⑥生命周期

		名称,值的生命周期长于绑定

⑦URL

		1.URL含义:
		http:协议类型,定位解析器
		www.xxx.com:服务器域名
		/xxx/xxx.html:在服务器中查找文件
		2.域名大小写不敏感
		3.若URL包含文件系统信息咋整
		(间接URL跳转)

Lec4 模块化

①模块化好处

		1. 减少设计复杂度
		2. 限制故障传播(错误只能通过消息传播)
		3. 安全隔离

②软模块化的坏处

		1.编程错误导致栈溢出
		2.编译错误导致参数和返回值错误
		3.编译错误,未按约定保护寄存器
		4.被调用者挂起导致进程停滞
		5.访问全局变量不按约定,破坏数据

③C/S架构

		1.基本概念
			*定义:
			client - service
			*交互方式:
			消息
			*表示方式:
			时序图
		2.用途:
		Email服务器,文件服务器(可信中介)

④C/S通信

		1.如何实现:STUB实现
		即通过RPC(远程过程调用,需要写接口)

④RPC的问题:

		* 主要是S和C端的语义不同
		差异产生的原因:
			1. 看不到对方的错误
			2. 丢包
			3. 延时

		如何处理:
			1.计时器捕获RPC异常
			2.提升性能(缓存,流水线,减少时延)

⑤ client端no response问题:(不知道server端是否处理)

		解决:
		1. 没收到应答重复发送消息
		2. 没收到应答重复发送消息,但每个消息serve保证只处理一次
		3. no response后发送消息询问状态

Lec5-7

①虚拟化

		是一套资源管理技术
		让一个计算机上有多个操作系统(运算,存储,通信都是一套操作系统)

②虚拟化好处

		1.隔离物理逻辑错误
		2.对资源充分利用,提高效率

③虚拟化例子

	 	1.虚拟化处理器
	 	(多线程)
	 	2.虚拟化内存
	 	(主存辅存统一编址)

④线程通信

		有界缓冲区
		缓冲区属性:共享
		SEND方法 :插⼊数据,满则等待
		RECEIVE方法 :读取数据,空则等待

⑤虚拟化内存

		1.页映射(虚拟地址=页号+偏移)
		2.页表储存页
		3.线程可以分配自己的虚拟地址空间,地址从0开始
		(进程=线程+地址空间)
		4.PIP技术:编译过程只采用相对地址

⑥虚拟化处理器

		1.线程独占CPU破坏模块化。
		2.线程经常处于等待状态,导致cpu经常处于空转,因此采用多线程共享处理器。
		3.yield的步骤
			1)加锁
			2)保存当前线程状态到thread_table中,设置当前线程为runnable
			3)将另一线程状态设置为running
			4)将thread_table中的状态加载到cpu中
			5)释放锁
		4.中断和异常的区别
		(中断在处理器层,异常在线程层)

Lec8 性能

①性能指标

1.容量
提供的资源(CPU容量=时钟周期)
2.利用率
有用功和负载的比例(CPU利用率=使用/空转)
3.时延
从请求到应答的时间差(流水线发出时间+处理时间+发回时间)
3.吞吐率
单线程处理:1 / 时延
并发处理:无直接关系

②迭代的设计方法

1.关注收益递减法则
如果收益递减且达不成目标,重新审视系统的设计。
2.迭代
查找瓶颈,解决瓶颈。

③解决方法

1.时延
构建快路径慢路径,缓存,并行化

  • 排队模型:平均排队延迟为1/(1-ρ),ρ为服务利用率

2.吞吐率
多级的流水线(不能降低时延,但能提升吞吐率)

  • 交叉存取:用于流水线中,数据指令存在于不同的内存条中,CPU可以并行读取

  • 短时间过载解决方法:排队

  • 长时间过载:1.提高服务容量 2.降低负载(设置上限)

④更多解决瓶颈的方法

1.批处理
合并处理
2.空转
空转等待下一次批处理
3.提前预测投机执行
提前预测程序时延,调整执行顺序

Lec9 网络设计思想

①网络通信的限制

		1.光速有上限
		2.通信环境恶劣
		3.带宽有上限

②传输层协议(transition protocol)

		上中下三层:
		1.向上层提供接口
		2.向对等层和下层隐藏接口

③网络分层

		1.端到端层:提供应用所需接⼝并实现
		2.网络层:完成从当前地点到目的地中间路由的选择(规划)
		3.链路层:点到点之间的数据传输实现(实现)

Lec10 网络实现

①链路层设计

		1.物理传输
		(锁相环,串行比并行快:走线,干扰)
		2.封装成帧
		(7个1,补个1)
		3.错误处理
		(纠错检错码)
		4.链路性质
		(MTU:最大传输单元)
		(BER:传输错误比特占传输总比特百分数)

②网络层设计

		挑战:大小悬殊的 性能指标,流量负载,接入点数量。
		1. 寻址
		2. 路由
		 (路径向量交换,自适应)
		3. 层级结构
		4. 错误管理

③端到端设计

		1. 传输层协议
		2. at-least-once
		3. at-most-once
		4. 对单个消息分片发送,接收端重组
		5.数据完整性
		(checksum进行校验)
		6.性能
		(lock-step性能低,overlapping性能高但复杂)
		7.流顺序保障
		(接收所有消息放入缓冲区,前序来齐了⼀起向上交付)
		8.网络抖动
		(在缓冲区中等待,设置最小时延)
		9.身份识别安全
		(签名验证,加解密)

Lec11 网络系统

①拥塞

		1.拥塞原因
		(排队过载了)
		2.基本解决方案
			1)增加容量
			2)减少负载
					让提交负载小于期望负载,借助飞拥塞阶段摊平

②TCP

		三次握手协议
		【每一方都确定他能听到我的声音】

Lec12 容错和可靠性

①建立可靠系统的三步骤

		1.检错
		2.错误遏制【未发生】
		(强制模块化)
		3.错误屏蔽【已发生】
		(协议,冗余)

②容错设计过程

		1.设计容错模型
		2.模块化(错误遏制)
		3.设计屏蔽机制(错误屏蔽)
		4.反复迭代

③容错设计原则

		1. 显式原则
		2. 迭代设计原则
		3. 安全边界原则
		4. 应用彻底简化原则

⑤容错性指标

		1. MTTF
			可用性 = MTTF/(MTTR+MTTF)
			(运行时间/应运行时间)
		2. 可靠性函数
			(针对某一指标判断是否符合正态分布)
		3. 失效容忍
			系统所能容忍失效的组件个数

⑥冗余

		1.编码冗余
		(海明校验码)
		2.硬件冗余
		(一个组件有多个副本,出错时自动替换)
		3.软件冗余
		(多个应用执行一个程序,体现应用之间的差异性)

Lec13 原子性和一致性

①原子性

		1. 中断程序必须完整执行
		2. 可串行化代表并行操作的正确
		  (更高的要求是串行化后的顺序与串行相同)
		3. 从调用者来看,原⼦操作或者全完成或者未完成,性质有助于错误恢复。
		4. 从并发线程来看,原⼦操作发⽣时间或完全在前或在后,性质有助于并发线程协调。

②All or Nothing

		1. 磁盘错误写入
			1)磁盘最多1个扇区出错,用checksum检错
			2)重启解决
		2. 提交黄金法则
			前提交阶段(准备资源阶段,这个阶段可退回开始状态)
			后提交阶段

③一致性

		主要是读写一致性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值