三九宝宝网宝宝百科宝宝知识

系统调用的概念是什么

03月28日 编辑 39baobao.com

[经络的概念和经络系统]一、经络的概念经络,是经和络的总称。经,又称经脉,有路径之意。经脉贯通上下,沟通内外,是经络系统中纵行的主干。故曰:“经者,径也。”经脉大多循行于人体的深部,且有一定的循行部...+阅读

操作系统在其核心中设置了一组用于实现各种系统功能的子程序(即过程),供应用程序调用。由于os系统过程的特殊性,使应用程序不能采用一般的过程调用方式来调用这些过程,而是利用一种系统调用命令,去调用所需的系统过程。它与一般的过程调用有以下几个明显差别。

(1)运行在不同的状态。一般的过程调用,其调用程序和被调用程序都运行在相同的状态一系统态或用户态;而在系统调用中,调用程序通常运行在用户态,被调用程序运行在系统态。

(2)系统状态的转换。由于一般的过程调用并不涉及系统状态的转换,故可直接由调用过程转向被调用过程。但在运行系统调用时,由于调用和被调用过程是工作在不同的系统状态,因而不允许由调用过程直接转向被调用过程。通常都是通过软中断机制,先由用户态转换为系统态,经内核分析后,才能转向相应的系统调用处理子程序。

(3)返回问题。在采用了抢占式(剥夺)调度方式的系统中,在被调用过程执行完后,要对系统中所有要求运行的进程做优先权分析。当调用进程仍具有最髙优先级时,才返回到调用进程继续执行;否则,将引起重新调度,以便让优先权最高的进程优先执行。此吋,需要把调用进程放入就绪队列。

(4)嵌套调用。像一般过程一样,系统调用也可以嵌套进行,即在一个被调用过程的执行期间,还可以利用系统调用命令去调用另一个系统调用。当然,每个系统对嵌套调用的深度都有一定的限制,通常深度不超过6。下图(a)所示为没有嵌套的系统调用,图8-8(b)所示为有嵌套的系统调用。

什么叫系统调用

所有的操作系统在其内核里都有一些内建的函数,这些函数可以用来完成一些系统级别的功能。Linux系统使用的这样的函数叫做“系统调用”,英文是systemcall。这些函数代表了从用户空间到内核空间的一种转换,例如在用户空间调用open函数,则会在内核空间调用sys_open。一个已经安装的系统的支持的所有的系统调用可以在/usr/include/bits/syscall.h文件里面看到。下面是我系统的该文件的开头几行: [hwanglangchao hwang]$ head /usr/include/bits/syscall.h /* Generated at libc build time from kernel syscall list. */ #ifndef _SYSCALL_H # error "Never use directly; include instead." #endif #define SYS_stime __NR_stime #define SYS_getresuid __NR_getresuid #define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo #define SYS_mmap2 __NR_mmap2 每个系统调用都有一个定义好的数字,这些数字是用来构造这些系统调用的。

内核通过0x80中断来管理这些系统调用。这些系统调用的对应的数字和一些参数都在调用的时候送到某些寄存器里面。 系统调用的数字实际上是一个序列号,表示其在系统的一个数组sys_call_table[]中的位置。

linux系统调用和库函数调用的区别

Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:让api也可以有了级别和专门的工作面向。

1、系统调用

系统调用提供的函数如open, close, read, write, ioctl等,需包含头文件unistd.h.以write为例:其函数原型为 size_t write(int fd, const void *buf, size_t nbytes),其操作对象为文件描述符或文件句柄fd(file descriptor),要想写一个文件,必须先以可写权限用open系统调用打开一个文件,获得所打开文件的fd,例如 fd=open(\“/dev/video\”, O_RDWR)。fd是一个整型值,每新打开一个文件,所获得的fd为当前最大fd加1.Linux系统默认分配了3个文件描述符值:0-standard input,1-standard output,2-standard error.

系统调用通常用于底层文件访问(low-level file access),例如在驱动程序中对设备文件的直接访问。

系统调用是操作系统相关的,因此一般没有跨操作系统的可移植性。

系统调用发生在内核空间,因此如果在用户空间的一般应用程序中使用系统调用来进行文件操作,会有用户空间到内核空间切换的开销。事实上,即使在用户空间使用库函数来对文件进行操作,因为文件总是存在于存储介质上,因此不管是读写操作,都是对硬件(存储器)的操作,都必然会引起系统调用。也就是说,库函数对文件的操作实际上是通过系统调用来实现的。例如C库函数fwrite()就是通过write()系统调用来实现的。

