smash 类 unix 内核

开源网站开源项目 24-04-12 13:50:53

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

项目演示:

编写应用程序

目前已开发的 API 一共 18 个:

//进程退出externintexit(intcode);//fork一个进程,父进程返回子进程的id,子进程返回0externintfork(void);//读文件externintread(intfd,char*buf,intcount);//写文件externintwrite(intfd,constchar*buf,intcount);//打开文件externintopen(constchar*pathname,intflags,intmode);//关闭文件externintclose(intfd);//等待指定进程结束externintwaitpid(intpid,int*status,intoptions);//创建文件externintcreat(constchar*pathname,intmode);//创建硬链接externintlink(constchar*oldpath,constchar*newpath);//删除硬链接或删除文件externintunlink(constchar*pathname);//执行一个可执行程序externintexecve(constchar*pathname,char*constargv[],char*constenvp[]);//变更当前路径externintchdir(constchar*pathname);//创建目录externintmkdir(constchar*pathname,intmode);//删除目录externintrmdir(constchar*pathname);//切换到其他进程执行externintpause(void);//获取当前进程idexternintgetpid(void);//创建管道externintpipe(intfd[2]);//复制文件描述符externintdup(intfd);

以 helloworld 为例,要编写一个应用程序首先要在usr/CMakeLists.txt文件中追加一行:

add_executable(helloworldhelloworld.c${CORE_SRCS})

括号内第一项 helloworld 指的是可执行文件名称

后面的项 helloworld.c 和 ${CORE_SRCS} 是编译所需的源文件

所有应用程序都应该包含${CORE_SRCS},因为这里面定义了系统API。

然后就可以打开helloworld.c进行编辑。

跟在linux环境编写c语言代码类似:

#include"stdio.h"intmain(intargc,constchar**argv){printf("Hello,World!\n");return0;}

然后就可以编译了,编译方法请参照项目README

注:printf()本身不是一个系统调用,而是通过write()系统调用实现的一个函数。

感谢

最后,感谢赵炯博士的宝书:《Linux内核完全剖析-基于0.12内核》

前五章对我帮助很大,尤其是第四章,

如果没有这本书,以我蹩脚的英语,不可能看懂x86的保护模式。

[smash 类 unix 内核]相关推荐
Tingle JS 模块插件

Tingle JS 模块插件

Tingle 是采用原生JS编写的模块插件。主要具有以下特性: 无需其他依赖包 可以通过CSS完全自定义 CSS过……...

MyCAT 数据库中间件

MyCAT 数据库中间件

MyCAT 是一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据……...

HBuilder HTML5 的 Web 开发 IDE

HBuilder HTML5 的 Web 开发 IDE

HBuilderX,H是HTML的首字母,Builder是构造者,X是HBuilder的下一代版本。我们也简称HX。HX是轻如编辑器……...

MaxKey 单点登录认证系统

MaxKey 单点登录认证系统

MaxKey单点登录认证系统,谐音马克思的钥匙寓意是最大钥匙,是业界领先的企业级IAM身份管理和认证产品,支……...

Reactor 异步应用基础库

Reactor 是一个基于 JVM 之上的异步应用基础库。为 Java 、Groovy 和其他 JVM 语言提供了构建基于事件和……...

今日开源
  1. tIDE Java 开发工具

    tIDE是一个非常小(1M左右)、快速(无需安装)、强大、易于使用的Java 开发工具。tIDE完全采用Java开发,需要JRE6 或更高的运行环境,但可以用于开发JDK5,1.4甚至是1.2的 应用程序。tIDE支持通过插件来扩展/增强……

    开源软件 2024-06-28

  2. around 权限管理解决方案

    around 权限管理解决方案

    around是一个权限管理解决方案,它基于 springboot 实现,遵循阿里 java 开发手册,代码实现相对于 springmvc 来说更加优雅。缓存可以不基于任何缓存复杂臃肿的缓存系统,但是简单的实现了自带的 redis 缓存。在配……

    开源软件 2024-06-28

  3. Fatal Facebook 模板库

    Fatal 是 C++11 及以上的软件快速原型库,提供非常广泛的模板元编程工具,用来反射和对元数据进行操作。 构建单元测试 $clang++-Wall-std=c++11-Ipath/to/fatal\-opath/to/output/binarypath/to/test/or/benchmark……

    开源软件 2024-06-28

返回顶部小火箭