Chinaunix首页 | 论坛 | 博客
  • 博客访问: 860378
  • 博文数量: 82
  • 博客积分: 2283
  • 博客等级: 大尉
  • 技术积分: 2007
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-15 22:19
文章分类

全部博文(82)

文章存档

2012年(82)

分类: LINUX

2012-07-18 13:15:53

系统调用(system call)是内核向用户态提供的一组接口,使得用户态下的程序可以通过软中断来请求内核进行
低层服务。通常,系统调用以API的形式表现给用户。
                                                          系统调用的功能和分类

    操作系统核心在运行期间的活动可以分为两个部分:上半部分(top half)和下半部分(bottom half), 其中上半部分为应用程序提供系统调用或自陷的服务,是同步服务,由当前执行的进程引起,在当前进程上下文中执行并允许直接访问当前进程的数据结构;而下半 部分则是由处理硬件中断的子程序,是属于异步活动,这些子程序的调用和执行与当前进程无关。上半部分允许被阻塞,因为这样阻塞的是当前进程;下半部分不允 许被阻塞,因为阻塞下半部分会引起阻塞一个无辜的进程甚至整个核心。

    系统调用可以看作是一个所有Unix/Linux进 程共享的子程序库,但是它是在特权方式下运行,可以存取核心数据结构和它所支持的用户级数据。系统调用的主要功能是使用户可以使用操作系统提供的有关设备 管理、文件系统、进程控制进程通讯以及存储管理方面的功能,而不必要了解操作系统的内部结构和有关硬件的细节问题,从而减轻用户负担和保护系统以及提高资 源利用率。

    系统调用分为两个部分:与文件子系统交互的和进程子系统交互的两个部分。其中和文件子系统交互的部分进一步由可以包括与设备文件的交互和与普通文件的交互的系统调用(open, close, ioctl, create, unlink, . . . );与进程相关的系统调用又包括进程控制系统调用(fork, exit, getpid, . . . ),进程间通讯,存储管理,进程调度等方面的系统调用。
 


由系统调用组成的程序,在main函数执行中一开始先要检查参数的个数(合法性)。如果单独的系统调用组成一
个程序,则必须要对其检查参数,但是如果一个系统调用没有被单独设计成一个应用程序,则不用对其参数进行
检查。参数的检查主要是为了使用户得知造成程序运行错误的原因。



阅读(1279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~