现代操作系统一点点

现代操作系统
操作系统为所有其他软件提供基础的运行环境。
操作系统包含很多用于控制输入/输出设备的驱动
文件也是抽象出来的
操作系统的一个主要任务是隐藏硬件,呈现给程序(以及程序员)良好、清晰、优雅、一致的抽象。
shell也是操作系统提供给用户的一个用户接口
作为资源管理者的操作系统
把操作系统看作向应用程序提供基本抽象的概念,是一种自顶向下的观点。按照另一种自底向上的观点,操作系统则用来管理一个复杂系统的各个部分。现代计算机包含计算存储时钟网口和其他外设。从这个角度看,操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他IO接口设备的分配。
作业job
批处理系统batch system
为什么C、JAVA、Python基本上输出语句都用print,因为在计算机发展的初期,输出主要就是用来让打印机打印的。那时候可能用纸质媒介记录信息,可能还没有显示器呢吧
控制卡片有$JOB $LOAD $RUN E N D ,还有一个 END,还有一个 END,还有一个FORTRAN卡片,这些基本的控制卡片是现代shell和命令解释器的先驱。
栈stack是一种特殊的线性表,像烤串、弹夹、碟子,物理存在为内存的一片区域,stack是一种数据结构。分配一段内存空间创建一个stack栈
为了从操作系统中获得服务,用户程序必须使用系统调用(system call)以陷入内核并调用操作系统。
Trap指令把用户态切换成内核态,并启用操作系统。当有关工作完成之后,在系统调用后面的指令把控制权返回给用户程序。
现代计算机应该是使用trap而不是一条指令来执行系统调用。
多线程允许CPU保持两个不同的线程状态,然后在纳秒级的时间尺度内来回切换。
时钟周期
多线程不提供真正的并行处理。在一个时刻只有一个进程在运行,但是线程的切换时间则减少到纳秒数量级
CPU中寄存器的存储容量都小于1KB
三级Cache一般用的是SRAM
内存条一般用的是DRAM
RAM random access memory
SRAM static random access memory
DRAM dynamic random access memory
DDR double data rate synchronous dynamic random access memory 双倍数据速率时钟动态随机记忆
用户与硬件交互的流程
user–>operation system–>设备驱动程序(device driver)–>设备控制器(是插在电路板上的一块芯片或一组芯片)–>设备本身(设备本身有个相对简单的接口,这个接口已经被标准化了,SATA就是其中一种接口)


以下内容为AI生成,

用户与硬件交互流程,为了更清晰地理解,可以将这个过程分为几个层次:

  • 用户层:用户通过应用程序或命令行工具发起操作请求。
  • 操作系统层:操作系统接收用户的请求,并通过系统调用接口(syscall)进行处理。
  • 设备驱动程序层:操作系统将请求传递给相应的设备驱动程序,设备驱动程序负责与特定硬件通信。
  • 设备控制器层:设备驱动程序与设备控制器交互,设备控制器管理硬件的具体操作。
  • 硬件设备层:设备控制器通过标准化接口(如SATA、USB等)与实际的硬件设备通信。

具体流程如下:

  1. 用户通过应用程序发起一个操作请求(例如读取文件)。
  2. 操作系统接收到请求后,将其转换为系统调用。
  3. 系统调用被传递给相应的设备驱动程序。
  4. 设备驱动程序与设备控制器通信,发送指令。
  5. 设备控制器通过标准化接口(如SATA)与硬件设备交互,执行具体操作。
  6. 操作完成后,结果逐层返回给用户。

这种分层设计使得不同层次的功能更加明确,也便于维护和扩展。


IO设备的中断(Interrupt)是计算机系统中一种重要的机制,用于通知CPU有外部事件发生,需要立即处理。当中断发生时,CPU会暂停当前正在执行的任务,转而处理中断请求,处理完毕后再返回到原来的任务。

中断的工作原理

  1. 触发中断:当IO设备完成某个操作(如数据传输完成、错误发生等),它会向CPU发送一个中断信号。
  2. 保存现场:CPU接收到中断信号后,会保存当前执行状态(如寄存器内容、程序计数器等),以便稍后能够恢复执行。
  3. 执行中断服务程序(ISR, Interrupt Service Routine):CPU跳转到预先设定的中断处理程序地址,执行相应的处理逻辑。
  4. 恢复现场:中断处理完成后,CPU恢复之前保存的状态,继续执行原来的任务。

英文翻译

“中断”对应的英文是 Interrupt。完整的术语可以是 Interrupt Request (IRQ) 或者 Interrupt Service Routine (ISR),具体取决于上下文:

  • Interrupt:中断
  • Interrupt Request (IRQ):中断请求
  • Interrupt Service Routine (ISR):中断服务程序

在硬件和操作系统的设计中,中断机制是非常关键的部分,它使得CPU能够高效地响应外部事件,而不必频繁轮询设备状态。

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

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

相关文章

分享|instructionfine-tuning 指令微调是提高LLM性能和泛化能力的通用方法

《生成式AI导论》课程中,李宏毅老师提到一篇关于“ instruction fine-tuning” 指令微调的论文: 《Scaling Instruction-Finetuned Language Models》 摘要分享: 事实证明, 在一组以指令形式表达的数据集上微调语言模型可以提…

python生成图片和pdf,快速

1、下载安装 pip install imgkit pip install pdfkit2、wkhtmltopdf工具包,下载安装 下载地址:https://wkhtmltopdf.org/downloads.html 3、生成图片 import imgkit path_wkimg rD:\app\wkhtmltopdf\bin\wkhtmltoimage.exe # 工具路径,安…

Hive:基本查询语法

