操作系统概念 读书笔记

2020-04-04  本文已影响0人  叔叔不吃棒棒糖

读的英文版所以有的地方自己理解可能有问题。

1.1

操作系统干了什么
主要从系统视角和用户视角分析


image.png

1.2电脑操作系统结构

1.2.1

机器上电后,程序从ROM或者EEPROM中通过CPU调度启动。
这里提到一个重要的操作中断,提到了中断相关信息的存储。

1.2.2 存储结构

CPU负责运算,memory负责存储程序和数据。memory的使用主要从速度、价格、断电数据是否被抹除这几个维度考量。因此引出了多级存储。越往下,成本越低、速度越慢、数据不会受到断电的影响。

1.2.3 I/O

存储只是I/O设备的一部分,设备管理器的作用是在buffer storge和外围设备中间搬运数据,从设备管理器引出device driver这个概念。device driver负责设备管理和控制系统的调度。设备管理在数据搬运完成后会通过中断通知device driver,device driver再通知控制系统。在大量数据操作时,使用DMA,设备管理会在数据全部搬运完之后才通知device driver,这样只会产生一次中断,CPU的工作不会受到影响。(我理解时中断就会打断CPU,所以中断次数越少,CPU就可以腾出时间来处理其他事情)

1.3电脑系统结构

1.3.1单处理器系统

一个电脑系统是由许多的special-purpose processors组成
,如果只有一个通用CPU就是单处理器系统

1.3.2多处理器系统

多处理器系统有三个重要的优点:
Increased throughput. 但是并不是N个处理器性能就提升N倍。
Economy of scale.多个处理器共用一套外部设备、memory等
Increased reliability.如果一个处理器遇到问题,其他处理器可以帮忙,整个系统不会因此停止运行。(这个最重要)
graceful degradation到fault tolerant。优秀的操作系统应该做到fault tolerant,The HP NonStop 的解决方案时两个cpu运行一套命令,如果结果不同就再从另外两个cpu上开始运行。多核处理器有两种模式AMP和SMP,SMP应用更多一些。SMP下cpu有自己的寄存器和cache但是它们共享memory。SMP需要更加注意I/O,避免cpu等待,造成资源浪费等情况。
在多核处理器的背景下,cpu和memory control是一体的,那么也就意味着memory access 要从UMA到NUMA。
现在的趋势是一个CPU有多核,多核的优势表现在CPU通讯更快,更省电,简单来说就是多个单核CPU被单个多核CPU取代。

image.png
image.png

1.3.3集群操作系统

多CPU的另一种形式就是clustered systems。利用LAN,即使被监控的机器挂掉,监控者也可以继续运行挂掉的机器上的程序。

例子:Linux的高性能集群,个人电脑通过网络组成集群,使用开源软件,性价比高。

两种模式:

  1. asymmetric clustering
    hot-standby mode监控其他程序,如果其他程序挂掉,hot-standby mode会变成active server。
  2. symmetric clustering
    所有的hosts 同时run applications 和monitor others。这样会更有效率,因为更多的机器被利用起来。

在cluster中,管理系统可以将问题分配给每台电脑,他们运算完后再将结果合并,更加高效

1.4 Operating-System Structure

Multiprogramming可以保证CPU总是保持在能运行程序的状态。

operating system将部分job放在memory,由于memory放不下所有job,所以将job放在disk的job pool中。operating system负责搬运job。从job的视角来看,可能job可能会等待资源,但是由于operating system的介入,如果当前job需要等待资源,cpu会切换到其他job。

Time sharing中 cpu的切换非常快,所以用户会感觉所有的job都在同时运行。
TIme sharing用于交互系统,比如用户从输入到输出的时间会很短。
interactive I/0的input 和 output 速度是不同的,比如input为打字 最多7字/秒,这对电脑来说太慢了,cpu不可能等着input,cpu会在这期间干其他事。

time sharing and multiprogramming 会出现几个任务都准备好被读入memory 的情况,这就需要系统选择哪个任务先被读入memory,会在第五、八、九章详细说明调度。

1.5 Operating-System Operations

打断机制不适用于handware 和 software的共享的情况,如果他们被打断了,可能就会影响到其他人使用handware和softwar。

好的程序需要做到一个程序的崩溃不能导致其他程序崩溃

1.5.1 Dual-Mode Operation

user mode 和 kernel mode

mode bit作为区分标示, kernel (0) or user (1).

image.png

user mode 和 kernel mode 可以保证用户的错误操作不会导致operating system的崩溃。
例子:privileged instructions只能运行在kernel mode中,如果运行在user mode 会被认为是非法的。
简单来说kernel mode拥有更高的权限,可以直接控与hardware交互,user mode责备限制在kernel mode之上。
System calls是user mode下向operating system发送请求的手段,operating system在收到system call之后会切换到kernel mode,kernel mode回根据system call的信息确定之后的操作。
如果没有两种mode的划分,用户程序会搞挂整个程序,多个程序同时对一个设备写入,会造成不可预知的结果。
一旦有了硬件级别的保护,hardware接收到错误,traps 操作系统(像interrupt过程),并将错误信息放在memory dump中。

1.5.2 Timer

这块需要再看看,有点不太明白

1.6 process management

