Replies: 91 comments 26 replies
-
几位(cjy,wyd,zyj, lyf)关于syscall的分工如何划分? |
Beta Was this translation helpful? Give feedback.
-
关于process/thread control block的设计,目前是否已经确定了?在哪些方面还没确定? |
Beta Was this translation helpful? Give feedback.
-
@Azure-stars 我把文件系统添加到你的进程里时遇到了一个问题,ArceOS的依赖关系如下图,如果要在axtask里调用axfs里的结构和接口的话,会出现一条axfs->axsync->axtask->axfs的循环依赖。 graph TD;
axalloc
axconfig
axdisplay
axdriver
axfs
axhal
axlog
axnet
axruntime
axsync
axtask
axsync-->axdisplay
axdriver-->axdisplay
axhal-->axdriver
axalloc-->axdriver
axconfig-->axdriver
axdriver-->axfs
axsync-->axfs
axtask-.dev.->axfs
axconfig-->axhal
axalloc-->axhal
axlog-->axhal
axhal-->axnet
axsync-->axnet
axtask-->axnet
axdriver-->axnet
axalloc-->axruntime
axconfig-->axruntime
axdriver-->axruntime
axhal-->axruntime
axlog-->axruntime
axfs-->axruntime
axnet-->axruntime
axdisplay-->axruntime
axtask-->axruntime
axtask-->axsync
axalloc-->axtask
axhal-->axtask
axconfig-->axtask
axlog-->axtask
|
Beta Was this translation helpful? Give feedback.
-
我现在已经完成了process和task模块的解耦,当前我的代码中依赖关系如下: graph TD;
axsync-->axdisplay
axdriver-->axdisplay
axhal-->axdriver
axalloc-->axdriver
axconfig-->axdriver
axdriver-->axfs
axsync-->axfs
axtask-.dev.->axfs
axconfig-->axhal
axalloc-->axhal
axlog-->axhal
axhal-->axnet
axsync-->axnet
axtask-->axnet
axdriver-->axnet
axalloc-->axruntime
axconfig-->axruntime
axdriver-->axruntime
axhal-->axruntime
axlog-->axruntime
axnet-->axruntime
axdisplay-->axruntime
axtask-->axruntime
axprocess-->axruntime
axtask-->axsync
axtask-->axprocess
axfs-->axprocess
axhal-->axprocess
axalloc-->axtask
axhal-->axtask
axconfig-->axtask
axlog-->axtask
即axprocess模块依赖于axtask等模块,在此基础上你将axfs添加到axprocess中就可以完成进程中文件描述符的支持。 |
Beta Was this translation helpful? Give feedback.
-
关于你提到的线程控制块中有指向进程的弱指针,这里我做了一层抽象。我在线程控制块中仅保留了所属进程的ID,而没有保留指针。在进行线程回收时,我发现当前线程回收的调用接口仅有 相比于之前的逻辑,回收操作放在了进程控制块而非线程控制块,从而完成解耦。 对于不需要进程支持的系统,仅需要将线程对应属性置为0即可。 |
Beta Was this translation helpful? Give feedback.
-
关于支持进程情况下的任务启动参考(以下仅以单核情况出发,多核情况暂未考虑) /// 开始进行调度,我们先执行gc任务,通过gc任务逐个执行并收集RUN_QUEUE中的任务
/// 所以先切换到gc对应的任务上下文即可
pub fn start_schedule() {
// 若是第一次执行任务,curr应当为gc
let curr: CurrentTask = current();
#[cfg(feature = "preempt")]
curr.set_preempt_pending(false);
curr.set_state_running();
unsafe {
let prev_ctx_ptr = TaskContext::new_empty();
let next_ctx_ptr = curr.ctx_mut_ptr();
// The strong reference count of `prev_task` will be decremented by 1,
// but won't be dropped until `gc_entry()` is called.
(*prev_ctx_ptr).switch_to(&*next_ctx_ptr);
}
} 之后在 |
Beta Was this translation helpful? Give feedback.
-
进程支持下的应用程序启动
|
Beta Was this translation helpful? Give feedback.
-
更新当前依赖关系图:将mem虚存与process分离开,process作为一个容器存储task,mem,fs等资源,同时将文件系统接入arceos中。 graph TD;
axsync-->axdisplay
axdriver-->axdisplay
axhal-->axdriver
axalloc-->axdriver
axconfig-->axdriver
axdriver-->axfs
axsync-->axfs
axtask-.dev.->axfs
axtask-->axfs_os
axfs-->axfs_os
axconfig-->axhal
axalloc-->axhal
axlog-->axhal
axhal-->axnet
axsync-->axnet
axtask-->axnet
axdriver-->axnet
axalloc-->axruntime
axconfig-->axruntime
axdriver-->axruntime
axhal-->axruntime
axlog-->axruntime
axnet-->axruntime
axdisplay-->axruntime
axtask-->axruntime
axprocess-->axruntime
axtask-->axsync
axtask-->axprocess
axfs_os-->axprocess
axhal-->axprocess
axprocess-->axsyscall
axsyscall-->axruntime
axalloc-->axtask
axhal-->axtask
axconfig-->axtask
axlog-->axtask
axhal-->axmem
axalloc-->axmem
axmem-->axprocess
说明:axfs是对fat32文件系统的交互模块,而axfs-os是将axfs移植进内核的中转模块。在axfs-os中实现了包括文件描述符等一系列适用于内核文件操作的数据结构。 |
Beta Was this translation helpful? Give feedback.
-
需求描述arceos现在是unikernel模式,要给arceos增加宏内核模式,且支持aero操作系统的用户态程序(包括图形界面程序)。 目标
规划
|
Beta Was this translation helpful? Give feedback.
-
进度报告:分析arceos实现。 |
Beta Was this translation helpful? Give feedback.
-
@xushanpu123 5月31日前的问题:syzkaller 用到了哪些Linux syscall? 请给出分析回答。 |
Beta Was this translation helpful? Give feedback.
-
进度报告:arceos与宏内核对比。
|
Beta Was this translation helpful? Give feedback.
-
进度报告:实现一个最小系统。
|
Beta Was this translation helpful? Give feedback.
-
进度报告:最小系统实现总结,准备开始实现进程管理。
|
Beta Was this translation helpful? Give feedback.
-
进度报告:开始实现进程管理。
|
Beta Was this translation helpful? Give feedback.
-
网址:
开发日志:
参考:
如有兴趣一起来探索,请联系我 yuchen AT tsinghua.edu.cn OR 微信 id chyyuu
Beta Was this translation helpful? Give feedback.
All reactions