Skip to content

wangzq0807/smash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SMASH

简介

smash是一个类Unix的内核,实现了基于分段和分页的内存管理,单个进程最大4GB虚拟地址空间,支持minix-v2l文件系统,实现了写实复制(fork),管道等机制。

smash

开发环境

  • Ubuntu 18.04
  • gcc 7.4.0
  • bochs-x 2.6.5+
  • cmake 3.0+

编译内核

cd smash/_build
cmake ../
make

运行

在_build目录下执行

make run

系统调用一览

extern int exit(int code);
extern int fork(void);
extern int read(int fd, char *buf, int count);
extern int write(int fd, const char *buf, int count);
extern int open(const char *pathname, int flags, int mode);
extern int close(int fd);
extern int waitpid(int pid, int *status, int options);
extern int creat(const char *pathname, int mode);
extern int link(const char *oldpath, const char *newpath);
extern int unlink(const char *pathname);
extern int execve(const char *pathname, char *const argv[], char *const envp[]);
extern int chdir(const char *pathname);
extern int mkdir(const char *pathname, int mode);
extern int rmdir(const char *pathname);
extern int pause(void);
extern int getpid(void);
extern int pipe(int fd[2]);
extern int dup(int fd);

参考

License

  • MIT License

一些细节

目录结构

├── boot
│   ├── loader
│   └── mbr
├── _build
├── include
├── kernel
├── tools
└── usr

  • boot : 存放引导程序
  • kernel : 内核代码
  • include : unix标准头文件
  • usr : 应用程序

kernel设计

CMake

  • 使用config.h.in来生成配置选项

GCC

  • 不使用标准库的头文件(用自定义的): -nostdinc

Bochs

  • IO debugger : 在bochsrc中添加"port_e9_hack: enabled=1"
  • GUI Debug : 安装libgtk2.0-dev, 然后添加编译选项--enable-debugger --enable-disasm --enable-debugger-gui,编译bochs. 然后在bochsrc中添加"display_library: x, options="gui_debug""