操作系统精髓与设计原理(原书第6版) 第二章操作系统概述 学习笔记(2)

2023-11-01

                                           第二章  操作系统概述

 


2.4 现代操作系统的特征


1 微内核体系结构:微内核体系结构只给内核分配一些最基本的功能,包括地址空间、进程间通信( InterProcess Communication,简称IPC)和基本的调度。其他的操作系统服务都是由运行在用户态下且与其他应用程序类似的进程提供,这些进程可根据特定的应用和环境需求进行定制,有时也称这些进程为服务器。这种方法把内核和服务程序的开发分离开,可以为特定的应用程序或环境要求定制服务程序。

2 线程与进程:

线程:可分派的工作单元。它包括处理器上下文环境(包含程序计数器和栈指针)和栈中自己的数据区域(为允许子程序分支)。线程顺序执行,并且可中断,这样处理器可以转到另一个线程。

进程:一个或多个线程和相关系统资源(如包含数据和代码的存储器空间、打开的文件和设备)的集合。这紧密对应于一个正在执行的程序的概念。通过把一个应用程序分解成多个线程,程序员可以给在很大程度上控制应用程序的模块性和应用程序相关事件的时间安排。

3 对称多处理器结构定义(SMP):

(1)有多个处理器;(2)这些处理器共享一个内存和I/O设备,他们之间通过总线或别的内部连接方案互相连接。(3)所有处理器都可以执行相同的功能。

4 对称多处理器机构比单处理器结构的优势:

(1)性能:多个处理器的系统比只有一个同类型处理器的系统产生更好的性能,对多道程序设计而言,一次只能执行一个进程,此时所有别的进程都在等待处理器。对多处理器系统而言,多个进程可以分别在不同的处理器上同时运行。

(2)可用性:在对称多处理计算机中,其中单个处理器的失败不会使机器停止。相反,系统可继续运行,只是性能有所降低。

(3)增量增长:用户可以通过添加额外的处理器来增强系统的功能。

(4)可扩展性:生产商可以根据系统配置的处理器的数量,提供一系列不同价格和性能特征的产品。

5 多线程与对称多处理的区别:

他们是两个独立的概念。即使在单处理器机器中,多线程对结构化的应用程序和内核进程也是很有用的。由于多个处理器可以并行运行多个进程,因而堆成多处理计算机对非线程化的进程也是有用的。但是两个设施是互补的,一起使用效果更好。

6 分布式操作系统使用户产生错觉,使多机系统好像具有一个单一的内存空间、外存空间以及其他的统一存取措施,如分布式文件系统。

7 操作系统设计的另一个改革是使用面向对象技术,面向对象设计的原理用于给小内核增加模块化的扩展性。操作系统一级,基于对象的结构使程序员可以定制操作系统,而不会破坏熊的完整性。面向对象技术使得分布式工具和分布式操作系统的开发变得更容易。


2.5 微软的Windows概述


1 历史:

1981年8月发布DOS1.0,它使用Intel 8086 微处理器云下载8KB内存。

1983年发布DOS2.0

1984年IBM发布PC AT,微软发布DOS3.0。AT包含Intel 80286微处理器,提供扩充访问和内存保护功能。

1987年发布DOS3.3提供对新型IBM机器PS/2的支持。

1990年微软发布GUI版本,也称Windows3.0。仍然需要运行在DOS之上。

1993年发布Windows NT(3.1),32位操作系统,具有支持老的DOS和Windows应用程序的能力。

之后发布了Windows NT4.0 :作为Windows子系统一部分的几个图形组件(用户态下运行)被移到Windows NT(内核态下运行)执行体中。

2000年发布了Windows 2000.核心元素是活动目录。增加了即插即用和电源管理工具。

2001年发布了64位版本的Windows XP。

2003年发布了Windows server 2003,包括32位和64位的。

2007年发布了Windows Vista。

2 发展单用户多任务操作系统的两个主要原因是:

(1)随着微处理器的速度和存储能力的不断增长以及虚拟存储器的支持,应用程序变得更加复杂且相关性更强。

