既然买了《现代操作系统》(《Modern Operating System》)这本书,那就好好学习一下吧,这是第一篇读书笔记。
##第一章 引论

计算机系统总的来说分为软件和硬件,如下图所示。多数计算机有两种运行模式:内核态和用户态软件中最基础的部分是操作系统, 它运行在内核态。操作系统具有对所有硬件的完全访问权限,可以执行机器能够运行的任何指令。 其他软件运行在用户态,只能使用部分机器指令。特别指出,哪些会影响极其的控制或可进行I/O操作的指令,在用户态中的程序是禁止的。 无法直接运行指令,则只能通过操作系统提供的接口来达到目的。

操作系统由硬件进行保护,防止用户试图对其进行修改。

大家都操作过Windows、Linux等操作系统,感觉这是不是就是操作系统? 这些与用户交互的程序,实际上并不是操作系统的一部分,经它们使用操作系统来完成工作,基于图标的称为图形用户界面(GUI, Graphical User Interface),我们所用的Windows就是这种,可以看到各种图标; 基于文本的则通常称为shell, 比如我们在Windows中使用cmd命令, 或者在Ubuntu中是Xshell等软件程序。

不过,在嵌入式系统(没有内核态)或解释系统(如基于Java的操作系统,它采用解释方式,而非硬件方式区分组件), 上述划分的边界是比较模糊的。

1.1 什么是操作系统

操作系统是一种运行在内核态的软件,但这个说法并不总符合事实, 不过操作系统概括起来主要有两个作用:

  • 1.为应用程序(程序员)提供资源集的清晰抽象
  • 2.管理硬件资源

第二点好理解, 第一点用大白话说就是给上层提供相应的接口或者方法, 让上层应用程序可以使用资源。

另外,对于操作系统的理解,从不同角度看的,有不同的定义,

自顶向下看:操作系统为应用程序提供基本抽象,从而使应用程序在此基础上可以组合功能。

自底向上看:操作系统用来管理复杂系统的各个部分,对资源的请求进行分配,调节不同程序见相互冲突的资源请求。其中, 资源的管理有两种不同方式实现多路复用(共享)资源:时间上复用和空间上复用

  • 时间上复用:当一种资源在时间上复用时,就是不同程序或者用户轮流使用它,大家排队使用。CPU就是这种操作, 一个位置,大家轮流坐
  • 空间上复用:每个程序都得到资源的一部分,就不用排队了,这就是多个位置,一人坐一个。内存就是这样分配。
  • 两种方式的公平和保护问题,由操作系统解决

1.2 操作系统的历史

第一代:真空管和穿孔卡片

第二代:晶体管和批处理系统

第三代:小规模集成电路和多到程序设计

第四代:个人计算机(大规模集成电路)

第五代:移动计算机(手机、平板等)

1.3 计算机硬件简介

####1.3.1处理器

先附图,所有设备都是通过总线连接的:

相当于计算机的大脑,从内存中取出指令并执行。每个CPU都一套可执行的专门指令集。所以x86不能执行ARM程序,ARM处理器也不能执行x86程序。

CPU内部有一些用来保存关键变量和了临时数据的通用寄存器、还有一些专用寄存器,如程序计数器(PC)、堆栈指针寄存器(指向当前内存中栈顶位置)、程序状态字寄存器(Program Status Word, PSW, 包含了条件码位、CPU优先级、内核态/用户态等控制位)。

CPU取出指令执行的机制,是通过内部的取指单元、解码单元、执行单元三部分完成。为了提高效率。现在CPU通常可以同时取出多条指令。当CPU执行指令n时,它可以正在对指令n+1解码,并读取指令n+2,这样,当执行完指令n后,无需等待,就可以直接执行n+1,然后n+2,这样的机制,称为流水线(pipeline)

intel和AMD的不同CPU设计:

1.3.2 存储器

典型的存储层次结构及其一个大概的访问时间如下:

存储系统的顶层是CPU中的寄存器,它用和CPU一样的材料制成,和CPU一样快,访问没有时延。其典型的存储容量:32位CPU为32x32位,在64位CPU中为64x64位

下一层次为高速缓存,CPU读取数据时,如果数据在高速缓存行中,则成为高速缓存命中。提升高速缓存命中有利于提升效率。

1.3.3磁盘

磁盘同RAM相比,每个二进制位的成本低两个数量级以上,所以容量大且便宜,但是读取速度低。

下图是常见的机械硬盘结构:



在一个磁盘中有一个或多个金属盘片,一个盘片的两面都可以记录数据,每个面都分为了很多同心圆,一个同心圆又被分为了很多少区,每个扇区的典型大小为512字节.然后如图所示,每个盘又分为了很多柱面(或称为扇面)。

