资料介绍
软件简介
smash 是一个类 Unix 的内核,实现了基于分段和分页的内存管理,单个进程最大 4GB 虚拟地址空间,支持 minix-v2l 文件系统,实现了写实复制(fork)、管道等机制。
项目演示:
编写应用程序
目前已开发的 API 一共 18 个:
// 进程退出 extern int exit(int code); // fork一个进程,父进程返回子进程的id,子进程返回0 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); // 获取当前进程id extern int getpid(void); // 创建管道 extern int pipe(int fd[2]); // 复制文件描述符 extern int dup(int fd);
以 helloworld 为例,要编写一个应用程序首先要在usr/CMakeLists.txt文件中追加一行:
add_executable (helloworld helloworld.c ${CORE_SRCS})
括号内第一项 helloworld 指的是可执行文件名称
后面的项 helloworld.c 和 ${CORE_SRCS} 是编译所需的源文件
所有应用程序都应该包含 ${CORE_SRCS},因为这里面定义了系统API。
然后就可以打开helloworld.c进行编辑。
#include "stdio.h" int main(int argc, const char **argv) { printf("Hello,World!\n"); return 0; }
然后就可以编译了,编译方法请参照项目README
注:printf()本身不是一个系统调用,而是通过write()系统调用实现的一个函数。
感谢
最后,感谢赵炯博士的宝书:《Linux内核完全剖析-基于0.12内核》
前五章对我帮助很大,尤其是第四章,
如果没有这本书,以我蹩脚的英语,不可能看懂x86的保护模式。
- ACIS内核和parasolid内核的来龙去脉与比较
- 基于成对学习和图像聚类的肺癌亚型识别 4次下载
- 华为鸿蒙系统内核源码分析上册 17次下载
- 微内核与宏内核的比较与分析 11次下载
- Linux内核的源代码漫游详细资料说明 15次下载
- 【HarmonyOS】智能硬件开发3-HarmonyOS内核设计 11次下载
- LINUX内核源代码情景分析上册PDF电子书免费下载 89次下载
- UNIX系统的程序设计接口函数介绍《UNIX环境高级编程》电子教材免费下载 4次下载
- 如何在UNIX中构建DSPBIOS程序的详细资料概述 13次下载
- DSPBIOS内核的介绍和如何启动DSPBIOS内核的详细概述 13次下载
- UNIX安全构架经验 0次下载
- Unix_Linux编程实践教程代码 0次下载
- UNIX高级编程(中文版)下载 0次下载
- UNIX教程网络篇 0次下载
- UNIX操作系统使用手册
- 一个用rust制造的新的现代操作系统Aero 1476次阅读
- 总结20个超好用的 Unix/Linux 命令指令集 2847次阅读
- Linux与UNIX到底有关系和区别 3302次阅读
- 米尔科技内核芯片概述 2535次阅读
- 嵌入式Linux轻量级图形应用库应该如何设计 604次阅读
- 什么是微内核_微内核的发展历史 1.1w次阅读
- 微内核的优缺点 2.9w次阅读
- 那些常用的 Unix 命令,你不知道的功能! 2180次阅读
- Linux内核与Android的关系 4504次阅读
- Unix是什么呢?比较Unix和Linux 5017次阅读
- 10 个增加 UNIX/Linux Shell 脚本趣味的工具 4785次阅读
- Linux 与 Unix 的对比分析 4043次阅读
- 关于 fork 和 exec 是如何在 Unix 上工作的 4895次阅读
- 内核模块的原理以及其模块编写 4347次阅读
- linux最常用的20个命令介绍 7964次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多