博客专栏  >  编程语言   >  babyos2

babyos2

从0实现一个简单的类linux操作系统,包括:引导,中断异常及系统调用,内存管理,进程管理及调度,文件系统(inode, 基本文件操作), IPC(pipe,socket,signal),shell,multi-processor,network。

关注
4 已关注
44篇博文
  • babyos2(43) network(9) -- tcp, sock_stream

    前面给babyos实现了简单的UDP,这次准备实现一个非常简单的TCP协议。 TCP提供一种面向连接的、可靠的字节流服务。在一个TCP连接中,仅有两方进行彼此通信。 TCP通过下列方式来提供可靠性...

    2018-05-06 23:27
    40
  • babyos2(42) network(8) -- udp, SOCK_DGRAM, gethostbyname

    前面为babyos2实现了发简单的UDP包,以及解析DNS,但通常DNS解析是用户态通过socket发DNS请求并解析结果,UNIX一般会使用gethostbyname。这次准备实现SOCK_DGRA...

    2018-04-26 19:20
    60
  • babyos2(41) network(7) -- udp, dns resolve

    前面为babyos2实现了简单的raw socket及从用户态ping指定IP地址。而通常意义的ping不但可以ping某个具体的地址,还可以ping baidu.com这种域名。而从内核角度看,要发...

    2018-04-26 19:20
    46
  • babyos2(40) network(6) -- sock_raw, ping

    前面babyos2实现了从内核中构建icmp echo包,并发送出去,以及icmp答复、及收到回复时显示相关信息,但这些都是在内核中处理的。而通常的网络应用都是从用户态发送并接受信息的。很久前实现了通...

    2018-04-26 19:20
    47
  • babyos2(39) network(5) -- icmp echo request, reply, receive

    前面为babyos2 实现了发送IP数据报,但只测试了同一个局域网内发送,而当目的IP跟发送发自己的IP不在同一局域网内时,babyos2会把IP数据报发往网关。而如何测试是否发送成功,首先想到的是p...

    2018-04-26 19:20
    64
  • babyos2(38) network(4) -- ipv4, transmit, receive, checksum, arp retry

    IP:网际协议,I是TCP/IP协议族中最为核心的协议。所有的 TCP、UDP、ICMP及IGMP数据都以I P数据报格式传输。IP协议提供不可靠、无连接的数据报传送服务。1.IP首部最高位在左边,记...

    2018-04-26 19:20
    45
  • babyos2(37) network(3) -- arp, request and reply

    一台主机要将一个帧发送到另一台主机,仅知道这台主机的IP地址是不够的,还需要知道主机在网络中的有效硬件地址。对于TCP/IP网络,地址解析协议(ARP) 提供了一种在IPv4地址和各种网络技术使用的硬...

    2018-04-26 19:19
    86
  • babyos2(36) network(2) -- ethernet layer, send, receive

    前面为babyos2支持了简单的网卡驱动RTL8139,这次准备实现往特定的mac地址发包。1.bufferTCP/IP 详解 卷2,一开始就讲述了mbuf结构及其用法,整个BSD的网络部分大量使用了...

    2018-04-26 19:19
    69
  • babyos2(35) network(1) -- simple RTL8139 nic driver

    要为babyos2实现网络,首先要支持网卡,之前选了RTL8139,为此前面做了PCI相关的一些东西,这次要实现简单的网卡驱动。 1.从PCI获取设备信息 uint32 rtl8139_t::...

    2018-04-26 19:19
    101
  • babyos2(34) PCI Config space and Enumerating PCI buses

    想为babyos2实现网络功能,第一步就是得驱动网卡。选了个比较古老但general的网卡RTL8139,看了一些介绍,发现得先搞PCI。 1.Enumerating PCI Buses 类定义:...

    2018-04-26 19:19
    117
  • babyos2(33) bug fix 2 - bug on mp

    前面为babyos2实现了多核的启动及调度,但测试过程中发现当使用多个核启动时会随机性存在segment fault。 因为bug出现机率较小,在shell.cc中写了如下测试程序: stat...

    2018-02-24 23:48
    91
  • babyos2(32)multi-processor,startup APs, mp schedule

    前面解析了MP config, 这次准备为babyos2实现启动其他processor。 解析config的时候可以看到,其中一个processor被指定为bootstrap processor(B...

    2018-04-26 19:19
    193
  • babyos2(31)multi-processor configuration

    要为babyos2实现MP(multi-processor),首先得解析MP configuration。找到mp configuration的一种方法是通过mp floating pointer. ...

    2018-04-26 19:19
    151
  • babyos2(30) APIC, local APIC, I/O APIC

    Intel从Pentium开始引入APIC(Advanced Programmable Interrupt Controller),以适应MP(Multiple processor)环境。 Loca...

    2018-04-26 19:18
    169
  • babyos2(29) socket(AF_LOCAL), IPC

    这几天为babyos2实现了通过socket进行进程间通信,即AF_LOCAL相关功能,主要参考linux 1.2。 socket常翻译为套接字,也有些地方翻译成插口,挺形象。把socket想象成类...

    2018-04-26 19:18
    118
  • babyos2(28) strange problem, strange solve

    这两天看socket AF_UNIX(AF_LOCAL) 相关的代码,准备为babyos2实现socket 进程间通信。linux 内核代码虽然是C写的,但很多地方用了面向对象的思想,socket代码...

    2018-01-21 18:27
    167
  • babyos2(27) pipe

    为babyos2实现pipe进程间通信方式。 一个pipe表现为两个文件描述符fd[2],对应两个打开的文件,一个只读,一个只写。当通过fork创建子进程的时候,会拷贝父进程打开的文件,所以也持有这...

    2018-04-26 19:18
    119
  • babyos2(26)fs(4), lock

    之前为了简化问题,兼之之前没有实现semaphore,文件系统的操作未加锁。上次为了实现读取硬盘时睡眠等待,实现了一个sem类,所以为babyos2文件系统加锁的时机已经成熟。 主要用类三个锁: ...

    2018-04-26 19:18
    108
  • babyos2(25) block dev, semaphore,sleep when wait for hard disk

    babyos2前面实现的读取ide硬盘虽然靠中断来通知读取/写入完成,但等待过程中采用的是循环等待,尽管能工作,但不合理,所以准备实现睡眠等待的方式。 增加下面几个类/结构: hard_disk_...

    2018-04-26 19:18
    92
  • babyos2(24) simple shell (3),printf, cd, mkdir, ln, rm, cp, mv, cat

    前面实现了基本的shell执行命令,并实现了ls,这次准备为babyos2实现几个基本的命令。当然为了打印更简单,先实现一个printf。 1.printf int userlib_t::sp...

    2018-04-26 19:18
    120

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部