操作系统学习(十四) 、中断描述符表和中断描述符
一、中断描述符表 中断描述符表IDT将每个异常或中断向量分别与它们的处理过程联系起来。与GDT和LDT表类似,IDT也是由8字节长描述符组成的一个数组。与GDT不同的是,表中第一项可以包含描述符。为了构成IDT表中的一个索引值,处理器把异常或中断的向量号*8。因为最多只有256个中断或异常向量,所以IDT无需包含多于256个描述符。IDT中可以含有少于256个描述符,因为只有可能发生的异常或中断才需要描述符。不过IDT中所有空描述符项应该设置其存在位标志为0。 IDT表可以驻留在线性地址空间的
Libevent源码剖析(一)之接口详解
Libevent V2.1版本源码剖析,准备先将提供接口进行分类,根据接口逐步深入源码。 事件集合处理接口(struct event_base) 事件集合处理接口存在两种初始化的方式,一种是直接创建默认的接口,另外一种是根据配置对象创建相应的集合,需要用户额外的维护一个配置对象。 Libevent提供的默认初始化版本: struct event_base *event_base_new(void) Functionality:创建一个新的event_base,为Libevent维护一个事件集合
【转载】挺立在孤独、失败和绝望的废墟上
孤独,没有办法。谁能理解你内心深处的感受呢?谁能和你一起分享成长路上的喜怒哀乐呢?这是一种无奈,更是一种无言的痛苦。 失败,不可避免。成功从来不可能一蹴而就的。所以才有一句话是:失败是成功之母。 绝望,失败、失败还是失败……这是考验我们意志力的时候了,这是我们人生中做出重大抉择的时候了。这个决定将会影响我们以后人生,也会改变我们的人生轨迹。尼采说:“人是一根绳索,架于超人与禽兽之间。那是危险的前进,危险的回顾,危险的战栗与停止,下面是无底的深渊。”来吧!站起来吧!挺立起你的脊梁,绝望在你的字典
练习题12:酒店价格
题目描述 酒店房间的价格录入是通过时间段来录入的,比如10月1日至10月7日800元,10月8日至10月20日500元,请实现以下函数int[][] merge(int[][] dateRangePrices),输入是某个酒店多个日期段的价格,每个日期段(终止日期大于等于起始期)和对应的价格使用长度为3的数组来表示,比如[0, 19, 300], [10, 40, 250]分别表示从某天开始第1天到第20天价格都是300,第11天到第41天价格都是250,这些日期端有可能重复,重复的日期的价格
UDT源码剖析(七)之Packet
CPacket 基础数据结构 ``` class CPacket { public: int32_t& m_iSeqNo; // 序列号 int32_t& m_iMsgNo; // 信息号 int32_t& m_iTimeStamp; // 更新RTT的Timestamp int32_t& m_iID; // 目的地Socket ID char*& m_pcData; // 数据 static const int m_iPktHdrSize; // 头部信息(16字节) protected:
UDT源码剖析(八)之Cache
在UDT源代码中,作者使用了std::vector和std::list组装了一个缓存系统,本来在纠结要不要列出来,没有啥技术含量,不过为了完整性,还是列出来吧... CCache class CCache
{
private:
std::list<T*> m_StorageList; //定义一个链表,链表中的指针指向缓存的对象(真实存储位置)
typedef typename std::list<T*>::iterator ItemPtr; //指向链表结点的ite
printf 中的 %.*s
printf("message arrived %.*s\n", length, str); .*代表length 当 str 长度大于等于 length,打印出 str 前 length 的字符 当 str 长度小于 length,打印出整个 str 的字符
UDT源码剖析(十)之Channel
封装UDP SOCKET,使其成为UDT数据的发送通道,所有的UDT SOCKET都通过这种类型来进行数据发送。为了完整性,咱们接着分析哈~ CChannel 基础数据结构: ``` class CChannel { private: int m_iIPversion; // IP version int m_iSockAddrSize; // socket address structure size (pre-defined to avoid run-time test) UDPSOCKE
UDT源码剖析(九)之CCC
这是整个UDT的算法核心:拥塞控制。我也没太搞明白,不过还是打算列出来,理解的不争取的地方,还请多多指正哈~ CCC class CCC
{
virtual void init() {} //在UDT connection建立起来的时候被调用
virtual void close() {} //在UDT connection关闭的时候被调用
virtual void onACK(int32_t) {} //在收到ACK的时候被调用
virtual vo
UDT源码剖析(十一)之SendQueue And RecvQueue
SendQueue与RecvQueue在代码中与UDP SOCKET相关。在用户将想要发送的数据提交给Buffer之后,由Buffer将数据打包,根据拥塞控制提供的时间计算,在合适的时间提交给SendQueue进行发送。在接收到数据包之后,通过事件驱动的模式通知用户从RecvQueue中拿去数据包。 删除了交会连接模式的代码。 SendQueue与RecvQueue依赖于几个通用的数据结构,先列出来哈,可能会与前面的描述有重复,怕来回查找麻烦,索性全部列出来: CMultiplexer:每个U
UDT源码剖析(十二)之ACKWindow
通过窗口记录发送时间以及ACK接收情况。 CACKWindow class CACKWindow
{
private:
//是三个独立的数组
int32_t* m_piACKSeqNo; // 记录ACK序列号
int32_t* m_piACK; // 记录数据序列号
uint64_t* m_pTimeStamp; //记录ACK的发送时间
int m_iSize; // ACK窗口的
TCP/IP详解V2(六)之TCP协议
TCP输入 tcp_input void
tcp_input(m, iphlen)
register struct mbuf *m;
int iphlen;
{
register struct tcpiphdr *ti;
register struct inpcb *inp;
caddr_t optp = NULL;
int optlen;
int len, tlen, off;
register struct tcpcb *tp
TCP/IP详解V2(五)之TCP协议
##TCP处理中的辅助函数 ###tcp_template 功能A:为TCP和IP首部创建一个模板 struct tcpiphdr *
tcp_template(tp)
struct tcpcb *tp;
{
register struct inpcb *inp = tp->t_inpcb;
register struct mbuf *m;
register struct tcpiphdr *n;
if ((n = tp->t_template) == 0) {
m = m_g
微信小游戏flappy bird填坑
1. 在浏览器中写es6语法的js时候,没有bable转译时。有inport和export时,type一定要写成module,而且import js时候一定要写全称。 1 // type的属性设为module
2 <script type="module" src="game.js"></script>
3
4 //引入时要用写全称
5 import {Main} from "./Main.js"; 持续更新
微信小游戏flappy bird开发详解
一.设计 二.创建框架类 微信小游戏中game.js和game.json是必备的两个文件。 首先创建js文件夹中存放base、player、和runtime三个文件夹用来存放相关类,以及一个导演类。 1.base base中存放为基本类,包括变量缓冲器(DataStore)变量缓存器,方便我们在不同的类中访问和修改变量。资源文件加载器(ResourceLoader),确保canvas在图片资源加载完成后才进行渲染。Resources类,以及精灵类(Sprite)精灵的基类,负责初始化精灵加载的
[BZOJ1455] 罗马游戏 (左偏树||并查集)
题目描述 罗马皇帝很喜欢玩杀人游戏。 他的军队里面有n个人,每个人都是一个独立的团。最近举行了一次平面几何测试,每个人都得到了一个分数。 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻。 他决定玩这样一个游戏。 它可以发两种命令: Merger(i, j)。把i所在的团和j所在的团合并成一个团。如果i, j有一个人是死人,那么就忽略该命令。 Kill(i)。把i所在的团里面得分最低的人杀死。如果i这个人已经死了,这条命令就忽略。 皇帝希望他每发布一条kill命令,下面的将军就把被杀的人的分数
使用 typescript 开发 Vue
基础配置: 1. 准备一个使用 vue-cli 生成的项目 2. 使用 npm 一建安装基础配置 npm i -S @types/node typescript vue-class-component vue-property-decorator vuex vuex-class [email protected]
// vue-cli 的 webpack 大版本为 3
// 所以不支持 ts-loader 4以上 3. 修改配置文件 3.1 文件 bulid/webpack.base.conf.j
今日推荐
周排行