每个盘面都有读写头用来读写数据。机械臂从一个柱面移动到相邻的柱面大约需要1ms,而随机移动到某一个柱面的典型时间为5-10ms。

1.3.4 I/O设备:

I/O设备就是输入输出设备,比如键盘、鼠标、打印机、硬盘灯。I/O设备一般包含两部分:设备控制器和i/o设备本身。控制器是插在电路板上的一块或一组芯片。

每一类设备控制器都是不同的,需要不同的软件进行控制,专门与控制器对话,发出命令并接收响应的软件,叫做设备驱动程序(device driver).

实现输入输出有三种方式。第一种,用户程序发出一个系统调用,然后就执行I/O过程,CPU一直等待I/O的数据,直到得到数据后处理,处理完以后返回结果,CPU才继续处理其他事情。这种方式称为忙等待。

第二种是通过中断机制,需要I/O时,先让I/O设备执行对应操作,这个时候CPU不需要等待,继续做其他事情,如果I/O执行完,拿到数据了,这个时候由中断控制器对CPU发起一个中断,处理这个I/O得到的数据。大白话就是先让CPU处理其他事情,当得到I/O数据后,告诉CPU,你先停一下现在手头上的事儿,你刚刚要的数据准备好了,现在给你,你处理下。

第三种,使用直接存储器访问芯片(DMA,Direct Memory Access),直接控制位流,DMA得到数据时,也会对CPU发起中断。

1.3.5 总线

总线就是CPU连接其他设备的线,各种设备间的数据传输通过总线完成。刚开始那张示例图已经展示了,现在再来张 总的示例图:

1.3.6 启动计算机(的过程)

通电后,系统首先启动BIOS里面的程序, BIOS全称基本输入输出系统(Basic Input Output System), 内部包含了一下基本的参数设置,以及接下来要启动的程序,从而把系统启动起来。

1.4 操作系统大观园(各种操作系统)

操作系统有很多,主要有:大型机操作系统、服务器操作系统、多处理器操作系统、个人计算机操作系统、掌上计算机操作系统、嵌入式操作系统、传感器节点操作系统、实时操作系统、智能卡操作系统。

1.5 操作系统概念

操作系统中有很多基本概念和抽象,它们是需要理解的核心内容,主要有:进程、地址空间、文件、I/O(输入输出)、保护、shell.

1.5.1 进程

进程:进程的本质是正在执行的一个程序。可以简单理解一个进程就是一个程序,但有时,一个程序包含多个进程。进程是对CPU处理器的一个抽象概念,可以把进程看做一个资源调度的集合,通常包含的资源有:寄存器(程序计数器和堆栈指针)、打开文件的清单、突出的警报、有关进程的清单以及程序需要的其他信息。

1.5.2 地址空间

计算机的主存用来保存正在执行的程序,为了找到程序在主存(也就是内存)的位置,物理内存设置了对应的地址编号,地址编号的一个集合就是地址空间。 物理地址空间是有限的,这是设备决定的,不过有虚拟地址空间技术。地址空间这个概念其实就是对内存的一个抽象,用来方便管理内存及进程。

1.5.3 文件

文件这个概念的抽象是为了描述数据的集合,这个比较好理解。在现实中的文件其实就是某些资料装订在了一起,这些资料通常保存的也是某些数据(文字、图表等)。

1.5.4 I/O(输入输出)

主要是指输入输出设备,通过这些设备来输入或输出数据, 比如键盘、打印机等。键盘输入字母,就可以在硬盘或者其他位置输出文字。

1.5.5 保护

计算机有大量信息,用户希望对其进行保护。对一个文件来说,通常有三种状态,可读(只能读取,不可修改),可写(只能写入,不可读出),可读可写。

1.6 系统调用

先简单了解下系统调用的流程,下图是调用一个read方法的过程:

然后是一些常用的调用函数:

1.7 操作系统结构

1.7.1 单体系统

整个操作系统以单一程序的方式运行,所有过程链接成一个大型可执行二进制程序

1.7.2 层次式系统

整个系统分了很多层,每一层都进行一些封装,再给上一层次调用,从而可以加入一些限制进行保护。

1.8 依靠C的世界

操作系统通常都是c语言(或者c++)写的。

