Barrelfish研究——环境搭建

Barrelfish研究——环境搭建

最近要在Barrelfish上做一些工作。这是一个众核操作系统。由苏黎世理工大学和微软研究院一起开发,目前处于研究阶段,还不成熟。这个系统未来对于分布式领域以及云计算领域可能会有很大的贡献。更多的信息请看官方网站。

现在搭建环境,主要参考 wiki.barrelfish.org。wiki中有一个详细的安装过程,但是过程中遇到了不少曲折,在此做简单记录:

准备阶段:

首先从官网下载了最新版的(截至目前是release2012-11-03), 另外需要安装gcc, ghc, ghc-path,qemu。
gcc应该大家都装着,官方说gcc-4.6也可以,但是我试过在启动阶段会遇到奇怪的问题。于是换到了gcc-4.5。为了稳定起见,建议安装gcc-4.5。
ghc最好是6.10.4版本,所以不能用Ubuntu中自带的高版本的ghc,最好从haskell的官网下载binary。

ghc-path也要自己安装,并且要安装与ghc对应版本的。从http://hackage.haskell.org/packages/archive/ghc-paths/0.1.0.5/ghc-paths-0.1.0.5.tar.gz下载安装包,安装方法为:

runhaskell Setup.hs configure --ghc

runhaskell Setup.hs build

runhaskell Setup.hs install

(参考http://www.haskell.org/ghc/docs/7.0.2/html/Cabal/builders.html)

至于qemu,建议下载0.14.0版本进行编译安装。
到这里,基本的准备工作就以及完成了。

安装阶段:

这个过程与wiki说的基本一致。
cd Barrelfish
mkdir build
cd build

../hake/hake.sh -s .. -a x86_32(生成Makefile)
make
make sim
(执行qemu。看到一份ppt里面这一步用sudo, 其实不用,用了反而可能会有各种问题)
如果没有问题的话,这一步最后会进入一个类似bash的一个简单的shell程序中,名为fish。

运行程序:

跟着wiki继续走,跑hello world程序。hello world源码路径为 Barrelfish/usr/examples/xmpl-hello/,其中有一个hello.c是它的源码,还有一个Hakefile文件用来描述编译规则,另外还有一个menu.lst用来描述启动加载。
给build/symbolic_targets.mk文件的MODULES_COMMON变量中,加一行:
/sbin/examples/xmpl-hello \
然后重复上面的两步
../hake/hake.sh -s .. -a x86_32(生成Makefile)
make
在build/menu.lst中加一行:
module /x86_32/sbin/examples/xmpl-hello(如果你忘记了内容,可以在usr/examples/xmpl-hello/menu.lst中找到)
接下来
make sim
开机就可以看到hello world打印的结果了。
也可以在fish中执行
./x86_32/sbin/examples/xmpl-hello
运行hello world
亦或者用oncore命令指定再某个核上执行
oncore 0 ./x86_32/sbin/examples/xmpl-hello

另一个例子是msg and rpc类似
类似hello world给build/symbolic_targets.mk文件的MODULES_COMMON变量中,加入:
sbin/examples/xmpl-rpc_rpc \
sbin/examples/xmpl-rpc_msg \

在build/menu.lst中加入:
module /x86_32/sbin/examples/xmpl-rpc_msg core=1 server
module /x86_32/sbin/examples/xmpl-rpc_msg core=0 client
module /x86_32/sbin/examples/xmpl-rpc_rpc core=1 server
module /x86_32/sbin/examples/xmpl-rpc_rpc core=0 client

编译,启动。
启动的时候,就会看到相应的结果了。当然,同样也可以在启动后,用oncore分别加载。

问题:

目前,Barrelfish上的程序目前只能和内核一同编译,伴随启动执行,很不方便。是否可以像linux一样,独立编译,动态加载运行呢。这可能将会成为我们的工作。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目前主流的操作系统架构主要有以下几种: 1. 单体式架构(Monolithic Architecture):这种架构下,整个操作系统的所有功能模块都运行在同一个内核空间中,如传统的Windows和Linux操作系统。这种架构简单直接,但由于所有模块都在同一个内核空间运行,容易导致性能和稳定性问题。 2. 微内核架构(Microkernel Architecture):这种架构将操作系统的核心功能和服务进行分离,只保留最基本的功能在内核中,其他功能通过进程或者服务运行在用户态。常见的微内核操作系统有QNX和L4。 3. 外核架构(Exokernel Architecture):外核架构将内核的功能进一步裁剪,只提供硬件和资源的抽象接口,应用程序可以直接管理和控制硬件资源。这种架构提供了更高的灵活性和性能,但也增加了应用程序的复杂性。例子包括Xen和Barrelfish。 4. 虚拟化架构(Virtualization Architecture):这种架构通过虚拟化技术,在一台物理机上同时运行多个虚拟机,每个虚拟机可以独立运行一个操作系统。常见的虚拟化平台有VMware和VirtualBox。 5. 容器化架构(Containerization Architecture):这种架构将应用程序及其所有依赖项打包成一个容器,容器可以在不同的操作系统上运行,并且具有良好的隔离性和可移植性。常见的容器化平台有Docker和Kubernetes。 以上是目前主流的操作系统架构,不同的架构适用于不同的应用场景和需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值