操作系统学习笔记(一)操作系统的特征与发展分类

最近从头认真看操作系统了,感觉大学的时候啥都没干,全程像在看新的知识。

看了一部分了,感觉只是能形成一点体系,有了一点感悟了,在这里稍微总结下, 这应该会是一个系列。

操作系统的基本概念

在操作系统的逻辑中,计算机系统自下而上大致分为四个部分,硬件,操作系统,应用程序和用户。

操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理组织和调度计算机的工作和资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。

操作系统的特征

并发

操作系统中同时存在多个程序,因此它具有处理和调度多个程序同时执行的能力。引入进程的目的就是为了使程序可以并发

并发指的是多个程序在同一时间间隔,而并行指的是同一时刻多个程序。

在多道程序环境中,一段时间内,宏观上有多道程序在同时执行,而在每个时刻,单处理机情况下实际仅仅有一道程序在执行。

这里注意,多道指的是可以多个程序并发,而不是有多个处理器核心

共享

共享,即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。

  • 互斥共享方式:系统中的某些资源,如打印机,虽然可以供多个程序交替使用,但是为了打印的结果不会混淆,应规定一段时间内只允许一个进程访问,也就是在并发进程的进程可以交替使用CPU但是,不可以交替使用某些临界资源。这种互斥不是并行的互斥,而是并发的互斥

  • 同时访问方式:某些资源可以被并行地程序交替访问。

虚拟

虚拟是把一个物理上的实体变为若干逻辑上的对应物。物理实体是实际存在的,虚拟则是虚的,是概念上的。用于实现虚拟的技术,成为虚拟技术。操作系统中利用了多种虚拟技术来实现虚拟的处理机,虚拟内存,虚拟网卡,虚拟外部设备等。

比如我们常见的四核八线程,其实四核从并发上将,只能有四线程,也就是一个核心一个线程,之所以说是一个核心两个线程,指的是并行意义上的,把一个核心虚拟成了两个。

虚拟技术可以分为两种:时分复用技术,如处理器的分时共享;空分复用技术,如虚拟存储器。

异步

多道程序环境允许多个程序并发,但由于资源有限,进程的执行不是一贯到底的,而是走走停停的,这就导致了进程会以不可知的速度向前推进,这就是进程的异步性。

异步性使得操作系统运行在一种随机的环境下,这就可能导致进程产生与时间相关的错误,然后只要运行环境相同,就必须保证执行结果相同,而保证这一结果的手段,就是我们后面要主要讨论的进程的调度,同步和互斥等。

操作系统的功能

为了给多道程序提供良好的运行环境,操作系统应该具有:处理机管理,存储器管理,设备管理和文件管理。

也就是说,如果不是为了处理多道,其实根本没这么事。

为了方便用户的使用,必须向用户提供接口。

最后,可以随时扩充机器,提供更方便的服务,更高的资源利用率。

计算机系统资源的管理者

这部分可以说是操作系统的大纲了。

  • 处理机管理:多道程序环境下(单道程序环境不需要管理处理机,一个简单的队列就好),处理机的分配和运行都以进程为基本单位,因而对处理机的管理可以归结为对进程的管理。并发指的是计算机内同时运行多个进程,因此进程何时创建,何时撤销,如何管理,如何避免冲突,合理共享就是对进程管理最主要的任务。进程管理主要功能包括,进程控制,进程同步,进程通信,死锁处理,处理机调度等。

  • 存储器管理:为了给多道程序提供良好的环境,方便用户以及提高内存的利用率,主要包括内存的分配与回收,地址映射,内存保护与共享和内存扩充等功能。

  • 文件管理:计算机中的信息都是以文件形式存在的,操作系统中负责文件管理的部分称为文件系统,文件管理包括了文件存储空间的管理,目录管理及文件读写管理和保护。

  • 设备管理:设备管理的主要任务是完成用户的I/O请求,方便用户使用各种设备。主要包括缓冲管理,设备分配,设备处理和虚拟设备等功能。

操作系统作为用户和计算机硬件系统之间的接口

操作系统接口分为两种,一种是命令接口,用户利用这些命令来组织和控制作业的执行(这里注意作业,这个概念和进程并不相同,后面会仔细说,你可以简单把它想象成cmd的命令行),一种是程序接口,编程人员可以用来请求系统服务。

  1. 命令接口

使用命令接口进行作业控制的方式主要有两种,即联机控制方式和脱机控制方式。按作业控制方式的不同,可将命令接口分为联机命令接口和脱机命令接口。

联机命令接口又称为交互式命令接口,适用于分时或实时系统(这是后面会提到的两种不同类型的操作系统,这里先留个印象)。

它由一组键盘操作命令组成,用户通过控制台或终端输入操作命令,向系统提出各种服务要求,用户每输入一条命令,控制权就交给系统去解析命令并执行。

脱机命令接口又称为批处理命令接口,适用于批处理操作系统(这又是一类操作系统)。它由一组作业控制命令组成。用户一旦输入批处理命令,就不能中途干涉作业运行。系统接到这一批命令,会依次执行。

这里要注意,这个脱机命令接口属于命令接口,与我们平时写的程序不同。

  1. 程序接口

