计算机操作系统学习-引论

news2024/12/25 1:10:38

        本专栏是对计算机操作系统学习的记录:《现代操作系统 第四版》,电子版的可以在评论区自取。

1 计算机硬件简介

        操作系统与运行该操作系统的计算机硬件密切相关。如图1所示,我们可以将自己的计算机抽象为,CUP,内存和I/O设备

图1

 1.1 CPU

        CPU是计算机的核心设备,它从内存中读取指令执行。然后取指令、解码和执行,直到程序被执行完成。我们知道CPU能够取指令、解码和执行。因此CPU有一套可执行的指令集。ARM和X86处理器不能相互执行(它们的指令集不同)。

        由于直接访问内存得到指令和数据的时间远远大于CPU每次执行的时间,这样会操作CPU资源的浪费,因此CPU内部都会有一些保存关键变量和临时数据的寄存器。还有包括其他的寄存器,例如程序计数器程序状态字寄存器等。

        从上文我们知道CPU中有取指令,解码和执行三个步骤。例如图2所示,其实对应了CPU中的三个单元,它们不再是顺序执行,而是每个单元流水线执行(也就是在操作的过程中互不影响)。

图2

1.2多线程和多核CPU

        随着时代的发展,Intel引入了多线程,允许CPU保持两个不同的线程状态,然后在纳秒级的时间内来回切换。多线程不是并行操作,而是并发操作本质是一个CPU来回执行多个线程。可以充分利用CPU资源。渐渐的CPU发展为多核,实现线程的并行操作,如下图3所示4核CPU。

图3

 图3a是共享L2缓存的4核CPU,其中每个核中有L1级缓存(图中斜线阴影部分)。

1.3 存储器

        在任何一种计算机中,第二个主要部件都是存储器。在理想情况下,存储器应该能够瞬间对cpu的命令进行反应,这样CPU就不会受到存储器的限制。图4所示,从上到下访问时间逐渐增大,而且存储能力也逐渐增大。

图4

         寄存器是存储在CPU内部,高速缓存分为1级,2级和3级,多核cpu都有独立的1级缓存,共享2级和3级缓存(缓存是一项很重要的技术)。可以通过任务管理器查看缓存。

图5

1.4 I/O设备

        CPU和存储器不是操作系统唯一需要管理的资源。I/O设备也需要被管理,I/O设备一般包括两个部分:设备控制器和设备本身。控制器是电路板上的芯片,它从操作系统接收命令,从设备中读取数据。由于每类的设备控制器都是不同的,例如键盘控制器和鼠标控制器都不尽相同,因此需要有专门与控制器对话,发出指令和接收响应的软件,成为设备驱动程序。例如每台打印机都会有驱动程序。一般该程序需要运行在内核区。

      要将设备驱动程序装入操作系统,有三个途径。第一、将内核和设备驱动程序重新连接,然后重启系统;第二、在一个操作系统文件中设置一个入口并通知该文件需要一个设备驱动程序,然后重启系统。在重启时,操作系统需要寻找驱动程序并装载。第三、操作系统能够运行时接收驱动程序并立即将其安装好。

实现I/O设备输入和输出的三种方式:

        1、CPU轮询忙等待:用户程序发送一个系统调用,内核将其翻译成对设备驱动程序的调用。然后CPU频繁检查设备是否完成了工作,如果完成了则返回,否则忙等待。 

        2、第二种方式是设备驱动程序启动设备,并且让该设备在操作完成时发出一个中断

  1.         设备驱动程序通过写设备寄存器通知设备控制器要做什么
  2.         设备控制器开始工作,被告知要进行读写的字节数量
  3.         设备完成后,通过特定的总线给中断控制器发送中断信号。
  4.         中断控制器将中断信号发送给CPU。
图6

         3、为I/O使用一种特殊的直接存储器访问(Direct memory Access,DMA)。CPU告知DMA需要传输的字节数,有关设备和内存地址等信息,等待DMA芯片完成时产生中断

