摘要: 一、实验要求 实现一个简单的shell,能够执行内置命令,执行前端任务、后端任务,以及任务控制。 需要实现如下几个功能: •支持以下内置命令: –quit命令终止shell。 –jobs命令列出所有后台作业。 –bg<job>命令通过发送SIGCONT信号重新启动<job>,然后在后台运行。<job 阅读全文
posted @ 2020-06-03 20:18 skyliulu 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 一、实验要求 实现一个缓存模拟器,返回缓存的命中,未命中,淘汰的次数 二、预备知识 缓存的组织结构 (S、E、B、m) m:存储器地址位数,M=2^m为不同的地址数量; S:高速缓存组数量,S=2^s,S=1时为全相联高速缓存; E:一个高速缓存组中的缓存行数量,E=1时为直接映射缓存,E>=2时为 阅读全文
posted @ 2020-06-03 20:16 skyliulu 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 一、实验要求 实现如下几个问题: 对于int的问题,只能使用基本的位运算,对于float的,可是使用额外的控制语句。 二、预备知识 整型的表示方法: 无符号数: 有符号数: 无符号数和有符号数直接相互转换: 浮点数表示方法: 一般浮点数采用IEEE 754标准表示 V=。 S为符号位,占1bit。 阅读全文
posted @ 2020-05-26 15:46 skyliulu 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 线程是操作系统调度的基本单位,它可以视为进程的一个控制流。一个进程包含1个到多个线性,进程的第一个线程随着进程的启动而创建,也就是进程的主线程。线程无法独立于进程存在。 每个线程拥有自己的线程栈,用于存储自己的私有数据。线程之间共享进程的许多资源,包括代码段、数据段、堆、信号处理函数、进程已经打开的 阅读全文
posted @ 2020-05-20 16:53 skyliulu 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 进程是运行程序的抽象,进程和程序分别描述了程序的静态形式和动态特征,进程是操作系统分配资源的基本单位 一、进程的创建 fork() pid_t fork(void); 父进程通过fork函数创建新的运行的子进程。子进程的拥有父进程用户地址空间的一个副本,包含父进程的代码段数据段、堆、共享库和用户栈。 阅读全文
posted @ 2020-05-20 16:51 skyliulu 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 测试通过Raft 需要持久化存储的信息为 current Term votedFor Log[] 只要这三个值有变化,就存储到磁盘 主要是以下四种情形 1. 成为candidate/follower时(currentTerm和votedFor变化) 2. follower投完票时(votedFor变 阅读全文
posted @ 2020-05-18 09:57 skyliulu 阅读(371) 评论(0) 推荐(0) 编辑
摘要: RAFT实现之Log Replication 测试通过 实现要点 1.AppendEntriesRPC 接收者(follower,candidate)除了实现图中的1~5,还需要注意以下几点: 收到更大的term,或者candidate收到leader的心跳包,转为follower //收到更高的t 阅读全文
posted @ 2020-05-13 19:46 skyliulu 阅读(228) 评论(0) 推荐(0) 编辑
摘要: RAFT实现之leader election 测试全部通过 leader选举基本流程 所有节点以follower启动 follower的选举时钟超时,转为candidate candidate向其他节点发送投票请求,如果收到过半节点的投票,则成为leader leader周期性向其他节点发送心跳包以 阅读全文
posted @ 2020-05-13 19:39 skyliulu 阅读(320) 评论(0) 推荐(0) 编辑