操作系统基础操作

操作系统的启动

体系结构概念

CPU、I/O、内存-通过总线连接
在这里插入图片描述
操作系统一开始存放时没有放在内存里,而是当在DISK中,由BIOS提供相应支持

  • DISK:存放OS
  • BIOS:基本I/O处理系统(计算机开机时可以让系统检测各种外设,检测外设后才能检测各种软件并使其执行)

Bootloader:加载OS到内存中

BIOS从一个特定地址开始执行,当电脑通电时,段寄存器CS和指令寄存器IP能确定一个内存地址,如CS:IP=0xf000:fff0,(特定架构下有特定地址,X86下就是这个地址)

计算机通电之后,就会从这个地址开始执行,包括加电自检等,检测完成均正常工作后,会由Bootloader将OS加载到内存中去

POST(加电自检,检查自身设备是否能够正常工作),寻找显卡和执行BIOS(显示器、键盘等是否正常)
步骤

  • 启动过程
    在这里插入图片描述

中断、异常、系统调用

概念

  • 系统调用(来源于应用程序):应用程序主动向操作系统发出服务请求
  • 异常(来源于不良的应用程序):非法指令或其他坏的处理状态(如:内存出错)
  • 中断(来源于外设):来自不同的硬件设备的计时器和网络的中断

三者的区别和特点

在这里插入图片描述

  • 源头
    • 中断:外设(注意不是CPU产生的)
    • 异常:应用程序意想不到的行为(不是应用程序主动想产生的,而是在执行过程中意外产生的使计算机系统不能正常工作的指令,或操作系统截获的越权指令)
    • 系统调用:应用程序请求操作提供服务
  • 处理时间
    • 中断:异步
    • 异常:同步
    • 系统调用:同步(发出请求是同步的)或异步(发出请求后返回的事件是异步的)
  • 相应
    • 中断:持续,对用户应用程序是透明的(打断了程序的正常执行,但是用户感受不到)
    • 异常:杀死或重新执行意想不到的应用程序指令
    • 系统调用:等待和持续

中断和异常的处理过程

中断

  • 硬件:设置中断标记(CPU初始化)
    1. 将内部、外部事件设置中断标记
    2. 中断事件的ID
  • 软件:
    • 保存当前处理状态
    • 中断服务程序处理
    • 清除中断标记
    • 恢复之前保存的处理状态

异常

发出异常后会有异常编号

  • 保存现场
  • 异常处理
    • 杀死产生了异常的程序
    • 重新执行异常指令
  • 恢复现场

系统调用

应用程序需要操作系统提供的服务,而这个服务不能由应用程序直接来执行,必须要有操作系统来执行,这个过程就需要有一个接口,这个接口就是系统调用接口

  • 一些系统调用的API
    • Win32 API用于Windows
    • POSIX API用于POSIX-based systems(包括UNIX、LINUX、Mac OS X的所有版本)
    • Java API用于JAVA虚拟机(JVM)

通常情况下,系统掉有接口根据与每个系统调用相关的序号来维护表的索引
系统调用接口调用内核态中语气的系统调用并返回系统调用的状态和其他任何返回值
用户不需要知道系统调用是如何实现的,是需要获取API和了解操作系统将什么作为返回结果,OS接口的细节大部分都隐藏在API中
在这里插入图片描述
系统调用带来的开销比函数调用带来的开销大,但是也更安全
系统调用、中断、异常跨越了操作系统的边界,跨越边界就会有一定的代价,这个代价是为了让整个OS安全可靠正常的运行

  • 跨越OS边界的开销
    • 在执行时间上的开销超过程序调用
    • 开销
      • 建立中断/异常/系统调用号与对应服务例程映射关系的初始化开销
      • 建立内核堆栈
      • 验证参数(OS不信任内核,要对内核发来的参数进行验证,这也需要一定的开销)
      • 内核态映射到用户态的地址空间
        更新页面映射权限
      • 内核态独立地址空间
        TLB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/200350.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 环境搭建及运行java后端源码

1、 idea 历史版本下载及安装 建议下载和我一样的版本,2020.3 https://www.jetbrains.com/idea/download/other.html,idea分为专业版本(Ultimate)和社区版本(Community),前期可以下载专业版本…

“开源 vs. 闭源:大模型的未来发展趋势预测“——探讨大模型未来的发展方向

文章目录 每日一句正能量前言什么是大模型的开源与闭源开源与闭源的定义和特点开源的意义开源和闭源的优劣势比较不同的大模型企业,开源、闭源的策略不尽相同。企业在开发垂类模型时选择开源还是闭源大模型开源vs 闭源:两者并非选择题后记 每日一句正能量…

多模态大模型训练数据集汇总介绍

RefCOCO、RefCOCO、RefCOCOg 这三个是从MS-COCO中选取图像得到的数据集,数据集中对所有的 phrase 都有 bbox 的标注。 RefCOCO 共有19,994幅图像,包含142,209个引用表达式,包含50,000个对象实例。RefCOCO 共有19,992幅图像,包含1…