1.5 计算机如何启动

        每台计算机都有一个母版,母版上有一个成为基本输入输出系统(Basic Input Basic Output System,BIOS)的程序。在BIOS内有底层I/O软件,包括读键盘,写屏幕,进行磁盘I/O及其他过程。这个程序存储在RAM中。

        在计算机启动时(计算机通电,或者开关键按下),BIOS开始运行

  •         检查安装的RAM数量,及其他设备是否响应正常。
  •         扫描PCIe和PCI总线并找到连接在上面的所有设备,然后进行配置。
  •         BIOS通过尝试存储在CMOS存储器中的设备清单决定启动设备。
  •         然后操作系统询问BIOS,以获得配置信息,和所有驱动程序,并调用到内核创建进程。

记录到这里第一章基本就结束了,最后放置电子版链接如下:

链接:https://pan.baidu.com/s/1guCXbK3FA5sSvl9Yp9xfvQ 提取码:2boz

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

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

相关文章

【数学建模】Day01——层次分析法

文章目录 1. 引出层次分析法1.1 思考问题1.2 平台借力1.3 分而治之的思想1.4 一致矩阵1.5 一致性检验1.6 一致矩阵计算权重1.7 判断矩阵求权重 2. 层次分析法2.1 定义2.2 具体步骤2.3 局限性 1. 引出层次分析法 1.1 思考问题 我们评价的目标是什么?我们为了达到这…

C语言:指针详解【进阶】后篇

目录 函数指针函数指针数组指向函数指针数组的指针回调函数 前言: 在C语言:指针详解【进阶】前篇中我们深入学习了字符指针,数组指针,指针数组以及数组传参和指针传参。我们对指针的应用有了较为深刻的认识,今天这里我…

BusterNet网络Python模型实现学习笔记之二

文章目录 一、squeeze函数的用法二、nn.CrossEntropyLoss函数三、isinstance函数四、定义冻结层 freeze_layers五、SummaryWriter 基础用法六、Python 基础语法1.变量嵌入到字符串2. enumerate() 函数3. 进度条库tqdm4. 字典(dict)展开为关键字参数&…

TAPFixer总结

相关工作 Menshen 检测属性用户写 et al检测属性就简单三个 未来工作: liveness; implicit; 数据集; 抽象方式合并;抽象规则配置;缓解谓词爆炸;concurrency的说明; 代码简化工作;给出能修复的漏洞种类 …

《基于光电容积法和机器学习的冠状动脉疾病患者出血风险预测》阅读笔记

目录 一、论文摘要 二、论文十问 三、论文亮点与不足之处 四、与其他研究的比较 五、实际应用与影响 六、个人思考与启示 参考文献 一、论文摘要 在冠状动脉疾病(CAD)患者的抗血栓治疗过程中,出血事件是关注的主要焦点。本研究旨在探讨…

浅谈一下布隆过滤器的设计之美

1 缓存穿透 2 原理解析 3 Guava实现 4 Redisson实现 5 实战要点 6 总结 布隆过滤器是一个非常有用的数据结构。它可以在大规模数据中高效地判断某个元素是否存在。布隆过滤器的应用非常广泛,不仅在搜索引擎、防垃圾邮件等领域中经常用到,而且在许多…

R语言单因素方差分析

R中的方差分析 介绍用于比较独立组的不同类型的方差分析,包括: 单因素方差分析:独立样本 t 检验的扩展,用于在存在两个以上组的情况下比较均值。这是方差分析检验的最简单情况,其中数据仅根据一个分组变量&#xff0…

【数据结构】七大排序总结

目录 🌾前言 🌾 内部排序 🌈1. 直接插入排序 🌈2. 希尔排序 🌈3. 直接选择排序 🌈4. 堆排序 🌈5. 归并排序 🌈6. 冒泡排序 🌈7. 快速排序 🌾外部排序 &…

4 月份 火火火火 的开源项目

盘点 4 月份 GitHub 上 Star 攀升最多的开源项目,整个 4 月份最火项目 90% 都是 AI 项目(准确的说,最近半年的热榜都是 AI 项目) 本期推荐开源项目目录: 1. AI 生成逼真语音 2. 复旦大模型 MOSS! 3. 让画中…

