计算机操作系统基础(一)---操作系统概览

1,074 阅读13分钟

引言

计算机基础知识的重要性是不言而喻的,现在的技术可以说是按秒的速度在更新,可是基础的东西却几十年不会变一次。本文为第一篇,操作系统概览,熟悉一下整个计算机操作系统中都有些什么,也是后边系列文章中会深入介绍的知识点

一、计算机操作系统发展的三个阶段

1、无操作系统阶段

在这个阶段,计算机都是人工的去操作的,并且操作的时候,每个用户都会独占这台计算机,而且计算机的CPU是等待人工去操作的,当用户进行输入和输出的时候,内存和CPU都是空闲的。因此,在没有操作系统的时代,计算机资源的利用率很低

2、批处理系统阶段

在这个阶段,计算机就无须再等待人工的输入了。因为这个时候用户会批量的导入任务,这样,用户在导入任务之后就可以离开,计算机就可以自动的去工作。所以,在这个阶段,计算机的利用率大幅度的提升,同时,在这个阶段还提出了一个非常重要的设计,叫多道程序设计。这个设计也是后来影响到我们所有的操作系统

3、分时系统阶段

在这个阶段,最重要的设计就是人机交互的设计,因为在前边两个阶段,程序在执行的过程中,人是没有办法去干预的,在分时系统阶段,人机就可以进行交互了。并且,人可以实时的去调试程序,这个分时系统允许多个用户去共享这个计算机的资源,因此在这个阶段,计算的资源利用率大幅度提升。分时系统也是现在主流的系统

多道程序设计的概念: 早期的批处理系统每次只能处理一个任务。虽然说在这个批处理系统里面,我们可以将任务批量的输入,但是这个时候计算机只能同时运行一个任务。也就是说,虽然说任务是批处理输入的,但是计算机每次只能执行一个任务。因为有了多道程序设计使得批处理系统一次可以处理多个任务

多道程序设计指的是在计算机内存中同时存放多个程序,并且这多个程序互相不干扰。 这里的多道程序在计算机的管理程序之下相互穿插运行,以此来提升计算机资源的利用率

因此,对多道程序的管理是操作系统的重要功能。计算机操作系统对多道程序的管理以及资源的管理,可以分为五大功能:

  • 进程管理
  • 存储管理
  • 作业管理
  • 文件管理
  • 设备管理

后边会真对这五个进行展开的介绍:

进程管理

  • 进程管理之进程实体
  • 进程管理之五状态模型
  • 进程管理之进程同步
  • Linux的进程管理

作业管理

  • 作业管理之进程调度
  • 作业管理之死锁

存储管理

  • 存储管理之内存分配与回收
  • 存储管理之段页式存储管理
  • 存储管理之虚拟内存
  • Linux的存储管理

文件管理

  • 操作系统的文件管理
  • Linux的文件系统
  • Linux文件的基本操作

设备管理

  • 操作系统的设备管理

二、操作系统概览

1、什么是操作系统?为什么要使用操作系统

(1)什么是操作系统

  • 操作系统是管理计算机硬件软件资源计算机程序。也就是说,操作系统实际上是一个计算机程序,功能是管理计算机硬件和软件资源。
  • 管理配置内存、决定资源供需顺序、控制输入输出设备等。
  • 操作系统提供让用户和系统交互的操作界面
  • 操作系统的种类是多种多样的,不局限于计算机
  • 从手机到超级计算机,操作系统可以简单也可以复杂
  • 在不同的设备上,操作系统可向用户呈现多种操作手段(比如在手机上,我们可以通过手指的触摸控制手机里的硬件设备(如摄像头、声音)、而在我们普通的PC端,我们主要是通过鼠标、键盘来控制硬件)

我们平时中所能接触到的计算机操作系统:

