操作系统学习笔记(十)

2019-04-21  本文已影响0人  itczt

系统调用

用户界面的定义

OS提供给用户控制计算机的机制,又称用户接口。

操作界面

系统调用(System Call,系统功能调用,程序界面)



例一:linux;两个整数相加;函数add()

#include <stdio.h>
{
return (a+b);
}
int main(void)
{
int sum = add(100,300);
}

例二:Dos;21h中断显示字符串(09号功能)

String DB 'Hello!'  :定义要显示的字符串
........
Mov DX,string     :DX<——字符串地址
Mov AH,09H :AH<——09H号功能
INT 21h

特点:09号功能涉及外设(显卡)操作

例三:linux 打印一个字符串(printf)

#include <stdio.h>
int main(void)
{
printf("Hello world");
exit(0);
}

特点:函数涉及外设(显卡)操作,涉及进程操作

系统调用的定义

操作系统内核为应用程序提供的服务/函数
21h(09),printf(),exit()


系统调用的特点

系统调用的中断过程

Dos利用INT 21h中断实现系统调用
string DB'Hello!'  :定义显示的字符串
......
MOV DX,string  :DX<——字符串地址
MOV AH,09h  ;AH<——09H号子功能
INT 21h

特点:利用AH寄存器存放在系统调用的编号。

Dos利用INT 21h中断实现系统调用

Linux利用INT 80h中断实现系统调用

输出字符串:Hello world:

MOV EBX,1   ;EBX送1表示stdout
MOV ECX,MSG  ;字符串的首地址送入ecx
MOV EDX,14  ;字符串的长度送入edx
MOV EAX,4   ;指定系统调用的编号
INT 80h     ;中断;输出字串
MSG :DB “Hello world!”

特点:利用EAX寄存器存放系统调用的编号。
···
例:

include <stdio.h>

int main(void)
{
printf("Hello world");
exit(0);
}
···
特点:

隐式系统调用

编译时隐式系统调用转化为显示的系统调用:INT 80h


linux系统调用的工作原理


上一篇 下一篇

猜你喜欢

热点阅读