这样的话,使用库函数也有系统调用的开销,为什么不直接使用系统调用呢?这是因为,读写文件通常是大量的数据(这种大量是相对于底层驱动的系统调用所实现的数据操作单位而言),这时,使用库函数就可以大大减少系统调用的次数。这一结果又缘于缓冲区技术。在用户空间和内核空间,对文件操作都使用了缓冲区,例如用fwrite写文件,都是先将内容写到用户空间缓冲区,当用户空间缓冲区满或者写操作结束时,才将用户缓冲区的内容写到内核缓冲区,同样的道理,当内核缓冲区满或写结束时才将内核缓冲区内容写到文件对应的硬件媒介。

2、库函数调用

标准C库函数提供的文件操作函数如fopen, fread, fwrite, fclose, fflush, fseek等,需包含头文件stdio.h.以fwrite为例,其函数原型为size_t fwrite(const void *buffer, size_t size, size_t item_num, FILE *pf),其操作对象为文件指针FILE *pf,要想写一个文件,必须先以可写权限用fopen函数打开一个文件,获得所打开文件的FILE结构指针pf,例如pf=fopen(\“~/proj/filename\”, \“w\”)。实际上,由于库函数对文件的操作最终是通过系统调用实现的,因此,每打开一个文件所获得的FILE结构指针都有一个内核空间的文件描述符fd与之对应。同样有相应的预定义的FILE指针:stdin-standard input,stdout-standard output,stderr-standard error.

库函数调用通常用于应用程序中对一般文件的访问。

库函数调用是系统无关的,因此可移植性好。

由于库函数调用是基于C库的,因此也就不可能用于内核空间的驱动程序中对设备的操作。

简述系统调用的实现过程

系统调用是操作系统提供给软件开发人员的惟一接口,开发人员可利用它使用系统功能。OS核心中都有一组实现系统功能的过程(子程序),系统调用是对上述过程的调用。因此,系统调用直观上像一个黑箱子,对用户屏蔽操作系统的具体动作而只提供有关的功能。

为了实现系统调用,系统设计人员还必须为实现各种系统调用功能的子程序编造入口地址表,每个入口地址都与相应的系统子程序名对应起来。然后,由陷阱处理程序把陷阱指令中所包含的功能号与该入口地址表中的有关项对应起来,从而有系统调用功能号驱动有关系统子程序执行。

由于在系统调用处理结束后,用户程序还需利用系统调用的返回结果继续执行,因此,在进入系统调用处理之前,陷阱处理机构还需保存处理机现场。再者,在系统调用处理结束之后,陷阱处理机构还要恢复处理机现场。在操作系统中,处理机的现场一般被保护在特定的内存区或寄存器中

以下为关联文档:

科学的概念是什么?一般认为,"科学是反映客观世界(自然界、社会和思维)的本质联系及其运动规律的知识体系"(《自然辩证法百科全书》),它具有客观性,真理性和系统性,是真的知识体系。 科学方法,是实证的方...

数学的概念是什么数学是研究数量、结构、变化以及空间模型等概念的一门学科。通过抽象化和逻辑推理的使用,由计数、计算、量度和对物体形状及运动的观察中产生。数学家们拓展这些概念,为了公式...

朋友的概念是什么互相信任,互相帮助,默默关心 这点还可以简单的理解下。呵呵 其实朋友这个词并不那么简单。实话说我也不理解。。。 患难与共? 现在这个年代已经很少有什么大难可言了~!也许关心...

什么是新风系统?新风系统的工作原理是什么新风系统是一种主动向室内输入干净空气、排除室内的脏空气,让人可以在不开窗的情况下也能时刻享受新鲜空气的机械通风设备。 新风系统工作原理:是根据在密闭的室内一侧用专用...

概念车是从什么时候开始有的?概念车是什么意思别克YJob是汽车工业界公认的世界第一辆概念车,它于1938年由美国通用汽车艺术和色彩部首任主任、美国汽车造型之父——哈利杰·厄尔(Harley Earl )发明的。 概念车是时代的最新...

dubbo系统间如何调用如果是All in one 结构的项目,我们要引用其他类,直接引用即可。但是如果不在同一个项目中如何引用咧。如果调用的类在本项目中没有,则会报语法错误。 有以下两种解决方法: ①直...

物流系统的概念物流系统概念 物流系统就是指在供应链管理活动中的各种物流功能,随着采购、生产、销售活动而发生,并使物的流通效率提高的系统。这种系统大致由作业系统和信息系统组成。工商...

结构力学的概念是什么结构力学概念是什么结构力学定义结构力学(Structural Mechanics)是固体力学的一个分支,它主要研究工程结构受力和传力的规律,以及如何进行结构优化的学科.所谓工程结构是指能够承受和传递外载荷的...

概念是什么概念云操作系统是一个新的软件类别,旨在将大型基础架构集合(CPU、存储、网络)作为一个无缝、灵活和动态的操作环境进行全面管理。 与普通操作系统管理单独计算机的复杂性类似,云操作...

推荐阅读
图文推荐