操作系统概念 读书笔记

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

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
  • user interface
    CLI和GUI,命令行和图形界面

  • program execution
    The system must be able to load a program into memory and to run that program. The program must be able to end its execution, either normally or abnormally (indicating error).

  • I/O Operation
    I/O操作,用户不能直接操作I/O,但是操作系统会提供操作I/O的方法。

  • File-system manipulation
    文件操作,增删改查等

  • Communications
    一般是process间的通信

  • Error detection
    容错机制

  • Resource allocation
    资源分配

  • Accounting

  • Protection and security

2.2 User Operating-System Interface

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

2.3 System Calls

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


image.png

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

  • 遵循API设计程序可以让程序适应各种支持此API的系统。
  • API调用更加方便,容易理解
  • 低耦合

2.4 Types of System Calls

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

2.4.1 Process Control

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

单任务和多任务对比

  • 只有能执行一个任务,如果遇到错误,当前运行程序中止,错误信息保留到memory 中,下一次命令执行时会先执行错误信息

  • 多任务中,shell在前台运行程序,后台也可以在运行程序,shell会占用I/O,如果当前程序有错误,shell会立刻执行后台程序,在程序全部执行完后再统一返回状态

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

两种信息交换模式

  • sage-passing model
    通过hostid和processid来确认信息交换的双方,这种process大部分是daemons,作为server。

  • shared-memory model

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

优点

  • simplicity of construction and debugging

  • 耦合低

缺点

  • layers 定义困难

  • 层级过多,导致消息传递的效率低,需要一层一层传递

2.7.3 Microkernels

扩展性强

2.7.4 Modules

稍后看一下,

2.8 Virtual Machines

虚拟技术

2.8.2 Benefits

  • 虚拟机可以保护host system
  • operating system的修改和升级是很危险的,所以如果要升级需要占用很长时间,升级和修改都可以在虚拟机上做。
  • 开发者同时运行可以多种类型的操作系统

PS:虚拟的标准很重要

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

介绍了两个缺点

  • 速度慢
  • 工作量大

2.8.4 Para-virtualization

2.8.5 Implementation

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

你可能感兴趣的:(操作系统概念 读书笔记)