linux 系统调用

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

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

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

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

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

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

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

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

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

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

翻译自: https://opensource.com/article/17/5/beginners-guide-syscalls

linux 系统调用

linux 系统调用_Linux系统调用初学者指南相关推荐

  1. Linux系统初学者指南,观点|Linux 系统调用的初学者指南

    在过去的几年中,我一直在做大量容器相关的工作.先前,我看到 Julien Friedman 的一个很棒的演讲,它用几行 Go 语言写了一个容器框架.这让我突然了解到容器只是一个受限的 Linux 进程 ...

  2. linux wenj 立即生效_Linux系统调用(转载)

    目录: 1. Linux系统调用原理 2. 系统调用的实现 3. Linux系统调用分类及列表 4.系统调用.用户编程接口(API).系统命令和内核函数的关系 5. Linux系统调用实例 6. Li ...

  3. linux初学者指南-基本配置

    LINUX初学者指南 安装Ubuntu 1.注意事项 32位与64位版本的取舍 基于性能.稳定性以及硬件成本的综合考虑,我们只推荐使用64位的Linux发行版,同时建议将个人电脑的内存升级到至少4G以 ...

  4. python 调用linux内核api_Linux系统调用及用户编程接口(API)学习

    Linux系统学习 系统调用指操作系统提供给用户程序调用的一组"特殊"接口,用户程序可以通过这组"特殊"接口来获得操作系统内核提供的服务. 为什么用户程序不能直 ...

  5. linux下的系统调用函数到内核函数的追踪

    Original from: http://blog.chinaunix.net/uid-28458801-id-3468966.html 使用的 glibc : glibc-2.17 使用的 lin ...

  6. ie传递给系统调用的数据区域太小_【Linux系列】系统调用

    在现代OS中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限地访问硬件设备,提供了创建新进程并与已有进程进行通信的机制,也提供了申请OS其他资源的能力. 系统调用在用户空间进程和硬 ...

  7. Linux 中的逻辑卷 LVM 管理完整初学者指南

    这是 Linux 中 LVM(逻辑卷管理)的完整初学者指南. 在本教程中,您将了解 LVM 的概念.它的组件以及为什么要使用它. 我不会仅限于理论上的解释,我还将展示在 Linux 中创建和管理 LV ...

  8. linux net子系统-系统调用层

    linux net子系统打算分下面这几个部分来理解,这些都是我初次理解net子系统,若有出错,还请不吝赐教: 1. linux net子系统-系统调用层 2. linux net子系统-套接口层 3. ...

  9. 向Linux增加一个系统调用或内核模块

    向Linux增加一个系统调用或内核模块 配置环境 获取root权限 sudo su 更新系统 sudo apt-get update 安装相关编译程序包 sudo apt-get install li ...

最新文章

  1. 服务器性能好的笔记本电脑,2020高性价比笔记本推荐-1万以上笔记本电脑排行
  2. 微软苹果服务器宕机,苹果服务器宕机,iPhone用户别做这两项操作,微软特斯拉也中招...
  3. 病理分析常见数据集及常用模型方法总结
  4. 比特币耶稣Roger Ver赠送中国著名经济学家巴曙松1枚比特币现金BCH
  5. [30期] 第一个项目
  6. 简单理解Ext.DomQuery操作CSS3选择器
  7. 用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)
  8. python-ldap “expected a string in the list”
  9. RedHat 6.4下安装Openoffice软件
  10. electron知识点
  11. 最新!图像去噪综合比较研究
  12. mysql慢查询面试题_头条Java岗3面入职:事务+慢查询SQL+Redis+秒杀设计面试题等
  13. 从0开始学Python,0基础小白
  14. 索引 CREATE INDEX
  15. 遇到Python中文目录名问题,未解决
  16. ASP.net网页导出Excel中文乱码解决方案
  17. 随机出题 c语言编程,在Excel中制作单机版随机出题考试系统
  18. Vue前端技术知识整理
  19. 180417 马克飞象使用帮助
  20. App-UI自动化测试(Airtest+Pycharm)

热门文章

  1. 关于kafka的几个问题
  2. 深入理解并发容器ThreadLocal
  3. 【332】Machine Learning
  4. MyBatis Generator(MBG)从Abator迁移
  5. 如何利用 JConsole观察分析Java程序的运行,进行排错调优(转)
  6. Etl之HiveSql调优(left join where的位置)
  7. 手把手教你在.NET中创建Web服务
  8. Php底层深度探索(2)---Apache运行机制剖析 王泽宾
  9. MS SQL数据库备份和恢复存储过程
  10. secureCRT及secureFX安装注册和secureFX中出现中文乱码的处理方式