操作系统期末作业
要求
- 基于 https://e.coding.net/sylg/os/os.git 代码,完成列表中的任意一个题目,以 git commit 的形式推送到服务器。
- 最多 5 人一组完成一个题目。开始任务前请 git pull,如果发现已经有其他组完成了题目并且结果正确,请选另一个完成;如果已经有别的组完成了并且结果不正确,可以纠正错误,提交作为作业。
- git commit 说明的格式:“学号 题目编号 <换行符><换行符> 1.编译方法<换行符> 2 运行、测试方法” 学号需要带上全组学号
- 根据题目难度+结果正确性+平时出席综合评分。
仓库管理要求
选题
请发送电子邮件到 [email protected] 选择题目,要求主题为 [操作系统] [选题] [题目编号]
,正文请附属小组成员,首个小组成员将被认定为负责人
如一个3人组选择1号题,那么邮件格式为
主题:[操作系统] [选题] [1]
正文:
2003060xxx 张三
2003060xxx 李四
2003060xxx 王五
其中,张三将被认定为负责人
若多组选题冲突,则以邮件发送时间优先
提交
请妥善保管代码,commit格式错误将被回滚,以此造成的代码丢失仓库管理员将不负责
请勿提交编译后的文件
完成
完成作业后,请发送电子邮件,要求主题为 [操作系统] [完成] [题目编号]
,请使用选题时的邮箱账号发送,若邮箱账号不匹配将被视为垃圾邮件
注意
选题仅作为参考,如果优先提交commit,则以commit提交时间为准,可以抢题
即,本页选题内容仅为选题意向,避免冲突。若想选的题目已经被选题,依旧可以进行开发,并且抢先提交commit的情况,最终题目选择和成绩评定以优先commit者为准。
评分细则
难度 | 结果正确 | 有无缺席 | 评分 |
---|---|---|---|
低 | 不完全正确 | 有 | 不及格 |
低 | 不完全正确 | 无 | 不及格 |
低 | 正确 | 有 | 不及格 |
低 | 正确 | 无 | 及格 |
中 | 不完全正确 | 有 | 不及格 |
中 | 不完全正确 | 无 | 及格 |
中 | 正确 | 有 | 及格 |
中 | 正确 | 无 | 中等 |
高 | 不完全正确 | 有 | 中等 |
高 | 不完全正确 | 无 | 良好 |
高 | 正确 | 有 | 良好 |
高 | 正确 | 无 | 优秀 |
题目
- ⬜可选
- ☑️已选
- ✅已完成
编号 | 难度 | 需求 | 备注 | 状态 | 负责人 |
---|---|---|---|---|---|
1 | 低 | 添加 basic.c,在 linux 上编译运 行,验证 C 基本语法 | A. 定义 EXPECT(表达式,目标值) 宏。宏的功能是打印测试表达式以及测试结果。如果表达式的值不等于目标值,测试失败,测试成功; B. char* str=”abc”;char array[]=”abc”; EXPECT(sizeof(str),2) EXPECT(sizeof(array), 3) |
☑️ | 2003060405王诗鹭 |
2 | 低 | 为 basic.c 添加测试用例 | EXPECT(sizeof(strlen(str)),3) EXPECT(sizeof(strlen(array)), 3) EXPECT((str+1), ’b’) EXPECT((str+2), ’c’) EXPECT((str+3), 0) EXPECT(array[0], ‘a’) EXPECT(array[3], 0) EXPECT((array+1)==array[1], 1) EXPECT((array+2)==&(array[2]), 1) EXPECT(((int*)array+2)==&(array[2]), 1) |
☑️ | 2003060404 王明霞 |
3 | 低 | 为 basic.c 添加测试用例;生成 basic.c 汇编代码 | EXPECT(((int*)array+2sizeof(int))==&(array[2]), 1) EXPECT((array+2sizeof(char))==&(array[2]), 1) EXPECT(((int*)array+2sizeof(char))==&(array[2]), 1) 看汇编语言 array + 2 与 (int*)array+2 的区别 |
⬜ | |
4 | 低 | 为 basic.c 添加测试用例 | int* count() { static cnt; return &cnt;} EXPECT(*count += 1, 1); EXPECT(*count, 0); EXPECT(*count, 1); EXPECT(*count++, 2); EXPECT((*count)++, 2); EXPECT((*count)++, 3); |
☑️ | 2003060312张翱翔 |
5 | 低 | 为 basic.c 添加代码 | int callee(int a, int b) { 代码打印堆栈内容;return a+b;} int caller(){ 代码打印堆栈内容;return callee(1, 2); } 比较 _stdcall _cdcall 两种方式声明 callee 的执行结果 |
⬜ | |
6 | 低 | 完善 basic.c 编译命令 | 测试如下代码如何能通过编译: #define ONE 1 const unsigned int 1 inline int callee(int a, int b) { return a+b;} /* TODO: */ // TODO: |
⬜ | |
7 | 低 | 添加 timing.c | 设计代码比较 inline 函数与普通函数的执行时间; 设计代码比较 memcpy 与 memmove 的执行时间; 设计代码测试 malloc 的时间开销 |
⬜ | |
8 | 低 | 为 hello.c 增加命令行 option | 输入 hello -l HHH 把大写字母转成小写打印 输入 hello -u hhh 把小写字母转成大写打印 |
☑️ | 2003060306李鑫 |
9 | 低 | 为 hello.c 增加互动命令以及信 号处理 | 如果不带选项执行,打印命令提示: u 小写转大写;l 大写转小写;e 退出; 收到 ctrl+c 退出 |
☑️ | 2003060302刘展延 |
10 | 低 | 验证所有提交的关于 1-9 的答 案的正确性 | 添加 report.md 文件,格式: git log 的 SHA, 学号, 是否正确 |
☑️ | 2003060213马俊俊 |
11 | 中 | 改进 fork.c | fork.c 存在一个子进程需要从多层嵌套函数栈返回问题,请纠正; 添加管道,父进程专门负责 fork 子进程并统一打印结果。 |
✅ | 2003060417沈楠 |
12 | 中 | 改进 fork.c | 添加共享内存,子进程将结果写入共享内存,父进程专门负责fork 子进程并统一打印共享内存中的结果。 所有子进程查找结束才打印。 | ✅ | 2003060207刘京京 |
13 | 中 | 改进 fork.c | 启动一个进程负责共享内存管理,支持不同进程(包括主进程)通过管道有序插入、查询,子进程的结果要按照从小到大顺序插入。 | ☑️ | 2003060409-王攀 |
14 | 中 | 添加 mem_mgr.c | 改进共享内存管理进程的通信机制,改用 domain socket 通信,从而代码与主进程以及计算子进程解耦。独立编译运行。 | ☑️ | 2003060411胡佳位 |
15 | 中 | 改进 fork.c | 设计通信机制帮助父进程检测子进程状态,如果子进程崩溃,则重新启动子进程。 | ☑️ | 2003060103黄靖壹 |
16 | 中 | 改进 mutex1_main.c | 实现多线程查找质数,结果按照从小到大顺序打印;分析、测试程序最大可用范围(堆内存、栈内存、可用线程数限制)和执行时间 | ✅ | 2003060425 蒋朝明 |
17 | 中 | 改进 mutex1_main.c | 主线程负责打印命令提示,接受输入查找范围,调用计算线程计算,运算结束后打印结果。 | ☑️ | 2003060112 杨森 |
18 | 高 | 验证所有提交的关于 11-17 的 答案的正确性 | 添加 report.md 文件,格式: git log 的 SHA, 学号, 是否正确 |
☑️ | 2003060223赵炜 |
19 | 高 | 添加 shell 或 python 脚本用来自 动测试代码可编译,自动测试 11-17 基本功能可用 | 在 README.md 中注明用法 | ☑️ | 2003060319 郭德英 |
20 | 高 | 基于mongoose写一个质数查找 服务程序 | 添加 mongoose.h, mongoose.c(来自 mongoose 程序包), server.c 文件, 合入 fork.c 中的父进程功能。 网络请求,例如:https://**/search?2-12 返回 JSON 格式{num:4,list:{2, 5, 7, 11}} |
✅ | 2003060423卢相宇 |
21 | 高 | 写一个质数查找服务程序前端 与服务程序联调 | 添加 prime.html。要求有输入框输入查询范围,查询结果显示在页面上。 | ☑️ | 2003060120沈旭 |
22 | 高 | 基于mongoose写一个分布式质 数查找服务程序 | 主服务可以请求其他服务器上的服务程序完成部分查找任务 | ☑️ | 2003060121李龙岐 |
23 | 高 | 带负载均衡的分布式质数查找 服务程序 | 计算服务增加接口支持主服务查询进度(负载),主服务把计算任务分段,根据计算服务的空闲情况分配任务(比如只有3 个计算服务,指数查找任务被分配成了 4 段,最后一段需要等待一个服务空闲了再分配) | ✅ | 2003060103黄靖壹 |
24 | 高 | 基于mongoose写一个质数数据 管理服务 | 专门管理已经查找到的质数,结果定时存储到硬盘,接受远程查询、插入请求。 查 询 命 令 格 式 支 持 最 简 单 SQL 语 句,例如:“https://**/search?select*from2to100 插入命令格式可自行定义 |
☑️ | 2003060222钟阔 |
25 | 高 | 集成 20-24 结果,建立一个质数 查找计算服务集群,添加 docker 脚本编译运行 | ☑️ | 2003060130 林裕坤 | |
26 | 高 | 管理代码库,添加脚本用来自动 测试 20-24 基本功能可用。 | ☑️ | 2003060321 翟雪睿 |
评论