内核网络堆栈的Go 语言实现与分析

2021-07-11 08:16:10柴艳娜
电子设计工程 2021年13期
关键词:语言

柴艳娜

(长安大学信息与网络管理处,陕西西安 710064)

计算机是现代日常生活的一种必需品,其高效可靠的运行需要依赖于一套稳健无缺陷(Bug-free)的操作系统。现代操作系统都会使用内核(Kernel)来对硬件进行管理,因此,可以说内核的安全稳定决定了人们与计算机相处的体验。内核中的缺陷(Bug)将可能使用户的应用程序甚至操作系统本身变得不可靠[1]。

大多数成熟的操作系统内核都是用C 语言实现的,C 语言因其允许高度自由控制内存使用等诸多低级程序操作特性,从而成为最受欢迎的的内核开发语言[2]。这种高度的自由也会带来一些代价,比如内存释放两遍的错误、数组越界的错误以及死锁[3]。同时它也不能防止数据类型的错误解析,保证不了类型的安全性。C 语言也无法方便高效地使用现代多核处理器的全部性能。

如果用Go 等高级语言来开发内核,则可能规避掉很多上述问题。为此,该文用Go 语言实现了内核网络堆栈子系统,进行了可行性研究,并设计实验进行验证。

1 Linux系统网络堆栈

Linux 的网络堆栈(Network Stack)是其内核的一个子模块,如果在源代码基础上从零开始编译Linux内核,可以通过menuconfig 对该模块进行选择和修改配置。位于Linux/net 目录的源代码是Linux 官方自带的默认网络堆栈实现[4]。

Linux 网络堆栈模型如图1 所示。

图1 Linux网络堆栈

网络堆栈共分为6 层,每一层都分别执行不同的处理任务,对于流入、流出数据都会进行处理。最顶层的应用层是操作系统用户空间(User Space)的一部分,用户常驻使用的应用程序如浏览器、IM 软件等便工作在这一层。……

登录APP查看全文

猜你喜欢
语言
诗之新,以语言创造为基
中华诗词(2023年8期)2023-02-06 08:51:28
语言是刀
文苑(2020年4期)2020-05-30 12:35:30
让语言描写摇曳多姿
多向度交往对语言磨蚀的补正之道
日常语言与播音语言
新闻传播(2016年10期)2016-09-26 12:15:04
语言技能退化与语言濒危
我有我语言
论语言的“得体”
语文知识(2014年10期)2014-02-28 22:00:56
Only Words慎用你的语言
大自然的语言