L4&5 【哈工大_操作系统】操作系统接口 & 系统调用实现

本文详细解析了L4操作系统接口的概念,重点介绍了系统调用的实现逻辑,包括为何用户程序不应直接进入内核、如何隔离用户与内核、以及通过中断指令实现系统调用的具体过程。文章旨在帮助读者巩固操作系统知识,便于后续学习查阅。
摘要由CSDN通过智能技术生成

L4 操作系统接口

本节比较简单,故与第五节课程笔记一起发布。本节主要是研究 上层应用 是怎么穿过边界进入 操作系统。

  • 接口:操作系统提供的重要函数/指令( system call ),用来连接硬件,所以OS接口就是系统调用
  • POSIX(Portable Operating System Interface of UNIX, 可移植操作系统接口):IEEE制定的OS接口标准

L5 系统调用实现

本节课程是重点,强调了系统调用的底层实现逻辑,主要涵盖三个问题:

1、用户系统调用 为什么 不应该进入内核?
2、怎么样 做到不让用户进入内核?
3、系统调用想进去内核应该 怎么办

1、用户系统调用为什么不应该进入内核?

  • 为了系统的隐私性,不能随意的 jmpmov 来获取内存中的数据。
  1. 内核(Kernel):内核是操作系统的核心部分,它负责管理系统的各种资源(如CPU、内存、设备等),提供服务给用户程序,实现了操作系统的基本功能,比如进程管理、内存管理、文件系统、设备驱动程序等。内核通常是操作系统的一个独立模块,负责运行在最高特权级别,控制整个系统的运行。
  2. 内存(Memory):内存是计算机系统中用于存储数据和程序的一种硬件设备。它是用来存放程序和数据的临时存储区域,供 CPU 进行读写操作。操作系统通过内存管理的功能来管理计算机系统中的内存资源,包括分配、释放、保护和共享内存等操作。

2、怎么做到不让用户进入内核?

  • 硬件电路将内核程序和用户程序隔离,防止随意 jmp

在这里插入图片描述

  • DPL(目标段特权级),CPL(当前段特权级),特权级数字越小等级越高。只有当 DPL≤CPL(由硬件来检查),当前段才可以访问目标段。

特权级: 核心态 = 0 OS服务 = 1/2 用户态 = 3

  • 系统初始化 head.s 执行时,建立 GDT 表象时就初始化了各态的特权级别

3、系统调用想进去内核应该通过什么手段?

  • 硬件提供了主动进入内核的方法:中断指令 int

在这里插入图片描述

  • open 展开实际包含了中断 int 指令,来实现调用内核

4、用户程序包含 int 指令的代码

在这里插入图片描述

  • 只能通过 int 0x80 进入OS内核

在这里插入图片描述

  • write 指令的系统调用,通过 宏 来展开
  • _asm_volatile(内嵌汇编),输出 =aeax。先将 NR_##name 置给 eax。代入即把 write 置给 eax核心:将系统调用号置给 eax,然后调用 int 0x80
// 定义(上面这一页 PPT 是定义)
// weite 指令的调用(再上一页 PPT 是调用)
syscal13(int, write, int, fd, char const *buf, off_t, count)
/*  把 write 置给 eax (实际是一个系统调用号 _NR_write)
	把 fd 置给 bax, *buf 置给 cax, count 置给 dax      */

5、操作系统写中断处理

  • IDT 表中取出中断处理函数

在这里插入图片描述

  • 实现了 DPL = 3CPL = 0, 用户程序就可以进入内核了

6、操作系统根据编号执行相应代码

在这里插入图片描述

  • write 的系统调用对应的地址,乘4 是因为每次函数位置占32位 -> 4个字节。

在这里插入图片描述

  • 通过 int 0x80 指令(CPL = 3, DPL = 3),才能穿过接口到达系统

在这里插入图片描述
至此,本节课程已介绍完毕。

再次强调一下本系列文章的定位:希望通过这一系列文章,可以帮助大家巩固与学习李治军老师课程上的重点内容。同时,也为大家后续知识点遗忘提供了查阅的渠道,而无需去视频中寻找知识,故本系列文章图片均保留了课堂笔记。希望对大家有所帮助!

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_小猪沉塘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值