万万没想到在生产环境翻车了,之前以为很熟悉 CountDownLatch

前言 需求背景 具体实现 解决方案 总结 前言 之前我们分享了CountDownLatch的使用。这是一个用来控制并发流程的同步工具,主要作用是为了等待多个线程同时完成任务后,在进行主线程任务。然而,在生产环境中,我们万万没想到会…

【LeetCode】583. 两个字符串的删除操作

583. 两个字符串的删除操作(中等) 思路 这道题的状态定义和 1143. 最长公共子序列 相同,「定义一个 dp 数组,其中 dp[i]表示到位置 i 为止的子序列性质,并不是必须以 i 结尾」,此时 dp 数组的最后一位即为…

富士康终于醒悟了,重新加码中国制造,印度制造信不过

4月25日富士康在郑州揭牌新事业总部,显示出在扰攘了数年之后,富士康再度加强郑州富士康的发展力度,这应该是富士康在印度努力数年之后终于清醒了,印度制造终究不如中国制造可靠。 一、苹果和富士康在印度发展的教训 这两年苹果和富…

智能算法系列之基于粒子群优化的模拟退火算法

文章目录 前言1. 算法结合思路2. 问题场景2.1 Sphere2.2 Himmelblau2.3 Ackley2.4 函数可视化 3. 算法实现代码仓库:IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第四篇文章,主要介绍粒子群优化算法与模拟退火算法的结合,以弥补各自…

【unity项目实战】3DRPG游戏开发07——其他详细的设计

敌人动画设计 新增图层动画,把权重设为1 在新图层默认新建一个空状态Base State,实现怪物默认动画播放Base State,因为Base State是空动画,所以默认会找上一个层的动画,这样就实现了两个图层动画的切换,也可以选择修改权重的方式实现 敌人随机巡逻 显示敌人巡逻的范…

网络字节序和主机字节序详解(附代码)

一、网络字节序和主机字节序 网络字节序和主机字节序是计算机网络中常用的两种数据存储格式。 主机字节序: 指的是在计算机内部存储数据时采用的字节排序方式。对于一个长为4个字节的整数,若采用大端字节序,则该整数在内存中的存储顺序是&a…

AppScan-被动手动扫描

被动扫描是针对性的扫描,浏览器代理到AppScan,然后进行手工操作,探索产生出的流量给AppScan进行扫描。这样可以使得扫描足够精准,覆盖率更加高,还能减少不必要的干扰 (一)环境准备 1、火狐安装…

SAP UI5 之Controls (控件) 笔记三

文章目录 官网 Walkthrough学习-Controls控件1.0.1 在index.html中使用class id 属性控制页面展示的属性1.0.2 我们在index.js文件中引入 text文本控制1.0.3打开浏览器查看结果 官网 Walkthrough学习-Controls控件 Controls控件 在前面展示在浏览器中的Hello World 是在Html …

Presto 之Hash Join的Partition

一. 前言 在Presto中,当两表Join为Hash Join并且join_distribution_type为PARTITIONED的时候,Presto会将Build表分区(Partition)后再进行Join操作。在Presto中的Join操作中,对表的分区有两级,第一级是将Has…

超简单搭建一个自用的ChatGPT网站(支持给网站添加访问密码)

前言: 有小伙伴留言想在自己的服务器搭建上图所示的ChatGPT网站,那么今天就是教大家如何在自己的服务器搭建像上图所示的ChatGPT网站 准备条件: 1)一台服务器(这里用centos7) 2)ChatGPT的API-KEY 一、Docker环境部署…

存储资源调优技术——SmartThin智能精简配置技术

目录 基本概念 工作原理 SmartThin关键技术 SmartThin主要功能 应用场景 精简LUN,存储空间超分配 按需动态分配存储资源,提高存储资源利用率 Thick和Thin LUN的区别如下 基本概念 Thin Lun属于存储资源的虚拟化,因此需要基于RAID 2.0存…