(2)客户/服务器计算的发展。

3 下图展示了Windows和Windows Vista的体系结构:

Windows的体系结构是高度模块化的。和几乎所有的操作系统一样,Windows把面向应用的软件和操作系统核心软件区分开。系统核心软件包括在内核下运行的执行体,内核,设备驱动器和硬件抽象层。内核模块软件可以访问系统数据和硬件,在用户态下运行的其他软件被限制访问系统数据和硬件。

4 Windows的内核态组件包括以下类型:
执行体:包括操作系统基础服务,例如内存管理、进程和线程管理等。
内核:控制处理器的执行。内核管理包括线程调度、进程切换、异常和中断处理、多处理器同步。跟执行体和用户级的其他部分不同,内核本身的代码并不在线程内执行,因此,内核是操作系统中唯一不可抢占或分页的一部分。
硬件抽象层(Hardware Abstraction Layer, HAL):在通用的硬件命令和响应与某一特定平台专用的命令和响应之间进行映射,它将操作系统从与平台相关的硬件差异中隔离出来。
设备驱动:用来扩展执行体的动态库。

窗口和图形系统:实现图形用户界面函数(简称GUI函数)。


5 Windows执行体包括一些特殊的系统函数模块,并为用户态的软件提供API。以下是对每个执行体模块的简单描述:
I/O管理器:提供了应用程序访问I/O设备的一个框架,还负责为进一步的处理分发合适的设备驱动程序。
高速缓存管理器:通过使最近访问过的磁盘数据驻留在内存中以提供快速访问,以及在更新后的数据发送到磁盘之前,通过在内存中保持一段很短的时间以延迟磁盘写操作,来提高基于文件的I/O性能。
●对象管理器:创建、管理和删除Windows执行体对象和用于表示诸如进程、线程和同步对象等资源的抽象数据类型。为对象的保持、命名和安全设置实施统一的规则。对象管理器还创建对象句柄,对象句柄是由访问控制信息和指向对象的指针组成的。
●即插即用管理器:决定并加载为支持一个特定的设备所需的驱动。
●电源管理器:调整各种设备间的电源管理。
●安全访问监控程序:强制执行访问确认和审核产生的规则。
●虚拟内存管理器:管理虚拟地址、物理地址和磁盘上的页面文件。控制内存管理硬件和响应的数据结构,把进程地址空间中的虚地址映射到计算机内存中的物理页。
●进程/线程管理器:创建、管理和删除对象,跟踪进程和线程对象。
●配置管理器:负责执行和管理系统注册表,系统注册表是保存系统和每个用户参数设置的数据仓库。
●本地过程调用(LPC)机制:为本地进程实现服务和子系统间的通信,而实现的一套高效的跨进程的过程调用机制。

6 Windows支持的4中基本的用户进程类型:

●特殊系统进程     ●服务进程     ●环境子系统     ●用户应用程序

7 客户/服务器模型的优点:

●简化了执行体

●提高了可靠性

●为应用程序与服务间通过RPC调用进行通信提供了一直的方法,且没有限制灵活性。

●为分布式计算提供了适当的基础。

8 Windows支持线程和SMP(对称多处理)的特征:

●操作系统例程可以在任何可以得到的处理器上运行,不同的例程可以在不同的处理器上同时执行。
●Windows支持在单个进程的执行中使用多个线程。同一个进程可以在不同的处理器上同时执行。
●服务器进程可以使用多线程,以处理多个用户同时发出的请求。
●Windows提供在进程间共享数据和资源的机制以及灵活的进程间通信能力。

9 面向对象的特点:

●封装    ●对象类和实例     ●继承    ●多态性

10 微内核管理的两类对象:

●分派器对象:是执行体对象的子集,线程可以在该类对象上等待,用来控制基于线程的系统操作的分派和同步。

●控制对象:被内核组件用来管理不受管理线程调度控制的处理器操作。表2.5列出了内核控制对象。表格如下:


2.6 传统的Unix系统


1 Unix最初是在贝尔实验室开发的。

2 Unix系统的里程碑阶段

