一点一点前进...

0%

OSTEP | 操作系统简介

操作系统(Operating System, OS)复杂确保系统易于使用且正确高效地运行。
操作系统主要利用虚拟化(virtualization)的技术,将物理资源(如处理器、内存、磁盘等)变得更通用、更强大、更易于使用,所以有时也将操作系统成为虚拟机(virtual machine)。
操作系统也提供很多接口(API) - 系统调用(system call) -让程序调用来访运行程序、访问内存和设备,进行其他操作等,换句话说,操作系统为应用程序提供了一个标准库(standard library)。
由于共享,操作系统需要管理(manage)这些系统的资源(resource),如CPU、内存、磁盘等,所以操作系统也是一个资源管理器(resource manager)。

虚拟化CPU

操作系统在硬件的帮助下,将单个CPU转化成了看似无限多的CPU,从而让多个应用程序同时运行,这就是虚拟化CPU(virtualizing the CPU)。
多个程序同时运行会导致新的问题,最简单的要在合适运行具体哪个程序。这个由操作系统的策略来决定。

虚拟化内存

每个运行的程序都有自己的私有内存,而不是于其他运行的程序共享相同的物理内存,这就是虚拟化内存(virtualizing memory)。每个进程访问自己的私有虚拟地址空间(virtual address space),或地址空间(address space),操作系统以某种方式映射到物理内存上。一个运行的程序中的内存引用不会影响到其他程序(包括操作系统自身)的地址空间。

并发

多个程序同时运行会产生并发(concurrency)问题,其不再局限于操作系统,现代多线程程序也有同样的问题。

持久性

持久性(persistence),利用硬件和软件来持久地(persistently)存储数据。
硬件以某种输入/输出(Input/Output, IO)设备的形式出现,比如硬盘驱动器(hard drive)、固态硬盘(Solid-State Drive, SSD)。
操作系统中管理磁盘的软件通常称为文件系统(file system),可靠高效地将用户创建的任何文件存储在系统的磁盘上。
操作系统不会为每个应用创建专门的虚拟磁盘。

其实iOS某种意义上就是为应用程序创建了磁盘,或者说一个专有目录。

设计目标

建立抽象(abstraction),让系统方便和易于使用。
高性能,目标就是要最小化操作系统的开销(minimize the overhead)。虚拟化和易于使用是非常值得的事情,但是不会不计成本。完美的设计并不总是存在,必要时要做出权衡。
另一个目标是在程序之间以及OS和程序之间提供保护(protection)。确保不会一个不当程序影响其他程序,更不会影响操作系统本身。保护的核心原理是隔离(isolation)。
可靠性(reliability)。
其他目标还有能源效率(energy efficiency)、安全性(security)、移动性(mobility)等。
根据系统的使用方式,将有不同的目标,可能会以不同的方式实现。