【现代操作系统】第一章:引论∑

标签(空格分隔):【现代操作系统】


第一章:引论

  • 操作系统:为用户程序提供一个更清晰的计算机模型,并管理输入/输出设备。

  • 用户与之交互的程序,如果基于文本通常称为shell,如果基于图标则称为图形用户界面(GUI,Graphical User Interface).
    每个人都会对诸如Windows,Linux,macOS等操作系统有所体验,但这些交互是很肤浅的。甚至包括shell和GUI并不是操作系统的一部分,尽管这些程序使用操作系统来完成工作。

下图给出了主要部件的简化视图。

  • 内核态(管态、核心态):在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。
  • 用户态:在该模式下只能使用了机器指令的一个子集。特别的,那些 影响机器控制 或 可以进行I/O操作的指令,在用户态下都是被禁止的。
    用户接口程序(shell或GUI)处于用户态程序中的最底层。

注意:在嵌入式系统(该系统没有内核态) 或者 解释系统(它采用解释方式而非硬件方式区分组件,如基于Java的操作系统)中,上述区别是模糊的。
另外,在许多系统中,一些在用户态下运行的程序协助操作系统完成特权功能。在这类系统中,很难划分出一条明显的界限。

1.1 什么是操作系统

操作系统很难有准确的定义。操作系统有两个基本上独立的任务,一是管理硬件,二是为应用程序提供借口。

1.1.1 作为扩展机器的操作系统

