1. 计算机系统的各种硬件资源是有限的,在现代多任务操作系统上同时运行的多个进程都需要访问这些资源,进程是不允许直接操作这些资源的,所有对这些资源的访问都必须有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用(System Call)。在linux中系统调用是用户空间访问内核的唯一手段。

  2. 一般情况下程序猿通过API,而不是直接通过系统调用来编程。在Unix世界,最流行的API是基于POSIX标准的。

  3. 操作系统一般是通过中断从用户态切换到内核态。中断就是一个硬件或软件请求,要求CPU暂停当前的工作,去处理更重要的事情。比如,在x86机器上可以通过int指令进行软件中断,而在磁盘完成读写操作后会向CPU发起硬件中断。

  4. linux内核中设置了一组用于实现系统功能的子程序,称为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于内核态,而普通的函数调用由函数库或用户自己提供,运行于用户态

  5. 平时说的系统调用开销大,主要是相对于函数调用来说的。

内核Linux系统调用的列表分类

  1. 进程控制
  2. 文件系统控制
  3. 系统控制
  4. 内存管理
  5. 网络管理
  6. socket控制
  7. 用户管理
  8. 进程间通信

strace/dtruss根据某个进程的pid的系统调用情况

  1. linux使用strace命令
  2. mac系统使用dtruss命令

strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间

strace -cp pid

https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html

一次系统调用开销到底有多大?

系统调用

来源:

https://blog.csdn.net/gatieme/article/details/50779184

https://arthurchiao.github.io/blog/system-call-definitive-guide-zh/

http://man7.org/linux/man-pages/man2/syscalls.2.html

系统调用system call以及strace/dtruss的更多相关文章

  1. [Linux C]系统调用(system call)和库函数调用(Library functions)

    Linux 下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions).系统调用实际上就是指最底层的一个调用,在 linux 程序设计里面就是底层 调 ...

  2. Linux 系统调用(system call)

    1 系统调用:(SYSTEM CALL) 操作系统(operating system)内核中有一组实现系统功能的过程,系统调用就是对上述过程的调用.程序员利用系统调用,向OS提出服务请求,由OS代为完 ...

  3. linux C++ 获取服务器外网IP地址(使用系统调用system)

    废话不多说,直接贴代码: #include<string.h> #include<stdlib.h> #include<stdio.h> #include<s ...

  4. xv6的作业翻译——作业1 - shell和系统调用

    Xv6的lecture LEC 1 Operating systems   L1: O/S overview L1:O/S概述   * 6.828 goals 6.828的目标   Understan ...

  5. 使用strace工具故障排查的5种简单方法

    使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调 ...

  6. 自助Linux之问题诊断工具strace

    转  http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序 ...

  7. strace使用详解

    (一) strace 命令   用途:打印 STREAMS 跟踪消息. 语法:strace [ mid sid level ] ... 描述:没有参数的 strace 命令将所有的驱动程序和模块中的所 ...

  8. strace使用详解(转) 分类: shell ubuntu 2014-11-27 17:48 134人阅读 评论(0) 收藏

    (一) strace 命令    用途:打印 STREAMS 跟踪消息. 语法:strace [ mid sid level ] ... 描述:没有参数的 strace 命令将所有的驱动程序和模块中的 ...

  9. strace排除Linux服务器故障

    strace是一个有用的小工具 – 大多数Linux系统默认已经安装 – 可以通过跟踪系统调用来让你知道一个程序在后台所做的事情.Strace是一个基础的调试工具;但是即便你不是在跟踪一个问题的时候它 ...

随机推荐

  1. DVWA-弱会话ID

    本周学习内容: 1.学习web安全深度剖析: 2.学习安全视频: 3.学习乌云漏洞: 4.总结Web应用安全权威指南: 实验内容: 进行DVWA弱会话ID实验 实验步骤: Low 1.打开DVWA,进 ...

  2. Win32 Error Code COM Error Code NTSTATUS的区别、转换

    这三种码其实都是Windows系统错误码,只是对应不同API和使用场景.它们既有区别,又相互有联系. 一.区别和联系 都是32位值 Win32 Error Code和NTSTATUS位域组成相同,但W ...

  3. 64位内核第三讲,Windbg的使用.以及命令

    目录 一丶驱动的调试. 1.线程 2.断点 3.内存查看命令 4.修改内存命令 5.栈相关操作命令 6.进程线程命令(内核命令) 一丶驱动的调试. 编写驱动免不了调试.所以这里介绍一下WinDbg的常 ...

  4. BurpSuite经常拦截firefox报文如success.txt的解决办法

    因为工作需要经常使用Burp对收发报文进行检测,平时习惯使用火狐浏览器,但是火狐浏览器经常进行一些登录状态的检测,导致Burp拦截中出现大量的火狐报文,如http://detectportal.fir ...

  5. SSM 整合 ehcache spring 配置文件报错

    添加 <!-- end MyBatis使用ehcache缓存 --> <cache:annotation-driven cache-manager="cacheManage ...

  6. P1504 积木城堡

    原题链接  https://www.luogu.com.cn/problem/P1504 闲话时刻 这道题是一道 暴力 dp好题,dp 的方法和平常的不大一样,也许是我的脑回路清奇,总之还是值得做一下 ...

  7. content="IE=Edge"是什么意思?

    永远以最新的IE版本模式来显示网页 <meta http-equiv="X-UA-Compatible" content="IE=7">#以上代码告 ...

  8. zabbix与agent端通信加密

    Zabbix版本从3.0之后,开始支持Zabbix server, Zabbix proxy, Zabbix agent, zabbix_sender and zabbix_get之间的通信加密,加密 ...

  9. Docker镜像使用

    当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理和使用本地 Docker ...

  10. JS中注入eval, Function等系统函数截获动态代码

    正文 现在很多网站都上了各种前端反爬手段,无论手段如何,最重要的是要把包含反爬手段的前端javascript代码加密隐藏起来,然后在运行时实时解密动态执行. 动态执行js代码无非两种方法,即eval和 ...