●Unix系统从PDP-7上移植到PDP-11上,第一次暗示了Unix系统将成为所有计算机上的操作系统。

●用C语言重写Unix系统。

3 关于传统Unix系统的综述:它被设计成在单一处理器上运行,缺乏保护其数据结构避免被多个处理器同时访问的能力;它的内核不是通用的,只支持一种文件系统、进程调用策略和可执行文件格式。传统Unix的内核没有设计成可扩展的,几乎没有代码重用的设施。其结果是,当以往不同的Unix版本中增加新功能时,必须增加很多新的代码,因而产生一个膨胀的、非模块化的内核。


2.7 现代的Unix系统


1 现代Unix内核:有一个小的核心软件,它以模块化的风格编写,提供许多操作系统进程所需要的功能和服务,每个外部圆圈表示相应的功能和以多种方式实现的接口。具体如下图: 

2 现代Unix系统的例子:

●系统V版本4(SVR4)      ●BSD            ●Solaris 10


2.8 Linux操作系统


1 Linux成功的关键在于它是自由软件基金会(FSF)赞助的自由软件包。

2 Linux是高度模块化和已于配置的。这使得他在很多平台上显示出最佳的性能。

3 可以获得它的源码,销售商可以调整应用程序和使用方法以满足特定需求。

4 Linux没有采用微内核的方法,但是由于它特殊的模块结构,也具有很多为何方法的优点。

5 Linux的结构是一个模块的集合,这些模块可以根据需要自动的加载或卸载。这些相对独立的块称为可加载模块。

6 一个模块实际上就是内核在运行时可以链接或断开链接的一个对象文件。

7 Linux可加载块的两个重要特征:

动态链接:当内核已经在内存中并正在运行时,内核模块可以被加载和链接到内核。模块也可以在任何时刻被断开链接,从内存中移出。

可堆栈模块:模块按层次排列,,当被高层的客户模块访问时,它们作为库;当被底层模块访问时,它们作为客户。

8 动态链接简化了配置任务,节省了内核所占的内存空间

9 Linux中,用户程序或用户可以使用insmod和rmmod命令显示地加载和卸载内核模块,内核自身监视对于特定函数的需求,并可以根据需求加载和卸载模块。

10 通过可堆栈模块可以定义模块间的依赖关系,这有两个好处:

●对一组相似的模块的相同的代码可以移入一个模块,以减少重复。

●内核可以确保所需要的模块都存在,避免卸载其他正在运行的模块仍然依赖着的模块,并且当加载一个新模块时,加载任何所需要的附加模块

11 Linux内核组件:

12 主要的内核组件简要介绍:

信号:内核通过信号通知进程。

系统调用:进程是通过调用来请求系统服务的。可以粗略地分为6类:文件系统、进程、调度、进程间通信、套接字(网络)和其他。                                
进程和调度器:创建、管理和调度进程。
虚拟内存:为进程分配和管理虚拟内存。
文件系统:为文件、目录和其他文件相关的对象提供一个全局的、分层次的命名空间,还提供文件系统函数。
网络协议:为用户的TCP/IP协议套件提供套接字接口。

字符设备驱动:管理向内核一次发送或接收一个数据的设备,比如终端、调制解调器和打印机。

块设备驱动:管理以块为单位向内核发送和接收数据的设备,比如各种样式的外存(磁盘,CD-ROM等)。

网络设备驱动:对网络接口卡和通信端口提供管理,它们负责连接到网桥或路由之类的网络设备。

陷阱和错误:处理CPU产生的陷阱和错误,例如内存错误。

物理内存:管理实际内存中的内存页池和为虚拟内存分配内存页。