Program在被执行的时候就是有进程了,进程会占用cpu memory I/O等,进程是active program。program是passive的。
process 是 system 工作的单元。
会在3到6节详细讨论。

1.7 memory management

Main memory 不可能同时装下所有程序,断电数据会丢失,所以为了让cpu效率更高和提高电脑响应速度,就需要memory management
设计遵守三个原则

• Keeping track of which parts of memory are currently being used and by whom
• Deciding which processes (or parts thereof) and data to move into and out of memory
• Allocating and deallocating memory space as needed
会在8、9节详细讨论

1.8 storage management

1.8.1File-System Management

1.8.2Mass-storage Mamagement

main memory由于容量和断电数据丢失的问题,需要secondary storage来辅助存储。
整理设计逻辑。
main memory
secondary storage
tertiary storage

1.8.3 caching

cache是CPU和 main memory数据交换的衔接,能防止CPU等待。


image.png

数据的操作可能经过层层拷贝。


image.png

如果只有一个 process问题会很简单,但是如果在多任务的环境下,每个CPU都有自己的local cache。一个数据被修改需要被通知到所有的cache,这个叫做cache coherency,这个一般是hardware问题。

1.8.4 I/O Systems

• A memory-management component that includes buffering, caching, and spooling
• A general device-driver interface
• Drivers for specific hardware devices

1.9 Protection and Security

更早的暴露问题,保护系统。
手段:
user list、group list和临时申请升级权限的机制。

1.10 Distributed Systems

与network相关联
主要讲了LAN和WAN。local network和wide-area network。

1.11 Special-Purpose Systems

1.11.1 Real-Time Embedded Systems

智能家居的设想,自动开关灯

1.11.2 Multimedia Systems

专门处理多媒体数据的操作系统

1.11.3 Handheld Systems

手持设备的系统,其中提到的一些问题,现在已经不太适用了。
实际内存不够大是最大的限制。
体积小->电池不会太大->电量有限->运行速度降低
input 和 ouput小,现在这个问题慢慢淡化了,手机屏幕越来越来大了

1.12 Computing Environments

1.12.1 Traditional Computing

简单介绍了一下,现在已经不流行了。

1.12.2 Client-Server Computing

image.png
  1. compute-server system
    server接收请求,execute action,return result
  2. file-server system
    clients 可以增删改查文件

1.12.3 Peer-to-Peer Computing

distributed system的另一种结构。
所有的node都可以是peer,所以server的瓶颈是基本不存在的。
在peer-to-peer种服务获得一般有两种方式

  1. centralized lookup记录所有node的service,当node需要service时,先在centralized lookup中查询。
  2. node需要client之前需要先查询哪个node能提供它需要的service,通过discovery protocol的方式。

1.12.4 Web-Based Computing

简单讲了下

1.13 Open-Source Operating Systems

这段主要是讲了开源的好处,能看的出来作者很鼓励开源。
开源就意味着有更多的人会看你的代码,会有更多的意见提出

1.14 Summary

这段挺好的,总结很到位
opreating system本质上是一个软件程序,它管理硬件,为更上层的软件提供运行环境

Practice Exercises

32道问题,留着慢慢填坑。💥

CHAPTER 2 Operating System Structures

2.1 Operating-System Services

image.png

2.2 User Operating-System Interface

主要是针对command line和 Graphical User Interfaces优缺点的分析,夹杂历史介绍。

2.3 System Calls

以例子讲解,往一个文件里写数据,然后将数据同步复制到另一个文件。


image.png

直接操作是很复杂的,由此引出了API的概念。

2.4 Types of System Calls

主要从以下几个方面分析
process control, file manipulation, device manipulation, information maintenance, communications, and protection.

2.4.1 Process Control

错误,结果返回,多任务
在看一下💥

单任务和多任务对比

2.4.2 File Management

主要讲如何确定想要操作的文件。
通过file attributes确定文件之后才能创建.读 写 关闭 等

2.4.3 Device Management

process需要的resource可以被看作是device

2.4.4 Information Maintenance

user program 和 operation system 之间传递信息

2.4.5 Communication

两种信息交换模式

They can then exchange information by reading and writing data in the shared areas

2.4.6 Protection

资源保护

2.5 System Programs

大体架构如下
Hardware .
operating system.
system programs.
Application programs .

system program 让用户直接面对界面而不是系统响应接口

2.6 Operating-System Design and Implementation

2.6.1 Design Goals

user goals 和 system goals
侧重不同会导致最终的效果差距很大,实际上就是用户和程序设计者的立场。

2.6.2 Mechanisms and Policies

2.6.3 Implementation

流行的编写方法是使用更高层次的语言,如C C++。有以下优点

缺点

2.7 Operating-System Structure

2.7.1 Simple Structure
以MS-DOS为例


image.png

2.7.2 Layered Approach

image.png

优点

缺点

2.7.3 Microkernels

扩展性强

2.7.4 Modules

稍后看一下,💥

2.8 Virtual Machines

虚拟技术

2.8.2 Benefits

PS:虚拟的标准很重要

2.8.3 Simulation
这个和virtual有什么不一样吗,这个需要再自己扩展💥

介绍了两个缺点

2.8.4 Para-virtualization

2.8.5 Implementation

同样有virtual user mode和 virtual kernel mode。
响应时间是不同的。

上一篇 下一篇

猜你喜欢

热点阅读