LKD_05_系统调用

  • 系统调用的目的

与内核进行通信,即系统调用是在用户层和硬件设备层之间增加的一个中间层;其主要有3个作用:

  1. 为用户空间提供一种硬件的抽象接口: 比如读写文件时,应用程序不用考虑磁盘类型和介质,也不用考虑文件系统类型;
  2. 保证了系统的稳定和安全: 对应用层需要访问的内核进行判断,如权限、用户类型、地址合法性等;比如避免应用程序不争去的使用硬件设备窃取其他进程资源或危害系统运行。
  3. 避免应用程序可以随意的访问硬件层,而内核对此一无所知,确保可靠的实现多任务和虚拟内存,及实现良好的系统稳定性和安全性;
  • 应用编程接口与C库以及POSIX标准之间的关系
  1. 应用程序通过用户空间实现的API(应用编程接口)来执行程序,而不需要和内核提供的系统调用直接对应。一个API 定义了一组应用程序使用的编程接口。比如:printf() 函数的执行;

应用层printf()  =>  C库中printf()  => C库中write()  => write()系统调用

  1. POSIX 是有IEEE 的一组标准,其目标是提供一套大体上基于 unix的可移植操作系统标准。 在大部分Unix 系统上,POSIX定义的API 函数和系统调用之间有着直接的关系。C库提供了POSIX 的绝大部分API。
  2. Linux 的系统调用像大多数Unix 系统一样,作为C 库的一部分提供。C库实现了Unix 系统的主要API,包括标准C库函数和系统调用接口。
  3. 程序员需要考虑的市API,系统调用无关紧要; 内核只跟系统调用打交道; 【Unix接口设计:“提供机制而不是策略”】
  • 系统调用
  1. 系统调用处理原理
  2. 系统调用的实现步骤
  3. 系统调用上下文
  4. 小结

LKD_05_系统调用(20181021)相关推荐

  1. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  2. 专题8-Linux系统调用

    1.从用户空间到内核空间的时候需要进行系统调用 2.系统调用通过swi指令实现,这个时候会有一个参数,存放到r7寄存器,用来指定要调用的内核态函数. 3.一般内核态的实际函数可以再任意的.c文件实现, ...

  3. linux c 启动程序吗,Linux下C程序启动时的系统调用

    写程序跟踪发现,在Linux i386中,一个程序体完全为空的C语言程序启动时要进行近100个系统调用,如下所示. [ 1]syscall: 11 //execve [ 2]syscall: 45 / ...

  4. linux open系统调用的O_DIRECT标记

    前言 open系统调用中针对打开的文件描述符,可以增加一个O_DIRECT标记,该标记能够使得针对该文件描述符的写操作绕过操作系统page cache,直接进入通用块设备层,从而减少页缓存对IO效率的 ...

  5. linux系统调用 ftruncate设置文件大小

    系统调用ftruncate可以将一个文件裁剪为指定的大小,函数描述如下: 头文件:<unistd.h> <sys/types.h> 函数使用: int truncate(con ...

  6. linux 系统调用 read,write和lseek 使用

    read系统调用 头文件 #include <unistd.h> 函数使用 ssize_t read(int fd, void *buf, size_t count) read 函数会从文 ...

  7. linux 系统调用 open函数使用

    函数介绍 本文仅仅将open系统调用的使用简单总结一下,关于其实现原理大批的大佬分享可以自行学习.open系统调用主要用于打开或者创建一个文件,并返回文件描述符. 头文件 #include <f ...

  8. 汇编语言调用Linux系统调用

    首先查找系统调用文件 #find / -name unistd.h /root/linux/include/unistd.h /usr/include/linux/unistd.h /usr/incl ...

  9. 程序员的自我修养--链接、装载与库笔记:系统调用与API

    系统调用(System Call)是应用程序(运行库也是应用程序的一部分)与操作系统内核之间的接口,它决定了应用程序是如何与内核打交道的.无论程序是直接进行系统调用,还是通过运行库,最终还是会到达系统 ...

最新文章

  1. jquery gridly (拖拽插件)
  2. 快速理解Docker - 容器级虚拟化解决方案
  3. 调整/home和/root空间容量
  4. 数据库增删改查代码,登录和注册
  5. qtcreator下拉列表怎么制作_设置EXCEL动态下拉菜单,只需要一个组合键,新手也能快速掌握...
  6. Go -- php 中的pack(H*, $string) 转换成go
  7. Unity3d发布webplayer 部署到IIS
  8. 阿里云 DNS 运维服务的演进和实践
  9. access更新查询非汉族加分_Access更新查询
  10. Oracle 19c对VARCHAR2的限制
  11. Axure RP中后台管理系统通用原型模板
  12. RNA-seq全流程分析
  13. WebGL探索——抉择:实践方向(twgl.js、Filament、Claygl、BabylonJS、ThreeJS、LayaboxJS、SceneJS、ThinkJS、ThingJS)
  14. 华为OD机试真题Java_2022-2023-题目0188-网上商城优惠活动(一)
  15. 彻底卸载智能云输入法(在win10家庭版下)
  16. 插件技术被浏览器抛弃,网银安全何去何从?
  17. 【tools】nmap
  18. Win10软件界面乱码,显示日文文字
  19. 人工大猩猩部队优化算法(GTO,ArtificialGorillaTroopsOptimizer)Matlab代码
  20. java 使用Jsoup 爬取 中国政府采购网数据

热门文章

  1. gateway---服务网关
  2. java 生成word文件怎么打开乱码_word打开是乱码怎么办?word文档打开出现乱码的解决技巧...
  3. Dalvik虚拟机ART虚拟机
  4. 详解线程锁、进程锁、分布式锁以及数据库锁
  5. 变种水仙花数 来自newcode一道初级编程题
  6. java毕业设计基于精细化考核的离散数学课程教学目标达成系统Mybatis+系统+数据库+调试部署
  7. java word标签替换_用java替换word文档模板中的变量
  8. CentOS8上集群时间的同步
  9. linux编译grpcswift,grpc使用记录(一)编译(mscv/gcc)
  10. python如何爬虫获取图形上点的坐标_python调用百度地图WEB服务API获取地点对应坐标值...