首页 > 其他分享 >操作系统的接口以及实现

操作系统的接口以及实现

时间:2024-06-30 19:10:12浏览次数:20  
标签:调用 操作系统 实现 用户 接口 内核 用户程序

目录

操作系统的接口以及实现

接口

接口的定义

对于用户而言,使用计算机的方式有三种:

1.命令行:linux中常用这种方式

2.图形按钮:通过鼠标点击操作实现操控,例如windows

3.应用程序

这三种方式实质上都是通过操作系统来操控计算机硬件。而操作系统为应用提供了一些重要函数,连接了应用软件和操作系统,表现为函数调用,又因由系统提供,所以称为系统调用(system_call)。

操作系统接口也具有连接两个东西、屏蔽细节、方便用户使用的特点。它连接上层应用软件和底层硬件,屏蔽细节,用户直接通过程序(应用软件)使用计算机,方便用户使用。操作系统的接口其实就是一个个函数,知道它的功能然后直接调用就行,而不用管它内核里面是怎么实现的,因为这个函数是系统调用的,所以也称为系统调用。比如:write()、read()等等

总之,什么是操作系统接口?->系统调用


系统调用的实现

直观实现

反正所想要打印的代码与系统代码都在内存里,直接跳转,直接调用不可以吗?
答:肯定是不能的。
不能随意的调用内核的数据;不能随意的jmp。如果能的话,操作系统内的很多重要的东西,比如root用户的密码,就不安全了。

计算机硬件系统并不允许我们在内存中通过jmp等跳转指令直接调用操作系统内核提供的函数,因为这样有可能会导致敏感信息的泄露

为了确保系统的安全性,计算机硬件为我们设计了内核态和用户态的模式,内核态可以访问用户态的信息,但用户态不能访问内核态。

内核(用户)态,内核(用户)段

将内核程序和用户程序隔离!!
区分内核态和用户态:一种处理器“硬件设计”

用户程序的CPL(Current Privilege Level)初始化结果是3,而操作系统内核里函数的DPL(Descriptor Privilege Level)是0,所以用户对内核的访问权限不够。

CPL寄存器表示当前程序执行在什么态,0表示内核态,3表示用户态;
DPL寄存器表示即将访问的数据在什么段,同样0表示内核段,3表示用户段。

每次访问数据的时候检查两个寄存器的大小关系,若DPL≥CPL,则可以访问,反之,则不能访问

把内存分为了操作系统内核段和用户程序用户段,把在内核段执行的代码和数据称为处于内核态,把在用户段执行的代码和数据称为处于用户态,将内核程序和用户程序隔离。所以:
内核态:处于内核态可以访问用户段和内核段的数据
用户态:处于用户态只能访问用户段的数据而不能访问内核段的数据

为了实现系统调用,操作系统为我们提供了用户程序调用内核函数的唯一方法:中断指令int。当程序执行到int指令时,int指令会将CS中的CPL修改为0,当访问内核结束之后,又将CPL重置为3继续执行用户程序。

系统调用的核心 int 0x80

(1)用户程序中包含一段包含int指令的代码 由谁做?库函数
(2)操作系统中断处理函数,获取想调程序的编号
(3)操作系统根据编号执行相应代码

标签:调用,操作系统,实现,用户,接口,内核,用户程序
From: https://www.cnblogs.com/Elysiaiii/p/18276814

相关文章

  • 队列的实现
    队列1.队列的概念及结构队列:只允许在一端插入数据,另一端删除数据的特殊线性表。队列是先进先出。进行插入操作的一端是队尾,删除操作的一端是队头。2.队列的实现队列也可以由数组和链表实现,但是由链表实现更好。因为如果使用数组的结构,出队列在数组头上的数据,效率会比较......
  • 不能创建第三个变量,实现两个数的交换
    目录常规实现两个数的交换(如:交换变量a和变量b)方法一:加减法方法二:异或操作符常规实现两个数的交换(如:交换变量a和变量b)创建一个临时变量tmp,先将其中一个变量a存放在临时变量tmp中,此时变量a的值则可被替换为变量b,然后再将b的值替换为tmp,此时变量a和变量b的值借助于变量tmp就......
  • 基于java+springboot+vue实现的毕业论文管理系统(文末源码+Lw)251
    摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业论文管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效......
  • Windows 7操作系统全面解析与实用技巧
    Win7操作系统一、操作系统的概述1.1操作系统的概念操作系统(operatingsystem,简称OS)一组控制和管理计算机系统的硬件和软件资源、控制程序执行、改善人机界面、合理地组织计算机工作流程并为用户使用计算机提供良好运行环境的一种系统软件。目的在于提高计算机系统的效率,增强......
  • 设计NOR Flash(SPI接口)的Flashloader(MCU: stm32f4)
    目录概述1软硬件1.1软硬件信息表1.2NORFlash芯片(W25Q64BVSSI)1.2.1W25Q64BVSSI芯片介绍1.2.2NORFlash接口1.3MCU与NORFlash接口2SPIFlash功能实现2.1软件框架结构2.2代码实现2.2.1 Dev_Inf文件2.2.2W25QXX驱动程序2.3Flashloader驱动接口程序3K......
  • 【操作系统期末速成】 EP03 | 学习笔记(基于五道口一只鸭)
    文章目录一、前言......
  • transformer在图像分类上的应用以及pytorch代码实现_transformer 图片分类
    本文简单介绍transformers的原理,主要介绍transformers如何应用在图像分类上的任务。1.对transformers的简单介绍transformers在自然语言处理领域有着天然的优势,transformers改进了RNN(循环神经网络)训练慢,不能够建立序列之间的长期依赖,记忆消失的缺点。transformers的核心......
  • 如何借助 LLM 设计和实现任务型对话 Agent
    1引言在人工智能的快速发展中,任务型对话Agent正成为提升用户体验和工作效率的关键技术。这类系统通过自然语言交互,专注于高效执行特定任务,如预订酒店或查询天气。尽管市场上的开源框架如Rasa和MicrosoftBotFramework在对话理解和管理方面已经取得了不错的进展,但仍......
  • Java语言助力企业实现个人信息的实名认证
    如今,人工智能发展迅速,任何经营活动,都难免会跟个人信息打交道,那么,什么是个人信息呢?有人认为,以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息。包括姓名、出生日期、身份证件号码、个人生物识别信息、住址、通信通......
  • Java实现管线拓扑关系连通性分析
    管线拓扑关系的连通性分析通常涉及图论(GraphTheory)中的概念,特别是无向图(UndirectedGraph)的遍历算法,如深度优先搜索(DFS,Depth-FirstSearch)或广度优先搜索(BFS,Breadth-FirstSearch)。在管线拓扑中,管线可以被视为图的边(Edge),而管线的连接点可以被视为图的节点(Vertex)。连通性分析......