TinyOS

作者: HAPPYers | 来源:发表于2019-12-11 22:02 被阅读0次

分享一个自写的,模仿Linux0.11系统的一个小型操作系统。
此源码比较简短,功能虽然有限,但是可以对Linux系统基础的工作原理有较为广泛的认识.
该系统基于bochs和qemu运行,相关的配置可以参考项目的README
项目地址

系统实现了

  • 基本的内存管理
  • 线程调度
  • 有输入(键盘中断)和输出
  • 基本系统调用(getpid,printf等等)
  • 基本的磁盘驱动
  • 基于ext2的简单文件系统

分支

  • master分支是稳定版本
  • harddisk分支建议使用,会不断维护。

运行方式

在Linux或者wsl(子系统)中
下载源码

git clone https://github.com/pcy190/TinyOS.git

安装依赖项目

sudo apt install bochs qemu -y
sudo apt-get install build-essential module-assistant  
sudo apt-get install gcc-multilib g++-multilib 

编译运行

make run

目录介绍

  • kernel/main.c
    这是内核启动完后的主进程的程序。可以在这里添加主要的逻辑代码
  • boot/
    内核启动的引导代码。mbr引导到loader去加载内核。
  • fs/
    文件系统目录
  • device/
    设备驱动目录。包括时钟中断,键盘中断,磁盘中断的处理
  • lib/
    基本C语言中字符串,内存,读入输出的函数实现
  • thread/
    线程调度与管理
  • userprog/
    用户态和内核态切换。包括系统调用的syscall的声明。

hd80M.img文件是附加的磁盘,文件系统在此格式化并建立。
要运行的自定义二进制文件,可以通过dd或者syscall来写入读入并运行。
hd.img是系统内核所在磁盘,如果不存在会自动新建。

相关文章

  • TinyOS

    分享一个自写的,模仿Linux0.11系统的一个小型操作系统。此源码比较简短,功能虽然有限,但是可以对Linux系...

  • TinyOS·基本接收

    接上篇TinyOS·基本发送来写这篇TinyOS的基本接收。 1、头文件,申明要用到的头文件、常量,定义数据包的格...

  • TinyOS·基本发送

    之前有玩过一些TinyOS的东西,最近又来开始写一些TinyOS的代码,发现这个玩意儿的细节好多,一不留神连编译都...

  • contiki协议总结

    之前做传感网一直在tinyOS系统下,contiki只是稍微了解,近来实验室突然接到contiki下的一个项目,所...

网友评论

      本文标题:TinyOS

      本文链接:https://www.haomeiwen.com/subject/eossyctx.html