a.比如说手机,手机分为安卓和IOS,其实我们所说的安卓就属于安卓操作系统,IOS就是指IOS操作系统。 Android里边我们经常会知道小米的MIUI、OPPO/VIVO的colorOS、魅族的Flyme等,这一些严格来说其实不属于操作系统,这些都是基于Android这个操作系统改造而来的(可能是换了UI、做了优化等,本质还是Android操作系统)

b.再比如说我们常说的电脑,Windows、Linux、MacOS等,这些都是我们生活中常见的计算机操作系统 想Linux系统有Centos、Ubuntu,他们本质上都属于Linux操作系统

下面给出计算机操作系统的终极定义:它是管理硬件、提供用户交互的软件系统

(2)为什么要使用操作系统

  • 我们不可能直接的去操作计算机的硬件。比如说我需要计算机给我算1+1,不可能说我直接告诉CPU说我们要算1+1,而我们需要借助操作系统,让操作系统去告诉硬件我们要做什么事情
  • 计算机发展到现在,设备种类繁多复杂,需要统一界面。操作系统提供统一的操作界面,屏蔽了不同设备之间的差异。有了操作系统我们就不需要关注不同的设备,也不需要关注不同的接口
  • 操作系统的简易性使得更多人能够使用计算机。更多的人可以使用计算机就意味着解放和发展的生产力,对人类科技的提升是大有帮助的

2、操作系统的基本功能

先回顾一下我们关注的计算机中重要的一些资源:

(1)处理器资源(也就是CPU资源)

(2)存储器资源(内存、硬盘)

(3)IO设备资源(打印机、键盘、显示器)

(4)文件资源

操作系统会统一管理着计算机资源

比如说我们要操作一个文件,我们并不是直接操作这个文件存储的地方的,我们是通过操作系统去操作这个文件的 再比如说我们存储或读取一个文件的时候,我们不是直接去控制存储器里边的机械设备读取的,而是通过操作系统去读写这些信息的

有了操作系统,我们在使用这些计算机资源的时候有什么不一样呢?

用户无需面向硬件接口编程。也就是说我们无需面向存储器、IO设备这些硬件,而只需面向操作系统去编程就可以了。 举个例子,在操作系统里边有IO设备管理软件,这个软件提供了读写接口,用户在进行编程时,直接调用这个接口,并不需要具体的接触某个IO设备

操作系统实现了对计算机资源的抽象。这个抽象就是通过管理软件来实现的,这些管理软件屏蔽了硬件设备,并且给用户提供了逻辑设备,使得每个用户在使用的时候都是一样的,这个就是对计算机资源的抽象

操作系统提供了用户与计算机之间的接口。如:图形窗口形式(windows中通过鼠标点点点)、命令形式(Linux中通过在shell终端中输入命令的方式)、系统调用形式(主要是编程的时候,比如打开文件、读取数据这些操作,都是通过系统调用来完成的) 如果给硬件、操作系统和用户画一个层次的话,接口就相当于下边红色部分的层次:

3、操作系统相关概念

主要是有四个相关概念需要重点理解:

  • 并发性
  • 共享性
  • 虚拟性
  • 异步性

(1)并发性

并发性是后边三种特性的前提,理解了并发性才好理解后边三个特性。 了解并发,我们要结合并行这个概念一起来理解

  • 并行是指两个或多个事件可以在同一时刻发生
  • 并发是指两个或多个事件可以在同一时间间隔刻发生

那么并行和并发在计算机里边是如何体现的呢?

我们联想一下前边说道的多道程序设计的概念,它是并发和并行的基础

(a)对于单个处理器来说,程序主要是并发的执行的,假设蓝色的是程序A、黄色的是程序B,在某一个时刻,只能有一个程序占用CPU,那么这两个程序就是交替运行的(多道程序交替运行),这样子在单处理器里边就是并发的执行的

(b)对于双处理器,每一个处理器上的程序都是交替运行的,但是对两个处理器来说,某一个时刻,是有两个程序在同时运行的

这个就是并行个并发在计算机里边的体现