在机器语言级别,多数计算机的体系结构是十分原始的,而且编程困难。例如SATA(Serial ATA)硬盘,我们是使用硬盘驱动(disk driver)来进行软硬件交互(而不用深入细节,而不是是直接使用接口。
在这里,操作系统的任务是隐藏硬件,来呈现给程序良好的抽象。

1.1.2 作为资源管理者的操作系统

现代计算机包含处理器、存储器、始终、磁盘等等许多设备。在这里,操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O接口设备的分配。
资源管理包括两种不同方式来实现共享资源:时间上复用 和 空间上复用。

1.2 操作系统历史

第一台数字计算机是Babbage发明设计的。但可惜这是一条纯机械的装置,没有操作系统。
第一代:真空管和穿孔卡片。
第二代:晶体管和批处理系统。
第三代:集成电路和多道程序设计。
第四代:个人计算机。
第五代:移动计算机。

1.3 计算机硬件简介

1.3.1 CPU

CPU是从内存中取出指令并执行之。
在每一个CPU基本周期中,先从内存中取出指令,编码以确定其类型和操作数,然后执行,循环以上步骤,直到程序被执行完成。
每一个CPU都有一套可执行的专门指令集。因此,x86处理器不能执行ARM程序,反之ARM处理器也不能执行x86程序。
对于CPU而言,访寸寻找指令和数据花费的时间 比 执行指令花费的时间 长很多。因此CPU内部有一些用来保存关键变量和临时数据的寄存器。
除此之外,大多数CPU还有一些对程序员可见的专用寄存器,例如 程序计数器、堆栈指针、程序状态字体。

  • 程序计数器:保存了下一条指令的内存地址。并且在指令取出后,程序计数器自动加一。
  • 堆栈指针:指向内存中当前栈的顶端。
  • 程序状态字(Program Status Word,PSW ):包含了条件码位(由比较指令设置),CPU优先级、模式(用户态或内核态,一个二进制位来控制),以及各种其他控制位。

操作系统必须知晓所有的寄存器。例如,在时间多路复用CPU中,操作系统经常会终止正在运行的某一个程序并启动/再启动另外一个程序。每次停止一个运行的程序,操作系统必须保存所有的寄存器值,这样在稍后该程序被重新运行时,可以把这些寄存器重新装入。

为了改善性能,CPU设计师早就放弃了同时读取、解码和执行一条指令的简单模型。当代CPU具有同时取出多条指令的机制,即流水线机制。
比流水线机更先进的设计是 超标量CPU。 在该设计模式中,由多个执行单元,例如,一个CPU用于整数算术运算,一个用于浮点算术运算,一个用于布尔运算等。只要由一个执行单元空闲,就马上检测缓冲区是否还有可以处理的指令。当然,这种设计模式有自己的缺陷,例如程序的指令经常不按序执行。

  • 系统调用:用户使用系统调用来从操作系统中获取服务。

  • TRAP指令:计算机使用陷入指令来执行系统调用,TRAP指令使用户态切换为内核态。

  • 多线程/超线程:允许CPU保持两个不同的线程状态,然后在纳秒级的时间尺度内来回切换。多线程并不是并行处理,一个时刻内只有一个进程在运行。

1.3.2 存储器

  • 寄存器:存储系统的顶层,最靠近CPU的存储器。和CPU速度一样快(由相同的材料做成),访问没有时延。但价格放归,容量小。
  • 高速缓存:由硬件控制,主存被分割为高速缓存行(cache line)。一般被放到CPU附近的位置。价格昂贵,大小有限。很多计算机设置多级高速缓存。
  • 主存:存储系统的主力,通常称为随机访问存储器(Random Access Memory, RAM),RAM的最大特征便是断电后丢失内容。另外,计算机使用只读存储器(Read Only Memory, ROM),ROM断电后内容不会丢失,因此用于启动计算机的引导加载模块就存放在ROM中。
  • 磁盘:磁盘容量大且便宜,速度慢。其低俗的原因是磁盘是一种机械装置。当然还有一些根本不是磁盘的磁盘,比如固态硬盘。

1.3.3 I/O设备

除了CPU与存储器之外,操作系统还需要管理I/O设备。
I/O设备包括两部分:设备控制器、设备本身。
设备控制器是插在电路板上的一块/一组芯片,这块电路板物理地控制设备,它从操作系统接受命令。由于每类设备控制器都是不同的,所以需要对不同的软件进行控制,设备驱动程序完成该项工作。
设备本身有一个相对简单的接口,该接口既不能做很多工作,又已经被标准化了。
实现输入/输入的方式有三种:1. 忙等待,即查询方式。2. 终端方式。3. 直接存储器访问(Direct Memory Access,DMA)。

1.3.4 总线

  • 共享总线架构:多个设备使用一些相同的导线传输数据。

  • 并行总线架构:通过多条导线发送数据的每一个字。

  • 串型总线架构:使用数据通路来传递集合了所有位的一条消息。

  • 即插即用:系统自动收集有关I/O设备的心细,集中赋予中断级别和I/O地址,然后通知每块卡所使用的数值。

1.3.5 启动计算机

每台计算机上有一块母板,母板上有一块名为 基本输入输出系统(Basic Input Output System, BIOS)的程序。
在计算机启动时,BIOS开始运行,它首先检查安装的RAM的数量,键盘和其他基本设备是否已经安装并正常响应。接着,它开始扫描PCIe和PCI总线并找出连接上面的所有设备。如果现有设备和系统上一次启动时设备不同,则新的设备将被配置。然后,BIOS通过尝试存储在CMOS存储器中的设备清单决定启动设备(此时用户可以进入一个BIOS配置程序,对设备清单进行修改)。启动设备上的第一个扇区被读入内存内存并执行。然后,操作系统询问BIOS来获得配置信息。对于每种设备,系统检查对应的设备驱动程序是否存在。一旦设备驱动程序就位,操作系统就将它们调入内核。随后初始化有关表格,创建需要的任何北京进程,启动登入程序。

1.4 操作系统分类

  1. 大型操作系统:用于大型机。主要面向多个作业的同时处理。
  2. 服务器操作系统
  3. 多处理器操作系统
  4. 个人计算机操作系统
  5. 掌上操作系统
  6. 嵌入式操作系统:不允许用户安装软件,所有的软件都保存在ROM中。其主要特征是:不可信的软件肯定不能在嵌入式系统上运行。
  7. 传感器节点操作系统
  8. 实时操作系统:硬实时操作系统/软实时操作系统
  9. 智能卡操作系统

1.5 操作系统的概念

1.5.1 进程

  • 进程:进程本质上正在执行的一个程序。与每个进程相关的还有资源集,包括寄存器(程序计数器和堆栈指针)、打开文件的清单、突出的报警、有关进程清单,以及运行该程序所需要的其他基本信息。进程基本上是容纳运行一个程序所需要的所有信息的容器。

  • 地址空间:从某一个最小值的存储位置到某个最大值的存储位置的列表。在地址空间中,进程可以进行读写。同时,改地址空间存放有可执行程序,程序的数据以及程序的堆栈。

  • 进程表(process table):进程表是数组/链表结构,保存了一个进程有关的所有信息(除了该进程自身地址空间的内容),当前存在的每一个进程都占用进程表中的一项。

  • UID(User IDentification): 系统管理器授权给每个进程使用一个给定的UID。每一个被启动的进程都有一个启动该进程的用户UID(子进程与父进程有一样的UID)。

  • GID(Group IDentification):每一个组有一个GID,用户可以是某一个组的成员。

1.5.2 地址空间

如果有一个进程有比计算机内存还大的地址空间,且该进程希望使用全部的内存,该从如何处理?
早期计算机无法处理。现在,可以使用虚拟存储技术。

1.5.3 文件

如前所述,操作系统一个重要的功能是隐藏磁盘和其他I/O的细节特征,提供给程序员一个良好的、清晰的独立于设备的抽象文件类型。

  • 目录(directory):
  • 根目录(root directory):目录的顶部。
  • 绝对路径名:包含了从根目录到该文件的所有目录清单。
  • 工作目录(working directory):若给定一个路径没有以斜线开头,则将在工作目录下寻找。
  • 文件描述符(file descriptor):读写文件之前,首先检查文件的访问权限,若权限许可,则返回文件描述符;否则返回一个错误码。
  • 特殊文件(special file):提供特殊文件文件是为了使I/O设备看起来像文件一般。有两类特殊文件,块特殊文件 与 字符特殊文件。
  • 管道(pipe):管道是一种虚文件,它可以连接两个进程。

1.5.4 输入/输出

每个操作系统都有管理其I/O设备的I/O子系统。
某些I/O软件是设备独立的,即这些I/O软件部分可以同样应用于许多或者全部的I/O设备上。I/O软件的其他部分,如设备驱动程序,是专门为特定的I/O设备设计的。

1.5.5 保护

管理系统的安全性完全依赖于操作系统。

1.5.6 shell

操作系统是进行系统调用的代码。
编译器、编辑器、汇编程序、链接程序、效用程序、命令解释程序等虽然十分重要,但并不是操作系统的组成部分。
shell是UNIX下的命令解释器,虽然shell不是操作系统的一部分,但是它体现了许多操作系统的特性,并且很好地说明了系统调用的具体用法。shell同时也是终端用户与操作系统之间的接口(除非用户使用的是图形化界面)/
shell分为很多种,例如sh、csh、ksh、bash等。
用户登录时,同时启动了一个shell。它以终端作为标准输入和标准输出。首先显示 提示符(prompt)

我的微信公众号

【现代操作系统】第一章:引论相关推荐

  1. c语言编程指法输入,C语言 课件 第一章引论.pdf

    C语言 课件 第一章引论 我很高兴为同学们上C语言课 我希望同学们有 良好的课堂纪律,给老师一个好心情: 让我先谢谢同学们的良好合作: 师生共努力,教好学好C语言; 学会编程更有利于数学的应用; 学习 ...

  2. 第一章 引论(数据库系统原理)

    第一章 引论 前面一半听的是浙江大学陈岭老师的课,后一半听的是中国人名大学王珊等老师的课. 1 引论(浙江大学 陈岭) 1.数据库系统目的数据处理和管理是计算机应用最重要的领域,数据库系统知识对于计算 ...

  3. 软件测试方法和技术第一章——引论

    第一章--引论 文章目录 第一章--引论 引论 1.1软件测试的必要性 1.2 为什么要进行软件测试? 1.3 什么是软件测试? 1.3.1 软件测试学科的形成 1.3.2 正反两面的争辩 1.4 测 ...

  4. PMBOK(第六版) 学习笔记 ——《第一章 引论》

    系列文章目录 PMBOK(第六版) 学习笔记 --<第一章 引论> PMBOK(第六版) 学习笔记 --<第二章 项目运行环境> PMBOK(第六版) 学习笔记 --<第 ...

  5. 编译原理-第一章-引论

    编译原理 第一章 引论 1,概念简介 (1) 编译器:一个编译器就是一个程序,它可以阅读以某一种语言(源语言)编写的程序,并把该程序翻译成为一个等价的.用另一种语言(目标语言)编写的程序. 2,一个编 ...

  6. PMP 考点 第一章 引论

    第一章 引论 章节 序号 知识点 考点级别 备注 第一章 引论 1.1 项目的定义和特征 1 1.2 运营和项目的区别 1 1.3 项目的意义.启动背景和EMP 1 1.4 项目管理定义.项目管理的价 ...

  7. 【再读第六版PMBOK】第一章 引论

    [再读第六版PMBOK]第一章 引论 1)项目 1.1)项目的两大特点 1.2)项目驱动组织变更 1.3)项目的商业价值 1.4)项目启动背景 2)项目管理的重要性 3)项目,项目集,项目组合以及运营 ...

  8. 操作系统第一章课后题

    操作系统第一章课后题 1. 设计现代OS的主要目标是什么? 答:方便性,有效性,可扩充性和开放性 2. OS的作用可表现在哪几个方面? 答:(1) OS作为用户与计算机硬件系统之间的接口.(2) OS ...

  9. 王道-操作系统-第一章

    王道-操作系统-第一章 1.概念.功能.目标 熟悉的操作系统 windows/linux/macos/ios/Android 1.1 概念 层次结构 定义 1.2 功能和目标 作为系统资源的管理者 进 ...

  10. PMBOK(第六版) PMP笔记——《一》第一章 引论

    本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ 第一章  引论 1."项目管理知识体系":应该包含所有行业.应用领域项目管理的具体知识.技能.方法和实践 ...

