[笔记]《Linux内核设计与实现》第五章系统调用

原创 2017年01月03日 20:02:35
目前正在通读《Linux内核设计与实现》一书,本文是对第五章<系统调用>的总结。
1.系统调用是什么?
由内核提供的一组接口,在Linux中,系统调用是用户空间访问内核的唯一手段;除异常和陷入外,它们是内核唯一的合法入口。
2.与库函数和应用程序接口(API)有怎样的关系?
3.如何增加系统调用?
3.1 限定词:asmlinkage
所有的系统调用都需要这个限定词。这是一个编译命令,通知编译器仅从栈中提取该函数的参数。
所有的系统调用,在内核中其方法名都被加上前缀"sys_"。
3.2 系统调用号
在Linux中,每个系统调用被赋予一个系统调用号。内核使用系统调用表sys_call_table为每个有效的系统调用指定唯一的系统调用号。每一种体系结构中,都明确定义了这个表。
表项是以64位类型存放的。
3.3步骤:
3.3.1 编写完系统调用,符合设计规范,做必要的兼容和合法性检查;
3.3.2 在系统调用表的最后加入一个表项;从0开始,在表中的位置(index值)就是它的系统调用号;
3.3.3 系统调用必须被编译进内核映象,实现方法就是把它放入kernel/下的一个相关文件中;
4.系统调用的执行:
将系统调用号和参数压入寄存器,然后触发软中断来陷入内核。
应用程序通知内核的机制是靠软中断实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序。此时的异常处理程序实际上就是系统调用处理程序。
版权声明:本文为博主原创文章,未经博主允许不得转载。

[笔记]《Linux内核设计与实现》第一章Linux内核简介

目前正在通读《Linux内核设计与实现》一书,本文是对第一章的总结。 主要内容有: 1.Unix和Linux的关系 2.操作系统和内核的关系 3.Linux内核的特点 3.1 两个名词:单内核...
  • chwnpp2
  • chwnpp2
  • 2016年12月27日 17:58
  • 175

Linux进程状态解析之R、S、D

摘要:Linux是一个分时操作系统,能够在一个cpu上运行多个程序,每个被运行的程序实例对应一个或多个进程,这里介绍一下Linux进程状态。标签:Linux进程状态 Linux是一个多用户,多任...

linux内核设计与实现(第五章)----系统调用

主要内容: 什么是系统调用Linux系统调用实现原理一个ARM体系架构的系统调用实现 1、什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时候,通...

《Linux内核设计与实现》读书笔记(五)- 系统调用

主要内容: 什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现 1. 什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时...

《Linux内核设计与实现》学习笔记3——系统调用

系统调用:内核提供的用户程序与内核进行交互的一组接口。

《Linux内核设计与实现》读书笔记之系统调用

1.系统调用的概念      为了和用户空间上运行的进程进行交互,内核提供了一组借口。透过该接口,应用程序可以访问硬件设备和其他操作系统资源。这组借口在应用程序和内核之间扮演着使者的角色。同时,这组接...

《Linux内核设计与实现》读书笔记(五)- 系统调用

主要内容: 什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现 1. 什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时...

《Linux内核设计与实现》读书笔记(五)- 系统调用

主要内容: 什么是系统调用Linux上的系统调用实现原理一个简单的系统调用的实现 1. 什么是系统调用 简单来说,系统调用就是用户程序和硬件设备之间的桥梁。 用户程序在需要的时...

《Linux内核设计与实现》——第5章(系统调用)

一、通过系统调用与内核通信1. 什么是系统调用 让应用程序受限的访问硬件设备 提供创建新进程并与已有进程通信的机制 提供申请操作系统其他资源能力 在Linux中,系统调用是用户空间访问内核的唯一手...

linux内核设计与实现:系统调用

1) 函数声明中都有asmlinkage限定词,用于通知编译器仅从栈中提取该函数的参数。 2) 系统调用getXXX()在内核中被定义为sys_getXXX()。这是Linux中所有系统调用都应该遵...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[笔记]《Linux内核设计与实现》第五章系统调用
举报原因:
原因补充:

(最多只允许输入30个字)