中断:处理来自外设的中断。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统精髓与设计原理(原书第6版) 第二章操作系统概述 学习笔记(2) 的相关文章

  • 初始化int类型data1[ ]={1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20}先使用任意一种算法对其排序提示用户输入一个数字,再折半查找

    初始化int类型data1 1 3 5 7 9 11 13 15 17 19 2 4 6 8 10 12 14 16 18 20 先使用任意一种算法对其排序提示用户输入一个数字 应用折半查找函数模板找出它的位置 include using
  • 一些计算机方面的感悟

    1 架构设计的本质是深入理解业务场景之后用工程经验做出最佳权衡 2 计算机解决问题其实没有任何奇技淫巧 它唯一的解决办法就是穷举 穷举所有可能性 算法设计无非就是先思考 如何穷举 然后再追求 如何聪明地穷举
  • Android项目针对libs(armeabi,armeabi-v7a,x86)进行平台兼容

    1 Android设备如何加载 so文件 不同CPU架构的Android手机加载时会在libs下找自己对应的目录 从对应的目录下寻找需要的 so文件 如果没有对应的目录 就会去armeabi下去寻找 如果已经有对应的目录 但是如果没有找到对
  • , trailing comma 逗号的问题

    PHP 数组元素最好加上逗号 因为可以方便其他人添加内容JAVASCRIPT 其实也应该加上逗号的 但可惜IE9以下不认 所以 可以不加逗号JSON JSON hates trailing commasPYTHON 希望尾部元素有逗号 转载
  • _mm_pause

    翻译自Intel指令 PAUSE指令提升了自旋等待循环 spin wait loop 的性能 当执行一个循环等待时 Intel P4或Intel Xeon处理器会因为检测到一个可能的内存顺序违规 memory order violation
  • 1.2冯•诺依曼模型

    文章目录 1 2 1 4个子系统 1 2 2 存储程序概念 1 2 3 指令的顺序执行 前一节中讲到的基于图灵机所建造的计算机是在存储器中存储数据 在1944 1945年期间 冯 诺依曼指出 程序和数据在逻辑上是相同的 因此程序也能存储在计
  • Mariadb主从复制之MHA配置

    Mariadb主从复制之MHA配置 一 环境介绍 1 主从复制及半同步复制配置链接 2 IP规划 二 检查一主两从数据库状态 1 主库状态 2 从库状态 三 MHA高可用介绍 1 MAH介绍 2 MAH作用 四 MHA基本环境配置 1 所有
  • linux线程使用

    概念 1 PCB Process Control Block 进程管理块 系统中存放进程的管理和控制信息的数据结构体 每一个进程均有一个PCB 在创建进程时建立 直到进程撤销而撤销 2 程序段 是进程中能被进程调度程序在CPU上执行的程序代
  • STL空间配置

    SGI STL有两级配置器 第一级配置器的allocate 和 realloc 都是在调用malloc 和 realloc 不成功后 改调用oom malloc 和 oom realloc 后两者都有内循环 不断调用 内存不足处理例程 期望
  • Unity3D中读取CSV文件

    转自 https www cnblogs com lingLuoChengMi p 9990488 html 本人对原文进行了整理 适当加上注释和小部分修改 不过大部分代码也是转载 说明 1 写入一个单元格时 如果含有逗号 则需要将整个字段
  • NVIDIA可编程推理加速器TensorRT学习笔记(三)——加速推理

    文章目录 简单张量RT示例 将预训练的图像分割 PyTorch 模型转换为 ONNX 将 ONNX 模型导入 TensorRT 生成引擎并执行推理 对输入进行批处理 分析应用程序 优化您的应用程序 使用混合精度计算 更改工作区大小 重用 T
  • 主成分分析二级指标权重_权重赋值之“主成分分析法”

    主成分分析 Principal Component Analysis PCA 最早是由K 皮尔森 Karl Pearson 对非随机变量引入的一种统计方法 尔后H 霍特林将此方法推广到随机向量的情形 主成分是指通过正交变换将一组可能存在相关
  • 阿里云物联网Iot设备上下线状态数据流转的设置

    要想通过物联网平台实现远程监控设备 那么就要建立监控端设备 比如手机 和被监控端设备的数据交互 在阿里云物联网平台完成这个交互功能的方法就是建立两个设备之间的数据流转 对于设备要流转的物模型数据 阿里云网站上已经有详细的示例介绍 但是对于设
  • 最大上升序列Super Jumping! Jumping! Jumping!

    多组输入 第一个数代表有多少个数据 输入0结束 Sample Input 3 1 3 2 4 1 2 3 4 4 3 3 2 1 0 Sample Output 4 10 3 1到3最大 1到2到3到4最大 直接到三最大 include
  • 尚硅谷 Vue 2.0 + Vue 3.0 入门到精通教程学习笔记 (二)

    第二章 Vue 组件化编程 2 1 模块与组件 模块化与组件化 2 1 1 模块 1 理解 向外提供特定功能的 js 程序 一般就是一个 js 文件 2 为什么 js 文件很多很复杂 3 作用 复用 js 简化 js 的编写 提高 js 运
  • Qt 无边框、透明、可移动、的个性窗体

    原文地址 转载 Qt 无边框 透明 可移动 的个性窗体案例详解 作者 风贝 很多朋友都问透明的效果怎么做 为什么自己做的无边框窗体不可移动 一个个回答的很累 干脆写出来分享下好了 我只用代码说话 工程的main cpp int main i
  • python菜单栏_「每日一练」Python实现下拉和弹出式菜单

    用Python就一定要用到界面操作 有一个好的用户界面 才会有好的用户体验 下边就开始创建我们的主窗口 并实现下拉和弹出式菜单 案例 创建主窗口 并实现下拉和弹出式菜单 先上代码 运行效果 题目详述 第一行 import tkinter a
  • Jupyter notebook显示连接失败、服务器正忙

    pip install tornado 4 5 成功