最新文章

  1. 红警1开源放出源码,4K高清重制版登顶Steam畅销榜!网友:青春回来了
  2. UVa11855 Buzzwords(hash)
  3. The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online
  4. 第4代白盒測试方法介绍--理论篇
  5. 《分布式系统:概念与设计》一2.3.2 体系结构模式
  6. Unity5 GI与PBS渲染从用法到着色代码
  7. java synchronized 关键字(1)对象监视器为Object
  8. git merge 冲突_卧槽!小姐姐用动画图解 Git 命令,这也太秀了吧?!
  9. Storm记录02-- Storm是什么
  10. LoadRunner测试ajax框架,回放后系统中没有产生数据解决方法
  11. Ubuntu18.04-albert编译安装记录
  12. 计算机数据结构图知识点,2011考研计算机数据结构复习重点解析:图的应用
  13. Linux的常见的发行版以及不同发行版之间的联系与区别
  14. 【Ubuntu16.04】下载、安装与启动神通数据库(保姆式教程)
  15. 国内外知名的21个Logo设计工具
  16. Netty编解码,粘包拆包及零拷贝
  17. easyui的datagrid可编辑框小功能实例
  18. LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本
  19. Maven聚合和继承
  20. 笨鸟Linux学习连载之 - 万事开头难

热门文章

  1. 几个字节的数据怎么加密好?_刚加上的女生怎么聊天开场?把握好这几个点,畅聊一整天...
  2. 用C语言输出1000到2000年之间的闰年
  3. 为Steemit创建一个免费的开源投票机器人
  4. David Silver RL课程笔记(一)
  5. 金仓KingbaseES中数据库逻辑备份总结
  6. 每个人都活在自己的精神世界中
  7. 联想笔记本电脑系统安装win10系统显卡驱动安装失败显示31?驱动人生教你如何解决
  8. PHP+Mysql服装商城 网上服装购物商城 基于PHP服装商城的系统设计与实现(2)分类
  9. python 模块大全
  10. 惠普linux系统改装win7,惠普HP笔记本预装win8改装成win7系统BIOS设置与安装方法