Chestnut


  • 首页

  • 分类

  • 归档

  • 标签

hw2-shell

发表于 2017-04-16

hw2 shell

目标

hw2主要是根据xv6,学习linux的系统调用,实现一个简化版的shell.
目标可以分解为:

  • 阅读源代码
  • 添加执行命令的功能
  • 添加IO重定向
  • 添加管道功能

part1: command

命令的种类

命令参数个数

首先,一个命令的参数总数是限制的,xv6 shell规定一个命令的参数最多只能有10个.
#define MAXARGS 10

阅读全文 »

introduction to algorithms note1

发表于 2017-04-11

<Introduction to algorithms>笔记

摘要

  <introduction to algorithms>覆盖全面,包含算法/数据结构/基本的离散数学知识;伪代码清晰简洁,适合有一定编程基础用算法实现;注重算法的推导和证明,以及对应的算法设计与分析能力;同时配套MIT课程,资料丰富.这里记录我CLRS的学习笔记,按主题章节对应分类, 以问题-答案形式总结.

Part1 基础

算法定义/基本的算法设计/递归的复杂度/概率与随机算法

Chapter1 什么是算法?

算法:
$\require{AMScd}$
\begin{CD}
input @>\text{computing procedure}>> ouput
\end{CD}

  • 解决一类问题的计算过程, 一个具体问题-实例
  • 算法最重要的特性: 效率
阅读全文 »

lab1-boot-pc

发表于 2017-04-10

Lab1 启动pc

lab1分为三部分

1.熟悉x86汇编语言,qemu x86模拟器,启动pc
2.分学习6.828内核的boot loader部分。
3.深入研究6.828内核JOS的初始化部分,该部分代码在kernel目录下

1. 实验代码下载

1
2
git clone https://pdos.csail.mit.edu/6.828/2016/jos.git lab
cd lab

2. part1 启动pc

启动 qemu

make qemu
make qemu
现在JOS内核只有两条命令来监视内核。help和kerninfo
kerninfo

阅读全文 »

hw1-boot-xv6

发表于 2017-04-09

hw1: boot xv6

摘要

6.828课程包括JOS实验和xv6系统两部分,其中JOS是从xv6中抽取的学习环境,学习xv6(阅读和修改)把握操作系统的全局, 实践JOS(project)则深入os的核心构建,相互辅助.
xv6学习主要通过xv6-book以及编译xv6实现, homework1即是启动xv6系统.

answer

1. xv6源码

1
git clone git://github.com/mit-pdos/xv6-public.git

2. 编译

1
2
cd xv6
make

生成xv6.img镜像文件, 在qemu上模拟运行.

阅读全文 »

lab0-build-env

发表于 2017-04-08

lab 0: 实验环境搭建

toolchain

在进行os实验之前, 要求有前置的基础:

  1. C: 实现语言, 汇编: 阅读x86_64的汇编代码
  2. linux: 实验系统环境, 主要是command line下的命令操作
  3. git: 版本控制与代码提交
  4. gcc, gdb, id: 编译源代码与调试
  5. qemu: x86 硬件模拟器, 选择2为Bochs

toolchain 安装

1.linux: 我的环境是linux mint 18.0 serena(基于ubuntu)
2.git: linux自带, 配置连接github

1
2
3
git -h
git add/commit/push/checkout
git remote add

3.gcc, gdb安装

1
2
3
4
sudo apt-get install build-essential
sudo apt-get install gcc-multilib
gcc -h
gdb -h

在Linux下已经一套适合6.828课程的工具链, 输入如下命令进行测试

1
2
3
4
5
$ objdump -i
output: line2 elf32-i386
\
$ gcc -m32 -print-libgcc-file-name
output: /usr/lib/gcc/x86_64-linux-gnu/version/32/libgcc.a

4.qemu 安装
a. 依赖库安装:
sudo apt-get install libsdl1.2-dev, libtool-bin, libglib2.0-dev, libz-dev, libpixman-1-dev.
b.由于qemu编译xv6的问题, mit对qemu进行了修改, 用git下载源码:
git clone https://github.com/geofft/qemu.git -b 6.828-2.3.0
c.编译qemu

1
2
3
cd qemu
./configure --disable-kvm --target-list="i386-softmmu x86_64-softmmu"
make && make install

5.其它问题
a. Windows下可采用Cygwin或者virtualbox + ubuntu image, 但更推荐linux

参考链接

  1. 6.828 toolchains
  2. lab guide
  3. qemu manual
  4. gdb manual
1…345
Chestnutme

Chestnutme

In a Nut-Universe

22 日志
8 标签
Github
© 2017 - 2018 Chestnutme
由 Hexo 强力驱动
主题 - NexT.Mist