【开源】基于Vue和SpringBoot的中小学教师课程排课系统

项目编号: S 053 ,文末获取源码。 \color{red}{项目编号:S053,文末获取源码。} 项目编号:S053,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 角色管理模块2.2 课程档案模块2.3 排…

【前端学java】Java中的异常处理(15)完结

往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 (…

STM32:时钟树原理概要

在一般情况下只要在CubeIDE中将RCC下的高速时钟源设置成晶振,随后在时钟配置中把HCLK设置到最大频率(比如STM32F103的最高频率是72MHZ ),CubeIDE就会帮我们自动调节其它参数到合适的值。这样我们芯片就可以全速运行了。 一、时钟信…

C++函数

转载知呼大佬06 - C函数 - 知乎 (zhihu.com) 06 - C函数 本期我们讨论的是 C 中的函数。 函数到底是什么呢,函数就是我们写的代码块,被设计用来执行特定的任务,以后我们学习 class 类的时候,这些块会被称为方法,但是…

windows排除扫描文件夹

搜索防火墙和网络保护 点击病毒和威胁防护 往下拉,找到排除项 添加排除项

MySQL InnoDB 引擎底层解析(三)

6.3.3. InnoDB 的内存结构总结 InnoDB 的内存结构和磁盘存储结构图总结如下: 其中的 Insert/Change Buffer 主要是用于对二级索引的写入优化,Undo 空间则是 undo 日志一般放在系统表空间,但是通过参数配置后,也可以用独立表空 间…

【C++上层应用】2. 预处理器

文章目录 【 1. #define 预处理 】【 2. #ifdef、#if 条件编译 】2.1 #ifdef2.2 #if2.3 实例 【 3. # 和 ## 预处理 】3.1 # 替换预处理3.2 ## 连接预处理 【 4. 预定义宏 】 预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是…

分类预测 | Matlab实现基于PSO-SDAE粒子群优化算法优化堆叠去噪自编码器的数据分类预测

分类预测 | Matlab实现基于PSO-SDAE粒子群优化算法优化堆叠去噪自编码器的数据分类预测 目录 分类预测 | Matlab实现基于PSO-SDAE粒子群优化算法优化堆叠去噪自编码器的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现基于PSO-SDAE粒子群优化算法…

Flutter笔记:使用相机

Flutter笔记 使用相机 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/article/details/134493373 【简介】本文介绍在 Fl…

听GPT 讲Rust源代码--src/librustdoc

题图来自 Why is building a UI in Rust so hard? File: rust/src/librustdoc/core.rs 在Rust中,rust/src/librustdoc/core.rs文件的作用是实现了Rustdoc库的核心功能和数据结构。Rustdoc是一个用于生成Rust文档的工具,它分析Rust源代码,并生…

git基本操作(配图超详细讲解)

个人主页:Lei宝啊 愿所有美好如期而遇 目录 创建git本地仓库 配置仓库 认识工作区,暂存区,版本库 修改文件 版本回退 撤销修改 删除文件 创建git本地仓库 要提前说的是,仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂…

linux网络——HTTPS加密原理

目录 一.HTTPS概述 二.概念准备 三.为什么要加密 四.常⻅的加密⽅式 1.对称加密 2.⾮对称加密 五.数据摘要,数字签名 六.HTTPS的加密过程探究 1.方案一——只使用对称加密 2.方案二——只使⽤⾮对称加密 3.方案三——双⽅都使⽤⾮对称加密 4.方案四——⾮…

stack和queue简单实现(容器适配器)

容器适配器 stack介绍stack模拟实现queue 介绍queue模拟实现deque stack介绍 stack模拟实现 以前我们实现stack,需要像list,vector一样手动创建成员函数,成员变量。但是stack作为容器适配器,我们有更简单的方法来实现它。 可以利用模板的强大…

go语言学习之旅之Go 语言指针

学无止境,今天继续学习go语言的基础内容 Go语言支持指针,允许你在程序中直接操作变量的内存地址。指针存储了变量的内存地址,通过指针,你可以直接访问或修改该地址上的值。 学习过c语言的一定知道指针 定义指针 在Go语言中&…

AC修炼计划(AtCoder Beginner Contest 329)

传送门:Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329) - AtCoder A,B,C,D 这四道题比较简单,就不多叙述。 E - Stamp 这题是一道比较…

VMware——WindowServer2012R2环境安装mysql5.7.14解压版_主从复制(图解版)

目录 一、服务器信息二、192.168.132.33主服务器上安装mysql(主)2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 …

Linux C 网络编程概述

网络编程 计算机网络概述分类网络体系结构通信协议通信流程网络通信帧格式以太网帧格式分析ARP 协议分析IP 数据报分析IP分类IP 分配子网掩码 TCP 段分析 TCP三次握手协议 ⭐TCP四次挥手协议 ⭐ TCP编程基于 TCP 客户端编程-步骤说明基于 TCP 服务器端编程-步骤说明基于 TCP 服…