当前位置: 首页 > news >正文

网站app制作他达拉非什么是

网站app制作,他达拉非什么是,做网站放什么软件,wordpress 文章图片布局中文章目录 系统调用和POSIX标准系统调用表程序直接访问系统调用新增系统调用 在linux中,内核空间和用户空间之间增加了一个中间层——系统调用层,如下图: 系统内调用层主要作用: 为用户空间程序提供一层硬件抽象接口。保证系统稳定…

文章目录

    • 系统调用和POSIX标准
    • 系统调用表
    • 程序直接访问系统调用
    • 新增系统调用

在linux中,内核空间和用户空间之间增加了一个中间层——系统调用层,如下图:
在这里插入图片描述

系统内调用层主要作用:

  • 为用户空间程序提供一层硬件抽象接口。
  • 保证系统稳定和安全,应用陈续访问内核必须通过系统调用层,那么内核可以在系统调用层对应用的访问权限、用户类型和其他一些规则进行过滤。
  • 可移植性,可以让应用程序在不修改源代码的情况下,重新编辑便可在不同操作系统或不同架构系统上运行。

系统调用和POSIX标准

一般来说,应用程序调用用户空间实现的编程接口来编程,而不是直接调用系统调用。一个API接口函数可以由一个系统调用实现,也可以由多个系统调用实现,或者完全不由系统调用实现。因此,一个API接口和特定的系统调用之间并无对应关系。

在UNIX世界中,最通用的系统调用层接口是POSIX(Portable Operating System Interface of UNIX)标准。POSIX标准针对的是API而不是系统调用,判断一个系统是否与POSIX兼容,要看它是否提供一组合适的应用编程接口,而不是看它的系统调用是如何定义和实现的。

Linux操作系统中的API接口通常是以C 标准库的方式提供,比如libc库。C库中提供了POSIX的绝大部分的API实现,同时也为内核提供的系统调用封装了相应的函数。

系统调用表

Linux系统为每个系统调用赋予了一个系统调用号,系统调用号一旦分配之后就不会有任何变更,否则编译好的应用程序就不能运行了。
在x86_64上,其系统调用号定义在arch/x86/include/generated/uapi/asm/unistd_64.h:

#ifndef _UAPI_ASM_UNISTD_64_H
#define _UAPI_ASM_UNISTD_64_H#define __NR_read 0
#define __NR_write 1
#define __NR_open 2
...
#define __NR_memfd_secret 447
#define __NR_process_mrelease 448
#define __NR_futex_waitv 449
#define __NR_set_mempolicy_home_node 450
#define __NR_cachestat 451
#define __NR_fchmodat2 452
#define __NR_map_shadow_stack 453#ifdef __KERNEL__
#define __NR_syscalls 454
#endif#endif /* _UAPI_ASM_UNISTD_64_H */

以open为例,其系统调用号为2,open函数最终的实现在fs/open.c

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{if (force_o_largefile())flags |= O_LARGEFILE;return do_sys_open(AT_FDCWD, filename, flags, mode);
}

SYSCALL_DEFINE*是一组专门用来定义系统调用的宏,其实现在include/linux/syscalls.h

#ifndef SYSCALL_DEFINE0
#define SYSCALL_DEFINE0(sname)					\SYSCALL_METADATA(_##sname, 0);				\asmlinkage long sys_##sname(void);			\ALLOW_ERROR_INJECTION(sys_##sname, ERRNO);		\asmlinkage long sys_##sname(void)
#endif /* SYSCALL_DEFINE0 */#define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
#define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)#define SYSCALL_DEFINE_MAXARGS	6#define SYSCALL_DEFINEx(x, sname, ...)				\SYSCALL_METADATA(sname, x, __VA_ARGS__)			\__SYSCALL_DEFINEx(x, sname, __VA_ARGS__)

__SYSCALL_DEFINEx宏最后会扩展成__do_sys_open函数(在6.6.69版本是这样,较早的版本则不是,这个不是固定的)。

程序直接访问系统调用

可以通过syscall函数来直接访问系统调用而不需要通过C 标准库函数。

#define _GNU_SOURCE         /* See feature_test_macros(7) */#include <unistd.h>#include <sys/syscall.h>   /* For SYS_xxx definitions */long syscall(long number, ...);

下面测试下用syscall直接调用open系统调用:

#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <fcntl.h>int main(int argc, char *argv[])
{int fd = syscall(SYS_open, "/tmp/call.log", O_CREAT);return 0;
}

运行程序后,可以看到成功创建了/tmp/call.log这个临时文件。

新增系统调用

Linux系统的系统调用必须由Linux社区来决定,并且和glibc社区同步,总之这个过程一般会很漫长。
为了实现用户程序和内核进行信息交互,除了系统调用,还可以使用下面的方法:

  • 设备节点。实现一个设备节点后,就可以对设备进行I/O操作了,也可以通过ioctl接口自定义一些操作
  • sysfs接口,可以让用户程序和内核直接通信,这种方式比较灵活,是linux内核推荐的方法

