从零开始写操作系统(基于XV6):echo重写与并发进程控制功能构思

像这种教学目的操作系统(例如XV6 Minix)是不能小看的。

比如上古传说Linus Torvalds大神在上Minix操作操作系统课时突发奇想!

在芬兰的赫尔辛基大学用Minix操作平台建立了一个新的操作系统的内核,他把它叫做Linux。

我也希望走走人家大神当年走的路.

 

关于xv6 的编译,为了能够重写拓展xv6需要将修改后的xv6重新编译

1.要将 xv6 的源码拷贝到linux 系统下!不能是windows系统。然后cd 如xv6文件夹。执行make 命令!

2 然后执行chmod 777 ./sign.pl 

3 执行make clean

4 最后执行 make 可生成xf.img  xv6.img 两个文件即可!

把这些文件拷贝出来,用boch 运行就可以了。

 

关于echo功能

xv6 运行一次echo 功能一下

这个功能由echo.c文件负责,

echo.c源码如下:

#include "types.h"
#include "stat.h"
#include "user.h"

int
main(int argc, char *argv[])
{
int i;

for(i = 1; i < argc; i++){
puts(argv[i]);
puts(" ");
}
puts("\n");
exit();
}

假如想小小修改一下echo 把echo 改成单词倒置比如输入hello world!

变成olleh !dlrow 单词顺序不变化 单词字母顺序倒置可以这样:

#include "types.h"
#include "stat.h"
#include "user.h“

void f(char *s)

{
 if(*s||(*s)==' ')
{
   f(s+1);
   putchar(*s);

}

}

int
main(int argc, char *argv[])
{
int i;

for(i = 1; i < argc; i++){

f(argv[i]);
//puts(argv[i]);
puts(" ");
}
puts("\n");
exit();
}

 可以先在linux 下测试一下功能然后打包进去重新编译。

 

如果希望设计哲学有所突破,需要参考xv6并发设计

1.Xv6中并发进程有几种状态,在源码中分别以什么常量代表,试解释每种状态的意义。

 

2.Xv6中PCB是以什么方式存放的,链表还是数组?系统 最多允许同时运行多少个进程?

3.Xv6是否支持多核cpu? 如果支持的话,是通过哪个数 据结构支持的?

4.系统启动的第一个进程,其入口函数在哪个文件第几 行?它主要实现什么功能?

转载于:https://www.cnblogs.com/zzzPark/p/6638021.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值