Linux核心设计依据(七)系统调用
我理解的系统调用,用户进程和内核是内核提供了一个接口进行交互。除了异常和下降外。内核系统调用是唯一合法入境。像/proc还通过系统调用访问。
系统调用的意义:
- 让用户进程受限地訪问硬件设备
- 为用户空间提供一种硬件的抽象接口
- 提供了创建新进程并与已有进程进行通信的机制
- 提供了申请操作系统其它资源的能力
- 保证系统稳定可靠,避免应用程序恣意妄为
在x86上用int 0x80进行软中断的触发。运行第128号异常处理程序system_call()。
- 实现自己定义的系统调用并编译进内核映像。能够放在kernel/sys.c文件里,也能够根据详细功能放在相关的文件里。实现格式例如以下:
asmlinkage long sys_mysyscall(void)
{
...
}
- 在系统调用表(entry.S)的最后增加一个表项。本例中为.long sys_mysyscall,其相应的系统调用号(338)为其在文件里的次序。
- 对于所支持的各种体系结构,系统调用号都必须定义于asm/unistd.h中——#define __NR_mysyscall 338。
long open(const char *filename, int flags, int mode);
的形式调用此系统调用。也能够不靠库支持:
#define NR_open 5
_syscall3(long, open, const char*, filename, int, flags, int, mode);
用宏的方式,这样在我们的程序中,不用引入C头文件,直接使用open()就可以。
- exec
- fork
- open
- reboot
- getpid
- read
- write
- ioctl
- 系统调用由操作系统核心提供。执行于内核状态,而库函数或自己定义函数由用户调用,执行于用户态。
- 部分libc库函数的实现借助系统调用(如printf调用了write这种系统调用),而还有一些则不会使用系统调用(如strlen, strcat, memcpy等)。
版权声明:本文博主原创文章,博客,未经同意不得转载。
Linux核心设计依据(七)系统调用的更多相关文章
- Linux核心设计依据(六)该块I/O一层
块设备是能随机存取装置固定大小的数据表设备.如硬盘:字符设备(如串口和键盘)它是按照字符流进入有序进行.不同之处在于是否足够的随机存取数据--这时候,你可以随心所欲地从一个位置跳到访问设备和位置.复杂 ...
- Linux系统——常见的系统调用
本文列出了大部分常见的Linux系统调用,并附有简要中文说明. 以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的 ...
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
- Linux核心命令
Linux核心命令 strace(查看系统调用的一个过程) 例:strace cat /test.txt netstat perf top pidstat mpstat dstat vmstat sl ...
- [转帖]Linux分页机制之分页机制的演变--Linux内存管理(七)
Linux分页机制之分页机制的演变--Linux内存管理(七) 2016年09月01日 20:01:31 JeanCheng 阅读数:4543 https://blog.csdn.net/gatiem ...
- 20135302魏静静——linux课程第七周实验及总结
linux课程第七周实验及总结 实验及学习总结 1. 编译链接的过程和ELF可执行文件格式(以hello为例) GNU编译系统编译源码: 首先,运行C预处理器(cpp),将.c文件翻译成.i文件——g ...
- linux内核基础(系统调用,简明)
内核基础(系统调用) 在说系统调用之前.先来说说内核是怎么和我们交互的.或者说是怎么和我们产生交集的. 首先,内核是用来控制硬件的仅仅有内核才干直接控制硬件,所以说内核非常重要,假设内核被控制那么电脑 ...
- 举例说,Linux核心名单(两)
使用列表 我认为最好的方式,成为熟悉的核心列表功能是看一些简单的例子,素材去更好的理解链表. 以下是一个样例.包括创建.加入.删除和遍历链表. <span style="font-si ...
- 给Linux内核增加一个系统调用的方法(转)
作者:chenjieb520 给Linux内核增加一个系统调用的方法 为了更加好地调试linux内核,笔者的实验均在mini6410的arm板上运行的.这样做的原因,第一是因为本人是学嵌入式的, ...
随机推荐
- doc-remote-debugging.html
https://studio.zerobrane.com/doc-remote-debugging.html
- .net 一些常用的工具来破解
在.net 我们经常提到破 Reflector\SimpleAssemblyExplorer和CFF Explore几个工具. 我们有一个非常简单的Windows Form方案,例如,说他们如何使用 ...
- 【原创】ZOJ_1649 Rescue 解题报告
Rescue Time Limit: 2 Seconds Memory Limit: 65536 KB Angel was caught by the MOLIGPY! He was put ...
- statickeyword于C和C++用法
一.C语言statickeyword两个使用 1).一个功能修改内部使用的变量,函数内的静态变量.这些变量的寿命比功能不再,它是具有一定的函数"状态",使用静态变量的作用通常是不可 ...
- (hdu step 7.1.2)You can Solve a Geometry Problem too(乞讨n条线段,相交两者之间的段数)
称号: You can Solve a Geometry Problem too Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/ ...
- appendChild的用法
appendChild的用法 1,先把元素从原有父级上删除 2,再把元素添加到新父级上
- 【Linux探索之旅】第一部分第六课:Linux如何安装在虚拟机中
内容简介 1.第一部分第六课:Linux如何安装在虚拟机中 2.第二部分第一课预告:终端Terminal,好戏上场 Linux如何安装在虚拟机中 虽然我们带大家一起在电脑的硬盘上安装了Ubuntu这个 ...
- OCP解决问题052-- DROP PROFILE app_user
133.You created a profile APP_USER and assigned it to the users. After a month, you decide to drop t ...
- Object-C 新手教程
大纲 開始吧 下载这篇教学 设定环境 前言 编译 hello world 创建 Classes @interface @implementation 把它们凑在一起 具体说明... 多重參数 建构子( ...
- Zen Coding css,html缩写替换大观 快速写出html,css
阅读本文,先仔细阅读网站文章. Zen Coding 快速编写HTML/CSS代码的实现 复制代码 代码如下:E 元素名称(div, p); E#id 使用id的元素(div#content, p#i ...