内核驱动之Linux系统调度

本文详细介绍了系统调用与普通函数调用的区别,并深入探讨了系统调用的工作原理,包括填充寄存器、跳转到内核、查找相应函数执行的过程。同时,阐述了实现系统调用所需执行的三个步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1
系统调用和普通的函数调用区别:
系统调用由操作系统内核实现,运行于内核态;
普通的函数调用由函数库或用户自己提供,运行于用户态
2
工作原理:
应用程序首先用《适当的值》填充寄存器,然后调用一个《特殊的指令》跳转到内核某一《固定的位置》,内核根据应用程序所填充的固定值来找到《相应的函数执行》
3
适当的值:系统调用号
特殊的质量:在ARM中,是SWI(已经重命名为SVC指令)
固定的位置:ENTRY(vector_swi)<entry-common.S>
相应的函数:从系统调用表sys_call_table找到相应的内核函数。
CALL(sys_restart_syscall)
CALL(sys_exit)
CALL(sys_fork_wrapper)

4
实现系统,需要执行的3个步骤:
(1)添加新的内核函数
(2)更新头文件unistd.h
(3)针对这个新函数更新系统调用表calls.S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值