`
kjkhi
  • 浏览: 185160 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Linux系统调用

阅读更多
系统调用可以简单说是用户程序使用系统资源的接口,但是用户程序一般都不是直接调用系统调用,而是通过系统API、C库等间接调用,执行内陷命令,进入核心态执行。

在Linux系统中,每个系统调用被赋予一个系统调用号。这样,通过这个独一无二的编号就可以关联一个系统调用。用户空间程序需要调用系统调用时,只需要给出其对应的系统调用号就可以。内存记录了系统调用表中所有已经注册过的系统调用的列表,存储在sys_call_table中。

用户程序通过软中断实现内陷操作。通过引发一个异常来促使系统切换到内核态去执行异常处理程序。在x86上,内陷之前,需要通过eax寄存器把系统调用号传递到内核。sys_call()函数通过给定的系统调用号与NR_syscalls做比较来检查其有效性。如果它大于或者等于NS_syscalls,该函数就返回-ENOSYS。否则执行相应的系统调用。一般情况下,系统调用都需要传递参数,在x86下,通过ebx,ecx,edx,esi和edi传递依次为1到5的参数。

系统调用必须检查它们所有的参数是否合法。(因为这是要在内核态运行的)。Linux系统一般提供两个方法来完成必须的检查和内核空间与用户空间的数据的来回拷贝。copy_to_user()/copy_from_user(),这俩个方法都需要三个参数,(src,dst,length)。

绑定一个自定义的系统调用,如:
asmlinkage long sys_getPID(){return current->tgid}

首先我们需要把sys_getPID加入系统调用表中,见entry.s文件。依次得到系统调用号,把系统调用号加入asm/unistd.h文件中。最后我们要实现这个系统调用,可以把它放进kernel/sys.c或者kernel/sched.c文件中。
0
0
分享到:
评论

相关推荐

    实验(五)Linux系统调用的编程技术 - 副本.doc

    Linux系统调用是操作系统提供的一种核心服务方式,允许用户态的程序安全地访问操作系统功能。在Linux中,系统调用是通过软中断机制实现的,通常由特定的汇编指令如`int`触发。系统调用接口是API(应用程序编程接口)...

    linux 系统调用ppt

    ### Linux系统调用详解 #### 系统调用的基础概念 **系统调用**是Linux内核与用户空间之间通信的桥梁,它是操作系统提供给应用程序的一系列接口,用于请求操作系统执行特定任务,如读写文件、创建进程或获取当前...

    Linux系统调用.pdf

    Linux系统调用概述 Linux系统调用是用户空间访问内核的唯一手段,它们是内核唯一的合法入口。通知内核的机制是通过软中断的机制实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序。此时的异常处理...

    linux系统调用手册

    【Linux系统调用手册】是理解操作系统内核与应用程序交互的关键文档,它包含了所有可以直接从用户空间调用的内核服务。系统调用是操作系统提供给用户态程序访问内核功能的接口,允许用户程序执行如创建进程、读写...

    linux系统调用过程分析

    ### Linux系统调用过程分析 #### 一、系统调用的基本概念 1. **系统调用的定义** 在操作系统(OS)的核心中,都设置有一组用于实现各种系统功能的子程序,并将它们提供给用户程序调用。每当用户在程序中需要OS提供...

    实验五Linux系统调用的编程技术

    Linux系统调用是操作系统提供的一种服务机制,允许用户态的程序安全地访问内核功能。在实验五“Linux系统调用的编程技术”中,主要目标是理解和掌握系统调用的工作原理,包括如何通过API调用系统服务以及参数传递的...

    Linux 系统调用与实例分析.pdf

    Linux系统调用是操作系统提供的一种机制,允许用户空间的程序请求内核提供服务。这些服务包括进程管理、文件系统操作、网络通信等。Linux系统调用通过一系列预定义的接口与操作系统交互,以实现对硬件资源的管理和...

    Linux 系统调用权威指南

    ### Linux系统调用权威指南 #### 一、引言 《Linux系统调用权威指南》是一篇详尽介绍Linux系统调用机制的文章。系统调用是操作系统中最核心的部分之一,它是用户空间应用程序与内核之间通信的主要接口。通过系统...

    Python-systemf一个brainfuck解释器支持Linux系统调用

    **Python-systemf:一个Brainfuck解释器支持Linux系统调用** 在编程世界中,Brainfuck是一种极简主义的编程语言,旨在挑战程序员的创新思维,而不是用于实际开发。它的语法非常简单,只有8个基本操作符,但在实现...

    Linux系统调用劫持:技术原理、应用及检测.pdf

    Linux系统调用劫持是一种黑客技术,用于在操作系统内核层面植入后门,以保持对系统的非法访问。这种技术常被用于制作rootkit,rootkit是攻击者用来隐藏其活动和保留管理员权限的工具集合。在Linux环境中,尤其是基于...

    常用linux系统调用函数集合

    本集合涵盖了16篇关于常用Linux系统调用函数的文章,旨在深入理解和熟练运用这些功能。 1. **进程管理**:在Linux中,`fork()`函数用于创建新进程,`exec()`系列(如`execl()`, `execlp()`, `execle()`, `execv()`,...

    Linux系统调用列表.pdf

    Linux系统调用列表.pdf

    linux 系统调用视频讲解

    在Linux操作系统中,系统调用是用户空间程序与内核进行交互的重要机制。它们提供了标准接口,使得应用程序能够请求操作系统执行各种低级别的任务,如创建进程、读写文件、网络通信等。本视频讲解将深入剖析Linux ...

    Linux系统调用列表[汇编].pdf

    Linux系统调用列表[汇编].pdf

    Linux系统调用分析.pdf

    "Linux系统调用分析" Linux系统调用是操作系统核心部分, plays a crucial role in the interaction between the kernel and user-space applications. This article provides an in-depth analysis of the Linux ...

    Linux系统调用.ppt

    Linux系统调用 Linux系统调用是指用户程序和操作系统之间的接口,用户程序可以通过系统调用来请求操作系统提供的服务。系统调用是用户程序和硬件设备之间的桥梁,使得用户程序可以请求操作系统提供的服务,而不需要...

Global site tag (gtag.js) - Google Analytics