(2)共享性

  • 共享性表现为操作系统中的资源可供多个并发的程序共同使用
  • 这种共同使用的形式称之为资源共享

举个例子:

假设有一块系统中的内存,假设红色部分被程序A使用了,绿色的被程序B使用了,虽然说A和B使用了主存中的不同部分,那么我们还是说这块主存被共享了,程序A和程序B都可以使用这块主存

资源共享根据属性可以分为两种方式:

  • 互斥共享形式
  • 同时访问形式

互斥共享:

当资源被程序A占用时,其它想使用的话只能等待,只有等进程A使用完以后,其它进程才可以使用该资源。 比如说打印机被某一个程序A所使用了,那么其它想打印的程序,只能等待程序A打印完成之后才能使用打印机。

同时访问:

某一个资源在一段时间内并发地被多个程序访问,这种“同时”是宏观的,从宏观去看该资源可以被同时访问 比如说我们在使用硬盘的时候,假设有程序A和程序B都想往磁盘里边写数据,因为这个悬臂只有一个,那么当程序A往里写的时候,程序B是不能往里写的,但是由于写数据比较快,如果我们在一段时间内去观察它的话,我们就可以认为它是可以被同时访问的,如果我们强调的是一段时间内并发的去使用,那么其实就是共享性的同时访问的形式

(3)虚拟性

虚拟性表现为把一个物理实体转变为若干个逻辑实体,物理实体是真实存在的(可能是计算机中的某一个设备),逻辑实体是虚拟的。虚拟的技术主要有时分复用技术空分复用技术

a、时分复用技术

指的是资源在时间上进行复用,不用程序并发使用,多道程序分时的去使用计算机的硬件资源(比如多道程序交替的使用CPU的资源)

时分复用技术中有虚拟处理器技术虚拟设备技术

虚拟处理器技术

  • 借助多道程序的技术
  • 为每道程序建立进程
  • 多个程序分时复用处理器

虚拟设备技术

  • 物理设备虚拟为多个逻辑设备
  • 每个程序占用一个逻辑设备
  • 多个程序通过逻辑设备并发访问

b、空分复用技术

用来实现虚拟磁盘、虚拟内存,用以提高资源利用率和编程的效率

虚拟磁盘技术

将物理磁盘虚拟为多个逻辑磁盘(比如说我们的硬盘可以虚拟为C盘、D盘、E盘),使用起来更加安全和方便(比如我们在C盘破坏某些文件的时候不会影响其它的盘)

虚拟内存技术

在逻辑上扩大了程序的存储容量,这样程序就可以使用比实际内存更大的容量,大大提升了编程的效率(当进程运行时,先将其中一部分装入内存,另一部分暂留在磁盘,当要执行的指令或访问的数据不在内存时,由操作系统自动完成将他们从磁盘调入内存的工作)

(4)异步性

异步性表现为在多道程序环境下,允许多个程序并发的执行,进程在使用资源时可能需要等待或放弃,进程的执行并不是一气呵成的,而是以走走停停的形势推进的(假设某一个进程在运行到某一个时刻时,需要使用某一个资源,如果这个资源被占用的话,可能这个进程就会停止或者是等待资源被释放)

上边的红线为一个时间推进的时间轴,有A、B、C三个程序在交替的运行,假设在某一个时刻,A释放了打印机的资源,同时,B和C都需要使用这个打印机的资源,那么B和C就会发生竞争,假设C成功的抢占了打印机的资源,那么在剩下的时间轴里边主要就是C在运行了,另外一种可能就是B抢占到了打印机的资源,此时B就会运行一段时间,然后才到C来运行。所以在这里边,因为我们不知道是B抢占到了打印机还是C抢占到了

所以,进程是以不可预知的速度向前推进的,不知道程序何时执行、何时暂停、何时完成,这么多的不可预知的事情,就导致了程序的异步性

在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践

站在了巨人的肩膀上学习,向前辈致敬

参考:https://coding.imooc.com/class/355.html