linux 系统调用_Linux系统调用初学者指南

 2023-09-18 阅读 25 评论 0

摘要:linux 系统调用 在过去的几年中,我一直在使用容器进行大量工作。 早些时候,我看到了朱利安弗里德曼 ( Julien Friedman)的一次有趣的演讲,他在几行Go语言中编写了一个准容器。 它给了我一个“哈哈”的时刻,让我了解到容器只不过是

linux 系统调用

在过去的几年中,我一直在使用容器进行大量工作。 早些时候,我看到了朱利安·弗里德曼 ( Julien Friedman)的一次有趣的演讲,他在几行Go语言中编写了一个准容器。 它给了我一个“哈哈”的时刻,让我了解到容器只不过是Linux进程而对它们所运行的机器的视野有限。

建立此受限视图涉及Golang的syscall软件包中的许多调用 。 最初,我只是以其面值为基础,但是过了一会儿,我想剥离洋葱的下一层,以查看这些syscall的含义以及它们的工作方式。 我将分享我在OSCON上的演讲中学到的知识。

UNIX/LINUX? 顾名思义, 系统调用是系统调用,它们是您可以从用户空间向Linux内核发出请求的方式。 内核会为您完成一些工作,例如创建一个进程,然后将控制权交还给用户空间。

有一种通用的机制可以使所有系统调用都转换为内核,这由libc库处理。 用户空间代码设置一些寄存器,包括它要进行的系统调用的ID以及需要传递给系统调用的任何参数。 它触发一个“陷阱”以将控制权转移到内核。

这就是用户空间代码发出内核请求的方式,但是Linux也具有伪文件系统,该文件系统允许内核将信息传达给用户空间。 内容看起来像普通目录和文件。

/ proc目录是一个很好的例子。 向内看,您会发现有关计算机上运行的进程的各种有趣信息。 在某些情况下,例如cgroup (控制组),用户空间可以通过写入这些伪文件系统下的文件来配置参数。

向linux内核添加系统调用? 当您使用容器时,这特别有趣,因为主机的/ proc包含有关所有容器化进程的信息。 这包括环境变量,它们也存储在/ proc中 伪文件系统,这意味着您的主机可以访问所有正在运行的容器的环境。 如果通过环境变量将证书或数据库密码之类的机密传递到容器中,则可能会带来安全后果。

许多从事普通应用程序的程序员可能不会觉得自己经常使用syscall。 实际上是这样,因为即使日常活动(例如制作文件或更改目录)也涉及Linux上的syscall。

您不必成为系统程序员就可以享受syscall的乐趣!

如果您想了解更多信息,Liz将 在德克萨斯州奥斯汀举行的OSCON 2017上介绍 Syscall入门指南 如果您有兴趣参加会议,请 在注册时 使用以下折扣代码 PCOS

shell调用函数。翻译自: https://opensource.com/article/17/5/beginners-guide-syscalls

linux 系统调用

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/73440.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息