计算机操作系统基础 (一)--- 操作系统概览
引言
计算机基础知识的重要性是不言而喻的,现在的技术可以说是按秒的速度在更新,可是基础的东西却几十年不会变一次。本文为第一篇,操作系统概览,熟悉一下整个计算机操作系统中都有些什么,也是后边系列文章中会深入学习的知识
一、计算机操作系统发展的三个阶段
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
版权声明: 本文为 InfoQ 作者【书旅】的原创文章。
原文链接:【http://xie.infoq.cn/article/e5f772cc188d840600fccc51e】。文章转载请联系作者。
评论