程序接口由一组系统调用(广义指令)组成,用户通过在程序中使用这些系统调用来请求操作系统为其服务,如使用各种外设,申请分配内存

当前最流行的是图形用户接口(GUI),即图形接口,比如windows的那些按钮。严格来说,图形接口不是操作系统的一部分,但是图形接口会调用系统接口。

作为扩充机器

我们把没有任何软件支持的计算机称为裸机,覆盖了软件的机器称为扩充机器或虚拟机。

操作系统的发展与分类

手工操作阶段(无操作系统)

用户在计算机上的所有操作都要人工干预,如程序的装入,运行,结果的输出等。

有两个突出缺点:用户独占全机,资源利用率低;CPU等待手工操作,利用不充分。

批处理阶段

为了解决上面说的缺点,解决人机矛盾以及CPU和I/O之间速度不匹配,出现了批处理系统。

按照是否并发,分为单道批处理和多道批处理,也就是,批处理指的是可以输入一批作业,而不是并发。

  1. 单道批处理系统

系统对作业的处理时成批的,但是内存中只有一道作业,单道批处理系统的特点如下:

  • 自动性:顺利的情况下,磁带上的一批作业能够自动逐个运行,无需人工干预。
  • 顺序性:各作业顺序进入内存,然后按顺序完成。
  • 单道性:内存中只有一道程序运行,即监督程序每次从磁带上只调入一个作业进入内存运行。

单道批处理面临的问题是,内存中只存在一道作业,如果它在等待I/O的时候,CPU是空闲的,这就降低了CPU的利用率。

为了解决这个问题,就引入了多道处理,也就是并发,也就是操作系统如此复杂的万恶之源。

  1. 多道批处理系统

首先要提一点,多道指的不是并发,而是多道引入了并发,或者说不并发,多道没有意义。

多道指的是多个程序可以同时进入内存,如果同时进入内存后,没法并发执行,还不如不仅不进入内存。

之所以区分这一点,是为了区分,作业调度和进程调度,选择什么作业进入内存是作业调度,而多个作业在内存中如何并发的是进程调度。

多道程序设计技术允许多个程序同时进入内存,并允许他们交替进行,这些程序共享系统中的各种软硬件资源。。

多道程序涉及的特点是多道,宏观上并行,微观上串行(单核):

  • 多道;内存中同时存放多道相互独立的程序。
  • 宏观上并行:同时进入系统的多到程序都处于运行状态,即他们先后开始各自的运行,但都未运行完毕。
  • 微观上串行:内存中的多道程序在CPU轮流执行。

优点是提高了资源利用率,缺点是,用户响应时间长,且不提供人机交互能力,用户输入了一串作业命令后,就只能等结果。

分时操作系统

为了解决上面多道批处理作业的问题,创造了分时技术,指的是把处理器的运行时间分为很短的时间片,按时间片轮流把处理器分给各联机作业使用,若某个作业在分配给他的时间片中没有运行完成,则暂停改作业的执行,把处理器让给其他作业使用,等待下一轮。由于计算机运算速度快,作业轮转也快,因此给每个用户的感觉是自己独占了一台计算机。

可以粗浅的解释下,分时操作系统就是在多道操作系统的基础上,提供了基于时间片的进程调度

分时操作系统是指多个用户通过终端同时共享一台主机,用户可以同时与主机进行交互而互不干扰。

实现分时操作系统的关键,是如何使用户可以和作业进行交互,即当用户在终端上键入命令时,系统能及时接受并处理该命令,然后将结果返回给用户。

分时操作系统支持多道,但是不同于多道的是,分时操作系统提供人机交互。这也使得,分时操作系统有了以下特征:

  • 同时性:又名多路性,值多个终端用户同时使用一台主机。
  • 交互性:用户通过终端采用人机对话的方式直接控制程序运行。
  • 独立性:多个用户彼此独立。
  • 及时性:用户请求能在很短的时间内得到响应。

而这些,都基于时间片调度,再次重申,时间片调度是进程调度。

实时操作系统

为了能够在某个规定时间内完成而不必等时间片排队,诞生了实时操作系统。

分为两种,一种是硬实时系统,如飞机的飞行自动控制系统,某个特定的动作必须在规定时间完成。而能够接受偶尔违反时间规定且不会引起永久性伤害的,是软实时系统。

主要特点是及时性和可靠性。

这里为了实现这个,就引入了优先级和抢占式进程调度等。

网络操作系统和分布式操作系统

网络操作系统把计算机网络中各台计算机有机结合,提供统一的经济有效的使用各台计算机的方法,实现计算机之间的数据相互传送。主要特点是网络中各种资源的共享及各台计算机之间的通信。

分布式计算机系统指的是由多台计算机组成并满足以下条件的系统:系统中任意两台计算机通过通信方式交换信息;每台计算机具有同等地位;每台计算机上资源所有用户共享;系统中任意台计算机可以构成一个子系统并且可以重构;任何工作都可以分布在几台计算机上,并由他们并行工作,协同完成。主要特点就是分不幸和并行性。

分布式和网络操作系统本质不同是:分布式操作系统中的若干计算机可以相互协同。