计算机系统常见的系统调用

系统调用概念

系统调用是操作系统提供给用户程序调用的接口。用户程序通过接口来获得操作系统内核提供的服务。系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。系统调用的概念涉及到内核态和用户态:

内核态:当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。

用户态:当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态的进程的状态有些类似。

内核态执行的代码是是操作系统特有的,代码一般简单精炼。应用程序通过系统调用进入内核态执行达到实际访问计算机其他资源的目的。

应用代码从用户态到内核态是通过系统调用实现的。实现过程如下:

1、准备调用参数

2、系统调用进入内核态

3、内核态执行

4、内核态的返回数据复制到用户态

5、用户态得到调用结果

常见的unix系统调用主要分为三类:文件操作系统的系统调用,控制类的系统调用,信号和时间类的调用。

(1) 文件操作的系统调用

(create ,open,read,write,close,link,unlink,lseek,chmod,rename) 打开,关闭,读写,链接,取消链接,建立文件

lseek 设定文件的读写位置

chmod 改变对文件的访问权限

rename 更改文件名

(2) 控制类系统调用

fork 创建一个子进程

wait 父进程等待子进程终止

exit 终止子进程的执行

exec 启动执行一个指定文件

(3) 信号与时间的系统调用

UNIX把出现的异常情况或异步事件以传送信号的方式进行,与信号有关的系统调用主要有:

kill 把信号传送给一个或几个相关进程

sigaction 声明准备接收的信号类型

sigreturn 从信号返回,继续执行被信号中断的操作

(4) UNIX用于时间管理的系统调用主要有:

stime 设置日历时间

time 获得日历时间

times 获得执行所花费的时间

1、内核态和用户态的详解

2、常见系统调用参考

原创文章 计算机系统常见的系统调用,版权所有
如若转载,请注明出处:https://www.itxiaozhan.cn/20222203.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注