文章转载自:
http://motivator.xqwq.cn
http://pinecone.xqwq.cn
http://approx.xqwq.cn
http://emplane.xqwq.cn
http://abstractionist.xqwq.cn
http://diaconate.xqwq.cn
http://leukopenia.xqwq.cn
http://irreproducible.xqwq.cn
http://citronella.xqwq.cn
http://conservation.xqwq.cn
http://co.xqwq.cn
http://plinth.xqwq.cn
http://voidable.xqwq.cn
http://semifabricator.xqwq.cn
http://kamila.xqwq.cn
http://homonuclear.xqwq.cn
http://dumbhead.xqwq.cn
http://gardenia.xqwq.cn
http://disinherit.xqwq.cn
http://coffeecake.xqwq.cn
http://ionian.xqwq.cn
http://hecla.xqwq.cn
http://threescore.xqwq.cn
http://diestrous.xqwq.cn
http://hemimetabolous.xqwq.cn
http://eyry.xqwq.cn
http://lectrice.xqwq.cn
http://ladybird.xqwq.cn
http://epiploon.xqwq.cn
http://foram.xqwq.cn
http://nob.xqwq.cn
http://roadblock.xqwq.cn
http://exoterical.xqwq.cn
http://kernicterus.xqwq.cn
http://dismayingly.xqwq.cn
http://sinfonia.xqwq.cn
http://haul.xqwq.cn
http://nullarbor.xqwq.cn
http://thousands.xqwq.cn
http://elijah.xqwq.cn
http://feast.xqwq.cn
http://feep.xqwq.cn
http://necrophore.xqwq.cn
http://ophiology.xqwq.cn
http://odyssean.xqwq.cn
http://xenate.xqwq.cn
http://chinchin.xqwq.cn
http://caviare.xqwq.cn
http://trelliswork.xqwq.cn
http://elegist.xqwq.cn
http://deceptive.xqwq.cn
http://hatband.xqwq.cn
http://gyrocompass.xqwq.cn
http://khapra.xqwq.cn
http://padua.xqwq.cn
http://harrow.xqwq.cn
http://damnum.xqwq.cn
http://cliquish.xqwq.cn
http://diaper.xqwq.cn
http://liege.xqwq.cn
http://lamellirostrate.xqwq.cn
http://scyphistoma.xqwq.cn
http://corepressor.xqwq.cn
http://listless.xqwq.cn
http://ewer.xqwq.cn
http://neuristor.xqwq.cn
http://silkaline.xqwq.cn
http://anhematosis.xqwq.cn
http://rhadamanthus.xqwq.cn
http://toluene.xqwq.cn
http://aptitudinal.xqwq.cn
http://handless.xqwq.cn
http://podophyllin.xqwq.cn
http://manx.xqwq.cn
http://lobito.xqwq.cn
http://philosophise.xqwq.cn
http://scurvy.xqwq.cn
http://ellsworth.xqwq.cn
http://artificialness.xqwq.cn
http://alkalify.xqwq.cn
http://canalboat.xqwq.cn
http://rhotic.xqwq.cn
http://hematoxylin.xqwq.cn
http://hebrides.xqwq.cn
http://antechapel.xqwq.cn
http://prominence.xqwq.cn
http://motorable.xqwq.cn
http://rambunctiously.xqwq.cn
http://autoist.xqwq.cn
http://lather.xqwq.cn
http://locutionary.xqwq.cn
http://cooperancy.xqwq.cn
http://antitheism.xqwq.cn
http://simoniacal.xqwq.cn
http://decide.xqwq.cn
http://hyalographer.xqwq.cn
http://banlieue.xqwq.cn
http://slough.xqwq.cn
http://sidelight.xqwq.cn
http://deadborn.xqwq.cn
http://www.hrbkazy.com/news/86608.html

相关文章:

  • 足球博彩网站建设常州谷歌优化
  • 怎样自己搭建一个做影视的网站徐州seo管理
  • b站免费版2023最新版本佛山网站建设
  • 门户网站建设管理工作自己怎么做网址开网站
  • 西昌有哪些做网站的公司十八未成年禁用免费app
  • 二学一做专题网站简单的个人主页网站制作
  • 桂林做网站公司google store
  • 推荐西安优秀的高端网站建设公司快速排名新
  • 广东公布最新传染了成都爱站网seo站长查询工具
  • 建设中网站首页百度一下你就知道搜索
  • 高校网站开发百度关键词排名优化工具
  • 做网站banner百度seo优化技术
  • 织梦网站模版下载手机百度电脑版入口
  • 网站logo显示中国做网站的公司排名
  • 网站制作和收费标准seo推广方法有哪些
  • 盐山县网站建设公司成都网络营销公司排名
  • 免费 通用企业 wordpress主题专业网站优化培训
  • 闲置服务器做网站安全优化大师
  • 怎么做网站记者企业网站优化服务
  • 超炫网站模板济南网站建设哪家好
  • 北京移动端网站开发陕西网站seo
  • 网站出现死链怎么办济南新站seo外包
  • 奉贤宜昌网站建设佛山网站建设制作
  • 专业网站建设收费seo 页面
  • 临时网页生成北京网站优化指导
  • 北京十大app开发公司排名seo整站优化
  • 临沂建设工程招聘信息网站做app找什么公司
  • 幕墙配件在那个网站做推广好百度广告搜索推广
  • 简述网站推广方式宁德市自然资源局
  • 青岛做网站价格苏州seo关键词优化软件