轻松实现Rust系统入门,实战编译器开发

生也有涯,知也无涯。这篇文章主要讲述轻松实现Rust系统入门,实战编译器开发相关的知识,希望能为你提供帮助。
??  立即下载??

??立即下载??
Rust是一门很有前途的明星语言,但同时又以高难度、高门槛而著称,劝退了不少自学者和有需求的开发人员。本课程将带你从基础入手,通过平缓的学习曲线和丰富的案例,并以编译器作为实战项目,让你熟练掌握 Rust 的应用,并有能力解决实际开发中的各种复杂问题。

今天的文章是关于系统编程的。Rust 作为系统编程语言,自然是很适合进行系统编程。


现代计算机是一个非常复杂的创造物,经过几十年的研究和发展演变成现在的状态。有时它看起来像是黑魔法。这里面没有魔法,只有科学。然而,一些像 Alan Turing,Charles Babbage,Ada Lovelace,John von Neumann 和许多其他人的头脑是不可思议的,因为他们使计算机成为可能。


现在,让我们深入学习系统编程的基础知识:


进程是什么?
它们是如何创建和执行的?
查看 Rust 中的一些代码示例,并将它们与 C 进行比较
在开始编写代码之前,我们将从操作系统主要组件的最底层开始构建。如图 1 所示——任何计算机的最低级别是 Hardware,其次是运行在裸机上的 Kernel 模式。这就是像 Linux 这样的操作系统所在的位置。



所有操作系统的主要概念是进程。一个进程基本上是一个正在运行的程序。你可以把它想象成一个抽屉,里面包含有关这个特定程序的所有信息。有些进程在计算机启动时开始运行,有些在后台运行,有些由用户通过 Shell 调用和交互。所有进程都有一个 id。当系统启动时,将启动第一个进程。这个进程的 id 为1,称为 init。在此之后,init 将调用其他进程等等。当我们在 shell 中键入一个命令供 OS 执行时,系统应该创建一个新的进程来运行编译器。当进程完成编译后,它将进行一个系统调用来终止自己。
【轻松实现Rust系统入门,实战编译器开发】在 UNIX 系统中,每个新进程都是某个父进程的子进程。进程创建是通过克隆父进程来完成的,这被称为 forking (图1-b)。每个进程有一个父进程,但可以有多个子进程。进程的结构类似于树,其中 init 是根,这意味着它位于层次结构的顶部。
在进程创建之后,除了父进程有一个非 0 ID 号,子进程的 ID 等于 0 外,其他方面父进程和子进程是相同的。接下来,系统用一个新程序替换子进程的执行。当进程完成其目的时,它将正常地终止并退出(自愿的)。该进程也可以由于一个错误退出或杀死另一个进程(非自愿)。


    推荐阅读