和oracle一致的部分 和oracle不一样的部分 排序 oracle中,在升序排序中,NULL 值被视为最大的值;在降序排序中,NULL 值被视为最小的值。 在MySQL中,NULL 被视为小于任何非空值。 在Hive中, NULL是最小的; Hive除了可以用order…

Python GUI 开发 | PySide6 辅助工具简介

关注这个框架的其他相关笔记:Python GUI 开发 | PySide6 & PyQt6 学习手册-CSDN博客 在上一章中,我们介绍了如何搭建 PySide6 & PyQt6 的开发环境。在搭建环境的时候我们配置了几个几个快捷工具,很多小伙伴可能都不知道是干啥用的。那…

hive:数据导入,数据导出,加载数据到Hive,复制表结构

hive不建议用insert,因为Hive是建立在Hadoop之上的数据仓库工具,主要用于批处理和大数据分析,而不是为OLTP(在线事务处理)操作设计的。INSERT操作会非常慢 数据导入 命令行界面:建一个文件 查询数据>>复制>>粘贴到新…

HarmonyOS:ForEach:循环渲染

一、前言 ForEach接口基于数组类型数据来进行循环渲染,需要与容器组件配合使用,且接口返回的组件应当是允许包含在ForEach父容器组件中的子组件。例如,ListItem组件要求ForEach的父容器组件必须为List组件。 API参数说明见:ForEa…

基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)

一、引言 1.1研究目标与内容 本研究旨在构建一个基于 PostgreSQL 的自然语义解析电子病历编程体系,实现从电子病历文本中提取结构化信息,并将其存储于 PostgreSQL 数据库中,以支持高效的查询和分析。具体研究内容包括: 电子病历的预处理与自然语言处理:对电子病历文本进…

安装 docker 详解

在平常的开发工作中,我们经常需要部署项目。随着 Docker 容器的出现,大大提高了部署效率。Docker 容器包含了应用程序运行所需的所有依赖,避免了换环境运行问题。可以在短时间内创建、启动和停止容器,大大提高了应用的部署速度&am…

深度学习项目--基于LSTM的糖尿病预测探究(pytorch实现)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 LSTM模型一直是一个很经典的模型,一般用于序列数据预测,这个可以很好的挖掘数据上下文信息,本文将使用LSTM进行糖尿病…

初阶1 入门

本章重点 C的关键字命名空间C的输入输出缺省参数函数重载引用内联函数auto关键字基于范围的for循环指针的空值nullptr 1.C的关键字 c总共有63个关键字,其中包含c语言的32个 这些关键字不需要特意去记,在我们日后写代码的过程中会慢慢用到并记住。 2.…

动态规划DP 数字三角形模型(模型分析+例题分析+C++代码实现)(数字三角形、摘花生、最低通行费用、方格取数、传纸条)

总体概览 数字三角形 原题链接 AcWing 898.数字三角形 题目描述 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路…

C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…

力扣hot100链表总结-day0127

目录 206.反转链表(0127) 19.删除链表的倒数第N个节点(0127) 206.反转链表(0127) 总结: 1.迭代实现:将给出的头节点head固定,始终把head的下一个节点给安装成新头节点…

安宝特方案 | AR在供应链管理中的应用:提升效率与透明度

随着全球化的不断深入和市场需求的快速变化,企业对供应链管理的要求也日益提高。如何在复杂的供应链环境中提升效率、降低成本,并确保信息的透明度,成为了各大行业亟待解决的问题。而增强现实(AR)技术,特别…

力扣111二叉树的最小深度(DFS)

Problem: 111. 二叉树的最小深度 文章目录 题目描述思路复杂度Code 题目描述 思路 1.欲望求出最短的路径,先可以记录一个变量minDepth,同时记录每次当前节点所在的层数currentDepth 2.在递的过程中,每次递一层,也即使当前又往下走…

python -m pip和pip的主要区别

python -m pip和pip的主要区别在于它们与Python环境的关联方式和安装路径。‌ ‌与Python环境的关联方式‌: pip 是直接使用命令行工具来安装Python包,不指定特定的Python解释器。如果系统中存在多个Python版本,可能会导致安装的包被安装到…

RHEL封闭环境部署zabbix

背景:client端操作系统升级.然后安装了该操作系统基础版本的zabbix-client,与原来的zabbix-server版本不匹配,需要重新部署一台zabbix-server zabbix-server GUI上该client采集不到系统数据 说明:下文的 x.x.x.x 代表服务端的IP…

vim 中粘贴内容时提示: -- (insert) VISUAL --

目录 问题现象:解决方法:问题原因: 问题现象: 使用 vim 打开一个文本文件,切换到编辑模式后,复制内容进行粘贴时有以下提示: 解决方法: 在命令行模式下禁用鼠标支持 :set mouse …

数据结构与算法-要点整理

知识导图: 一、数据结构 包含:线性表(数组、队列、链表、栈)、散列表、树(二叉树、多路查找树)、图 1.线性表 数据之间就是“一对一“的逻辑关系。 线性表存储数据的实现方案有两种,分别是顺序存储结构和链式存储结构。 包含:数组、队列、链表、栈。 1.1 数组…

二级C语言题解:统计奇偶个数以及和与差、拼接字符串中数字并计算差值、提取字符串数组中单词尾部字母

目录 一、程序填空 --- 统计奇偶个数以及和与差 题目 分析 二、程序修改 --- 拼接字符串中数字并计算差值 题目 分析 三、程序设计题 --- 提取字符串数组中单词尾部字母 题目 分析 前言: 本节讲解C语言二级的统计奇偶个数以及和与差、拼接字符串中数字并计…