Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2024-秋冬季开源操作系统训练营第三阶段总结-代俊勃 #656

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: 2024秋冬季开源操作系统训练营第三阶段总结报告-代俊勃
date: 2024-12-02 14:54:15
tags:
---

## 第三阶段
很高兴能进入第三阶段,三周的课程由浅入深,石磊老师讲的非常好,可惜中间第二周第三周比较忙,就只是听完了课程,实验上完成了第一周的前两课的实验,以及尝试去做了挑战题目,实现了一个内存池分配算法。后续会继续学习。

## Unikernel

一种组件化的内核构建方式,根据需求可以快速实现轻量级的部署,可以说是微服务部署的理想容器。

### print_with_color

对已有的println功能实现扩展,通过ANSI码控制颜色,写了一个基于时间戳的随机函数实现每次输出时颜色随机,通过随机的开始颜色和结束颜色计算每个字符的颜色实现渐变效果。

### 支持HashMap

直接引入了hashbrown库,接管之前调用的std的collections。

### bump内存分配算法

这个比较简单,用两个指针分别从两端分配byte和页,当然缺点很明显,已经回收的资源无法继续分配,只有全部回收后才会将指针归零。

### 实现特定的内存分配算法

这里首先是利用bump算法进行尝试,结果达到了63轮,之后加入了回收空间记录list,提高不多,也分别尝试自己实现了Buddy和Tlsf抽了一个文件,但是build一直过不去。

## 学习心得

通过这次学习,对Unikernel的理解加深了很多,第四阶段也打算做这一个阶段的实习,学完之后还要系统的学习一下linux操作系统。
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
title: 2024秋冬季开源操作系统训练营第四阶段总结报告-代俊勃
date: 2024-12-22 10:57:42
tags:
---

第四阶段我的选题是项目1 在Unikernel 中支持Linux应用
第一周是base阶段,通过几个实验深刻了解程序切换,程序运行的基本原理,使用了一种函数调用的方式取代特权集切换。
第二周要实现对于Linux应用的支持,或者说是基于linux下的libc的内核态调用的函数调用实现,归其本质也就是要将我们的函数表结合到生成的汇编里去。
这个阶段主要是基于musl——一种精简的libc,c程序基于musl的基础库进行编译,也相当于执行是时候运行的是musl中的代码,所以我们需要对这块进行替代即可。
第三周一直在忙别的事情,就没有继续深入下去,这是比较遗憾的,通过参加这次训练营也暴露了我对于很多基础知识的不了解,这也是转专业人员的通病,我正在将目光放回到这些基础课上,希望下期训练营能够顺利毕业!