操作系统:运行模型与用户接口

2.3 操作系统运行模型

操作系统核心的主要功能模块如下

  • 系统初始化模块:准备系统运行环境,最后为终端创建进程运行命令解释程序。
  • 进程管理模块:处理进程类系统调用(如进程创建/结束、进程间通讯等);进程调度。
  • 存储管理模块:配合进程管理分配进程内存空间;处理存储类系统调用(如动态增加进程空间);虚存系统缺页时调入页面处理。
  • 文件管理模块:处理文件类系统调用。
  • 外设管理模块:负责外设驱动,中断处理。

操作系统三种运行模型

  • 独立运行的内核:用户程序与核心程序在分离的运行环境中运行,核心程序作为一个独立的特殊执行体运行,有自己独立的运行栈,用户进程通过中断/陷入机制启动核心程序运行(以情求包方式传递用户请求)

 

  • 嵌入用户进程执行模式(类函数调用):操作系统核心程序通过中断/陷入机制启动运行,但运行于被打断进程的核心栈上,内核程序执行并发性好。

 

  • 微内核模式:核心程序只包含中断处理,系统调用总控,进程调度等功能,其他功能由用户态运行的系统进程实现,这种结构开销很大。


 2.4 系统调用

凡是涉及操作系统核心管理资源的操作必须由系统调用实现

一、主要系统调用:

进程管理

  • 创建进程 pid=fork()
  • 终止进程 exit(status)
  • 等待子进程结束 pid=waitpid(pid,...)
  • 替换进程映像 s=execve(name,...)

文件管理

  • 创建文件 fd=creat(name,...)
  • 打开文件 fd=open(name,...)
  • 读文件 n=read(fd,buffer,nbyte)
  • 写文件  n=write(fd,buffer,nbyte)
  • 移动文件指针 pos=lseek(fd,offset,...)
  • 关闭文件 s=close(fd)

存储管理:动态申请/释放进程空间等

其它:设置/获得时间等

:用户编程时不一定直接调用“系统调用”接口函数,而是调用更高层的库函数,如win32的API函数,C库函数等。

二、自陷指令(trap)

  • 系统调用是一种特殊形式的转子方法,他导致处理机态的变化,为了方便编程,提供系统调用接口库,由库中的接口函数来组织执行trao用户程序调系统调用库的接口函数。
  • 系统调用库接口函数汇编程序包含

        ·(传给核心的参数按约定填入寄存器)(决定调用哪个系统调用)(ABI约定)

        ·   trap指令

        ·(从约定的寄存器中获得核心返回值)

        ·   return

  • 处理机执行trap指令会导致控制转到操作系统内核的trap处理程序入口,trap处理程序获得参数,按系统调用入口表散转到各处理程序
  • 参数传递的一般形式:①用约定寄存器传递参数  ②trap指令自带参数,trap指令是一条长指令,内核通过断点PC值加偏移获得参数

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值