(两百七十四)《Operating Systems: Three Easy Pieces》读书笔记

前言:操作系统的知识比较欠缺,买了本《操作系统导论》补充下知识,作者为雷姆兹和安德莉亚。

官网(可以免费查阅英文版pdf):

http://pages.cs.wisc.edu/~remzi/OSTEP/

 

第一章 关于本书的对话

简要说明本书是以虚拟化、并发和持久化三方面展开的,引入如下问题

  • 操作系统如何工作
  • 线程、进程如何调度
  • 如何处理内存过载
  • 虚拟机监控器如何工作
  • 如何管理磁盘数据

 

第二章 操作系统介绍

引入问题:

1.操作系统通过哪些机制和策略实现虚拟化?操作系统如何有效地实现虚拟化?需要哪些硬件支持?

首先什么是虚拟化呢?个人理解是对应于实体的,比如我们组装电脑是cpu、内存、显卡、硬盘、电源和显示器等实体,这些实体对应于操作系统有其对应的虚拟对象,这个对应过程就是虚拟化。这也是为什么操作系统也叫做虚拟机。

虚拟化分为

虚拟化CPU:通过时分复用,但现在比如8核的CPU应该也有所谓的空分复用的概念,提高CPU的使用率。

虚拟化内存:每个进程有自己的私有虚拟地址空间,映射物理内存

 

2.并发是什么?

书中没有直接讲,个人理解并发是多个进程一起执行对某个数据的操作,并发问题在Android中一般也被称为同步问题,一般通过加锁互斥解决,这样同一时间点只有单一进程会修改数据。

 

3.持久性

持久性相对于内存中的缓存而言,个人理解就是可以存储到硬盘,下次开机还能读取的特性。

 

串联起来时操作系统取得CPU、内存或磁盘等物理资源,并对他们进行虚拟化,处理与并发有关的问题,持久地存储数据。

 

第三章 关于虚拟化的对话

对话大概以桃子举例,比如我在微信群里说我有个桃子,这其实已经用语言虚拟化桃子这个实体了,微信群里看到的人都会对应理解我有个桃子,相当于new出了好多个虚拟的桃子。

 

第四章 抽象:进程

进程是什么?

开头说进程非正式定义可理解为运行中的程序,对应到Android中不光光是app,系统进程也是进程。

进程的机器状态:内存 + 寄存器

 

进程创建流程?

加载代码和静态数据到内存中

为运行时栈和堆分配内存

(栈:存放局部变量、函数参数和返回地址 堆:C语言中用于显示请求的动态分配数据)

IO:UNIX中每个进程有3个打开的文件描述符,用于标准输入、输出和错误

 

上下文切换

CPU虚拟化需要一些低级机制和高级智能:引入了上下文切换+调度策略的概念

上下文切换:对于停止的进程,寄存器上下文将保存其寄存器的内容,通过恢复这些寄存器,操作系统可以恢复运行该进程。

 

第五章 插叙:进程API

这一章其实很简单,注意讲了三个api的使用,fork(),wait() 和 exec()

捎带讲了重定向的概念,shell重定向是通过执行命令之前先关闭了标准输出,打开了指定文件,这样运行的结果就被重定向了指定文件,另外还有管道连接有类似的概念,进程的输出被链接到了一个内核管道上,另一个进程的输入也被连接到了同一个管道上,,类似grep xxx | wc -l 计算找到了多少词

 

 

 

你可能感兴趣的:(读书笔记)