随机推荐

  • # AutoLeaders控制组—51单片机学习笔记(LED控制、独立按键、数码管)

    51单片机 1 单片机基础 1 1 内部构成 CPU RAM ROM 定时器 中断系统 通讯接口等 相当于袖珍版计算机 一个芯片能构成完整的计算机系统 1 2 51单片机 公司 STC公司 位数 8位 RAM 512字节 第二天丢失 相当于
  • HashMap底层源码分析

    HashMap HashMap 是一个散列表 它存储的内容是键值对 key value 映射 HashMap是非线程安全的 实现了 Map 接口 根据键的 HashCode 值存储数据 具有很快的访问速度 最多允许一条记录的键为 null
  • 编译原理期末习题考试复习题目(重点三)

    编译原理期末习题考试复习题目 重点三 目录 编译原理期末习题考试复习题目 重点三 三 判断题 四 简答题 三 判断题 下列各题 你认为正确的 请在题干的括号内打 错的打 1 计算机高级语言翻译成低级语言只有解释一种方式 X 2 在编译中进行
  • CMOS图像传感器——pipeline像素控制

    一 传统像素操作 传统CMOS图像传感器的芯片架构中 像素的控制信号从水平方向驱动 像素的源极跟随器输出电压垂直地输出到位于顶部和底部的模拟前端读出电路 其具体实现方式如下图所示 其中RST TX和SEL是像素水平控制信号 像素输出电压PI
  • CMake中aux_source_directory的使用

    CMake中的aux source directory命令用于查找目录中的所有源文件 其格式如下 aux source directory
  • 新手如何有效的刷算法题(LeetCode)

    点击关注上方 五分钟学算法 设为 置顶或星标 第一时间送达干货 来源 五分钟学算法 前言 作为一名非科班出身的程序员 我是参加工作之后才开始接触算法 学算法至今有将近五年的时间 期间输出文字约 100 多万 从算法小白到写出百万阅读的算法文
  • python3 mmh3安装及使用

    mmh3安装方法 哈希方法主要有MD SHA Murmur CityHash MAC等几种方法 mmh3全程murmurhash3 是一种非加密的哈希算法 常用于hadoop等分布式存储情境中 在anaconda中安装使用命令 pip in
  • 【项目实战】AOSP源码阅读与目录结构

    一 背景 随着Android系统的不断发展 了解其内部实现和架构变得越来越重要 AOSP Android Open Source Project 是Android的开放源代码项目 为开发者提供了详细的源代码和工具 使得我们能够深入了解And
  • 【2023年电赛】运动目标控制与自动追踪系统(E 题)最简单实现

    本方案的思路是最简单的不涉及复杂算法 识别矩形框 标记矩形框 输出坐标和中心点 计算长度 控制舵机移动固定长度 仅供完成基础功能参考 不喜勿喷 实现运动目标控制与自动追踪系统 任务概述 本文将介绍如何使用OpenMV开发板和舵机构建一个运动
  • I/O,文件操作,File类

    前言 小亭子正在努力的学习编程 接下来将开启javaEE的学习 分享的文章都是学习的笔记和感悟 如有不妥之处希望大佬们批评指正 同时如果本文对你有帮助的话 烦请点赞关注支持一波 感激不尽 目录 前言 前驱知识 文件 目录 文件路径 Path
  • 阿里短信服务集成

    技术分享交流群 1125844267 大家可以进来唠嗑闲聊 前言 目前阿里短信不支持个人申请签名和模板 所以只能使用测试版固定的签名和模板 提示 以下是本篇文章正文内容 下面案例可供参考 一 控制台配置 1 进入阿里云官网 搜索 短信服务
  • Hyperledger Fabric全面理解

    Fabric结构 Fabric结构 Fabric 0 6的特点 结构简单 应用 成员管理 Peer的三角形关系 主要业务功能全部集中于Peer节点 架构问题 由于peer节点承担了太多的功能 所以带来扩展性 可维护性 安全性 业务隔离等方面
  • scanf和printf介绍

    1 scanf scanf函数是C语言中标准库中的输入函数 其主要作用是从标准输入设备 如键盘 获取输入数据 并将读取的数据存储到指定的变量中 其基本用法如下 读取整型数据 int num scanf d num 从标准输入读取一个整数 并
  • 使用Windows PowerShell 连接远程服务器

    1 使用管理员权限启动Windows PowerShell 2 在控制台中使用SSH指令 ssh usrname ip 更多ssh用法参照如下 PS C WINDOWS system32 gt ssh help unknown option
  • protocol buffers(protobuf)安装教程

    本文按照mac讲解protobuf的安装 windows上比较好安装按照mac的基本流程就可以安装成功 mac上的安装有的时候比较容易出现问题 一 通过brew的方式安装 仅Mac 需要mac中存在brew 输入命令 brew versio
  • HBuilder配置SVN

    注意 大家都配置前最好先备份好之前的文件资料 很早之前就想在编辑器上配置SVN 但找了很多资料都没有合适的 于是就自己摸索了一下 最后终于配置成功了 对于项目较大的公司来说一般都用SVN或新起的Git来协作团队开发 后台开发用的VS基本都集
  • AIX升级openssh步骤

    提前在IBM官方下载适用版本的openssl及openssh 安装步骤 1 首先启动待升级服务器telnet服务 并通过telnet登陆 startsrc t telnet 启动telnet 2 查看并记录已安装ssl ssh版本 方便升级
  • 单片机c语言延时1ms函数,单片机c语言延时函数用int与char有延时差吗?

    单片2113机的C语言关于延时函数主要有两种一种是用5261for循环 通过单片机执4102行空指令达到延时的1653目的如 for i 0 i lt 100 i 这个简单的语句会执行100次空指令每一次指令的时间可以大概确定因此这个是最简
  • CreateThread函数,无法将参数 3 从“DWORD (__cdecl *)(LPVOID)”转换为“LPTHREAD_START_ROUTINE” PVZCheater

    问题 HANDLE CreateThread LPSECURITY ATTRIBUTES SIZE T LPTHREAD START ROUTINE LPVOID DWORD LPDWORD 无法将参数 3 从 DWORD cdecl LP
  • 操作系统精髓与设计原理(原书第6版) 第二章操作系统概述 学习笔记(2)

    第二章 操作系统概述 2 4 现代操作系统的特征 1 微内核体系结构 微内核体系结构只给内核分配一些最基本的功能 包括地址空间 进程间通信 InterProcess Communication 简称IPC 和基本的调度 其他的操作系统服务都