《现代操作系统(中文第四版)》笔记 第一章 引论相关推荐

  1. 计算机操作系统《第四版》第一章 操作系统引论(思维导图)

    xmind文件提取链接:https://pan.baidu.com/s/1Fv97MU8sEDBOTHbs_AbwOA 提取码:0301

  2. 《现代操作系统》精读与思考笔记 第一章 引论

    本系列博文是<现代操作系统(英文第三版)>(Modern Operating Systems,简称MOS)的阅读笔记,定位是正文精要部分的摘录和课后习题精解,因此不会事无巨细的全面摘抄,仅 ...

  3. 浙大第四版概率论第一章思维导图

    浙大第四版概率论第一章思维导图 主要用于自己复习用

  4. 2021-10-06 统计学-基于R(第四版)第一章课后习题记录及总结

    1.1 题目如下 (1)基础数据录入: > income<-c("低收入户","中等偏下户","中等收入户","中等偏 ...

  5. 传感器技术(徐科军 第四版)第一章 绪论

    第一章:绪论 自动检测技术概述 自动检测系统的组成 被检测信息->传感器->检测电路->输出单元 传感器概述 定义 传感器(Transducer/Sensor):能感受规定的被测量并 ...

  6. PMBOK(第六版)第一章 引论

    01『跟我读PMBOK指南』 1. PMI 将项目管理知识体系 (PMBOK) 定义为描述项目管理专业范围内知识的术语.项目管理知识体系包括已被验证并广泛应用的传统做法,以及本专业新近涌现的创新做法. ...

  7. 笔记代码 | 统计学——基于R(第四版) 第一章

    1.1数据与统计学 统计学的含义,数据及其分类和来源 1.1.1 什么是统计学 收集数据 数据分析 描述统计:利用图表,计算简单统计量 推断统计:根据样本判断总体(参数估计和假设检验) 1.1.2 变 ...

  8. 计算机操作系统(第四版)第二章(进程的描述与控制)知识点整理

    进程的描述与控制 2.1 前驱图和程序执行 2.1.1 前驱图 2.1.2 程序顺序执行 2.1.3 程序并发执行 2.2 进程的描述 2.2.1 进程的定义与特征 2.2.2 进程的基本状态及转换 ...

  9. 《Fundamentals of Computer Grahpics 4ed》虎书第四版翻译——第一章 介绍

    文章目录 1.1 图形学领域 1.2 主要应用 1.3 图形学API 1.4 图形管线 1.5 数值问题 1.6 效率 1.7 设计和编写图形程序 1.7.1 类设计 1.7.2 Float还是Dou ...

  10. 《实用机器学习》(孙亮 黄倩.著)笔记——第一章 引论

    机器学习的主要类型: 一.回归问题 二.分类问题 三.推荐问题 四.排序问题 1.1什么是机器学习 从概念上讲,在机器学习中,我们的目标是从给定的数据集中学习出一个模型f,使得它能够有效地从输入数据中 ...

最新文章

  1. 算法时间复杂度求解法【详细过程说明】
  2. 联邦快递被曝拒送华为手机进入美国,即便是从英国寄出
  3. 正则爬取京东商品信息并打包成.exe可执行程序。
  4. 12、INNER JOIN:内连接
  5. 开启未来十年的编码技术之门
  6. 2021-11-10如何快速部署Ceph分布式高可用集群
  7. kafka : CommitFailedException already rebalanced and assigned max.poll.records
  8. Filecoin网络目前总质押量约为4018万枚FIL
  9. php中的require(),PHP中include()与require()的区别说明
  10. SQL SERVER 2000日期处理(转)
  11. java生成点阵图_【图片】一个零基础的小白是如何脱变成Java后端工程师的?【java吧】_百度贴吧...
  12. 计算机无法关闭开机密码,Win10系统开机密码取消不掉如何解决
  13. 干货分搞私投以技术面试
  14. Android studio断点调试源码
  15. Julia Computing获得 2400 万美元融资,前 Snowflake CEO 加入董事会
  16. jboot_jboot这些框架有意义吗
  17. 采购人员应该考什么证书?
  18. 浏览器内核和Standards模式与Quirks模式
  19. 【单片机笔记】详解如何用廉价NTC电阻准确高效的测量温度(附源码)
  20. logit方程怎么写_微分方程(2)-一阶常微分方程的解法

热门文章

  1. phpstudy 2016 版本的安装缺少VC9的运行库如何下载,解决!
  2. 7500 cpuz跑分 i5_锐龙R5 1400对比i5 7500哪个好 R5-1400与i5-7500区别对比详细评测
  3. 【免费看电视-直接看电视方法】打开电视发现看啥都要Vip?解决方法:
  4. python写给初学者的一封信
  5. 利用WPS功能破解无线路由器PIN码
  6. 【计算机组成与设计】3.4计算机CPU除法运算
  7. 一文2600字超全RF接口自动化框架项目实战【建议收擦】
  8. 综述 | 机器视觉表面缺陷检测
  9. 快速计算代码行小工具
  10. 微软Win11 商店各个应用可单独下载