您的位置:首页 > 其它

操作系统总结(二)系统调用及系统结构

2017-01-07 20:47 190 查看
区分用户态和内核态

内核态可以访问任何数据,而用户态不能访问内核数据。当前指令为CS:IP用CS最低两位表示:0为内核态,3为用户态。在运行指令时会对权限进行检查。

如何进入内核态

使用中断指令INT(trap陷阱指令,linux为0x80)int指令将CS的cpl改变为0,进入内核态,这是用户态程序进入内核态的唯一方式。因此系统调用的具体过程实现如下:用户程序中包含int 0x80的代码,由os处理中断代码获取中断调用号,os根据编号执行相应的代码。

系统调用处理的过程

用户程序->system call 第i号程序->int 0x80 ->保护现场->取出现场调用号、查询入口地址、进入相应的地址->结束调用、恢复现场->返回用户态程序

系统调用的参数传递

eax中存储系统调用号

最多直接传递3个参数:使用寄存器ebx、ecx、edx传递参数

传递参数的种类总结:

直接用寄存器传参,最多3个参数

指定内存块传参,可以用ebx、ecx、edx传递内存地址和参数数目

使用系统堆栈,可以传递任意多个参数,此时寄存器可用可不用

API和system call区别

API是系统调用的接口,API是system call的封装,System Call更加底层,使用需要知道更多的细节,API使用更加方便,可移植性高

系统调用的类别

进程控制

创建进程,进入可执行状态、唤醒进程、挂起进程、分配内存释放内存等。

文件管理

创建、删除、读写、打开关闭、属性获取设置、重定位等。

设备管理

请求、释放、读、写、重定位、属性获得、设置、连接与断开

信息维护

通信

系统结构

简单结构

整个操作系统似乎是个单一的整体,不注重模块的划分和接口与功能层次。

模块化

面向对象技术生成模块化的内核。使用动态加载模块,现代UNIX,Solaris,Linux, Mac os X

分层结构

整个操作系统分为若干层,至底向上层层封装,优点是构造和调试的简单化。缺点:分层法主要困难是对层的详细定义,这是因为一层只能使用其下的较低层。封层结构效率低。

微内核结构

将最基本的功能作为内核存在,主要包括最小的进程管理、内存管理和通信功能,其他功能作为系统程序或用户程序出现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统