《操做系统》学习笔记 - 概述

操做系统是计算机学科的基础课程,是理解计算机运行原理的重要基石,学习操做系统不只可以让编程人员了解计算机运行逻辑并且还有助于培养编程“软实力”,若是想真正在编程之路上走下去,那么操做系统将会是重要的加速器,本系列将走进操做系统课程,了解在计算机世界的规则...算法

正文编程

1、操做系统是什么缓存

说到操做系统,很多人会瞬间想到微软的Windows系列,有经验的编程人员或许会想到unix,Linux等,但对于操做系统的定义,很多人恐怕就说不上来了,其实在计算机学科领域至今也未造成一个统一的标准化的定义,出现这个问题一方面因为操做系统实现两项相对独立的功能---扩展机器和管理资源,另外一方面取决于从什么角度来看待操做系统---用户观点仍是系统观点。安全

一、操做系统做为扩展机器网络

操做系统能够将硬件细节与编程人员隔离开,用户可使用操做系统提供的各类命令,直接打开文件、读写文件、更改目录等,在作这些事情时,只须要关心本身要实现的目标,并不用考虑硬件是如何动做,从而隐藏了底层硬件的特性。经过操做系统的加工,呈如今用户面前的机器是功能更强,使用更方便的机器,一般把逻辑之上覆盖各类软件,从而造成功能更强的机器称为扩展机器或虚拟机。并发

二、操做系统做为资源管理器分布式

操做系统能够用来管理硬件资源和数据、程序等软件资源,控制、协调各个程序对这些资源的利用,尽量地充分发挥各类资源的做用,做为资源管理者,操做系统主要作如下工做:工具

  • 监视各类资源,随时记录它们的状态
  • 实施某种策略以决定谁得到资源、如何得到、得到多少
  • 分配资源提供需求者使用
  • 回收资源,以便再分配

三、用户角度看操做系统性能

操做系统应当处于用户与计算机硬件系统之间,为用户提供使用计算机系统的接口。学习

四、系统角度看操做系统

操做系统是硬件之上的第一层软件,它要管理计算机系统中各类硬件资源和软件资源的分配问题,要解决大量对资源请求的冲突问题,决定把资源分配给谁,什么时候分配,分配多少等,使得资源的利用高效并且公平。此外操做系统要对IO设备和用户程序加以控制,保证设备正常工做,防止非法操做,及时诊断设备的故障等。

综上所述,能够获得:

  • 操做系统是软件,并且是系统软件,即操做系统由一整套程序组成。
  • 操做系统基本职能是控制和管理系统内各类资源,有效地组织多道程序的运行。
  • 操做系统提供众多服务,方便用户使用,扩充硬件功能。

总之,一般能够这样定义操做系统:操做系统是控制和管理计算机系统内各类硬件和软件资源,有效地组织多道程序运行的系统软件,是用户和计算机之间的接口。

2、操做系统的主要功能

操做系统主要功能有一下5个方面:存储管理、做业和进程管理、设备管理、文件管理和用户接口服务

一、存储管理

存储管理的主要功能包括:内存分配,地址映射,内存保护和内存扩充

1.1 内存分配

内存分配的主要任务是为每道程序分配必定的内存空间,为此操做系统必须记录整个内存的使用状况,处理用户提出的申请,按照某种策略实施分配,接收系统或用户释放的内存空间。因为内存是宝贵的系统资源,在制定分配策略时应该如何考虑提升内存的利用率,减小内存浪费。

1.2 地址映射

CPU在执行用户程序时,要从内存中取出指令或数据,为此就必须把所用的相对地址(或称逻辑地址)转换成内存的物理地址。

1.3 内存保护

不一样用户的程序都放在同一个内存中,就必需要保证它们在各自的内存空间中活动,不能相互干扰,更不能侵占操做系统的空间,为此须要创建内存保护机制。

1.4 内存扩充

一个系统中的内存容量是有限的,不能随意扩充其大小。然而,当对内存“求大于供”的局面时,就须要采起虚拟存储技术。将程序当前使用的部分放在内存,而其他部分放在磁盘上,之后根据程序执行时的要求和内存当时使用的状况,随机地将所需部分调入内存;必要时还要把已分配出去的内存回收,供其余程序使用(内存置换)

二、做业和进程管理

操做系统中有两个重要概念,即做业与进程,简言之,用户的计算任务称为做业,程序的执行过程称做进程(进程是分配资源和在处理机上运行的基本单位)。众所周知,计算机系统中最重要的资源是CPU,对它管理的优劣直接影响整个系统的性能。因此,做业和进程管理的基本功能包括:做业和进程调度、进程控制和进程通讯。

2.1 做业和进程调度

一个做业一般通过两级调度才能在CPU上执行,首先是做业调度,它把选中的一批做业放入内存,并分配其余必要资源,为这些做业创建相应的进程,而后进程调度按照必定的算法从就绪进程中选出一个合适进程,使之在CPU上运行、

2.2 进程控制

进程是操做系统中活动的实体,进程控制包括建立进程、撤销进程、封锁进程、唤醒进程等。

2.3 进程通讯

多个进程在活动过程当中彼此间会发生相互依赖或者相互制约的关系,为保证系统中全部的进程都能正常活动,就必须设置进程同步机制,它分为同步方式与互斥方式。相互合做的进程之间每每须要交换信息,为此,操做系统须要提供通讯机制。

三、设备管理

设备的分配和驱动由操做系统负责,即设备管理的主要功能包括:缓冲区管理,设备分配,设备驱动和设备无关性

3.1 缓冲区管理

缓冲区管理的目的是解决CPU和外设速度不匹配的矛盾,使它们充分并行工做,提升各自的利用率。

3.2 设备分配

根据用户的IO请求和相应的分配策略,为该用户分配外部设备、通道和控制器等

3.3 设备驱动

实现CPU与通道和外设之间的通讯,由CPU向通道发出IO指令,后者驱动相应设备进行IO操做。当IO任务完成后,通道向CPU发出中断信号,由相应的中断处理程序进行处理

3.4 设备无关性

设备无关性又称设备独立性,即用户编写的程序与实际使用的物理设备无关,由操做系统把用户程序中使用的逻辑设备映射到物理设备。

四、文件管理

文件管理功能包括:文件存储空间的管理,文件操做的通常管理,目录管理,文件的读写管理和存取控制

4.1 文件存储空间的管理

系统文件和用户文件都要放在磁盘上,为此,须要由文件系统对全部文件以及文件的存储空间进行统一管理:为新文件分配必要的外存空间,回收释放的文件空间,提升外存的利用率。

4.2 文件操做的通常管理

文件操做的通常管理包括:文件的建立、删除、打开、关闭等

4.3 目录管理

目录管理包括目录文件的组织、实现用户对文件的“按名存取”,以及目录的快速查询和文件共享等

4.4 文件的读写管理与存取控制

根据用户的请求,从外存中读取数据或者将数据写入外存中。为了保证文件信息的安全性,防止未受权用户的存取或破坏,对各个文件(包括目录)进行存取控制

五、用户接口服务

用户上机操做时直接使用到操做系统提供的用户接口,操做系统对外提供多种服务,使得用户能够方便、有效地使用计算机硬件和运行本身的程序,使得软件开发变的容易、高效。现代操做系统提供三种用户接口:程序接口,命令行接口以及图形用户接口。

5.1 程序接口

也称系统调用接口,系统调用是操做系统内核与用户程序、应用程序之间的接口,它位于操做系统核心层的最外层。全部内核以外的程序都必须经由系统调用才能得到操做系统的服务。系统调用只能在程序中使用,不能直接做为命令在终端上输入和执行。因为系统调用可以改变处理机的执行状态,从用户态变为核心态,直接进入内核执行,因此执行效率很高。用户在本身程序中使用系统调用,从而获取系统提供的众多基层服务,

5.2 命令行接口

在提示符以后用户从键盘上输入命令,命令解释程序接收并解释这些命令,而后把它们传递给操做系统内部程序,执行相应功能。命令行接口不属于操做系统内核,相应的程序是在用户空间中运行的。

5.3 图形用户接口

用户利用鼠标,窗口,菜单,图标等图形用户界面工具,能够直观、方便,有效地使用系统服务和各类应用程序及实用工具。图形用户接口也不属于操做系统内核,相应的程序是在用户空间中运行的。

3、操做系统的类型

操做系统基本类型可分为5种:批处理系统,分时系统、实时系统、网络系统和分布式系统

一、批处理系统

早期的计算机操做系统大多数是批处理系统,在这种系统中,把用户的计算任务按“做业”进行管理。其工做流程通常以下:

  • 操做员把用户提交的做业卡片放到读卡器上,经过SPOOLing输入程序及时把这些做业送入直接存取的后援存储器(如磁盘)
  • 做业调度程序根据系统的当时状况和各后背做业特色,按必定的调度原则,选择一个或几个搭配得当的做业装入内存准备运行
  • 内存中多个做业交替执行,当某个做业完成时,系统把该做业的计算结果交给SPOOLing输出程序准备输出,并回收该做业的所有资源

上述步骤将一直重复下去,使得各做业一个接一个地流入系统,直到没有做业。各个做业通过处理后又顺序地退出系统,造成一个源源不断的做业流。

能够看出批处理系统具备两个特色---“多道”与“成批”

  • “多道”是指内存中存放多个做业,而且在外存上存放大量的后备做业。所以,这种系统的调用原则至关灵活,易于选择一批搭配合理的做业调入内存运行,从而充分发挥系统资源的利用率,增长系统的吞吐量。
  • “成批”是指系统运行过程当中不容许用户和机器之间发生交互做用,也就是说,用户一旦把做业提交系统,他就不能直接干预该做业的运行了。

批操做系统优势:

  • 系统资源利用率高
  • 系统吞吐量大

批操做系统缺点:

  • 用户做业的等待时间长
  • 没有交互能力

二、分时系统

针对批操做系统的缺点,人们提出了分时系统,它让用户经过终端设备联机使用计算机。

在单CPU系统中没法真正的实现多个程序的并行(两个或两个以上事件或活动在同时刻发生就称做并行),为了在多道程序环境中提升资源利用率,每每采用多道程序分时共享硬件和软件资源的技术,分时就是对时间的共享。在分时系统中,分时主要是指若干程序对CPU时间的共享。分享的时间单位称为时间片,它每每很短,如几十毫秒。这种分时的实现,须要有中断机构和时钟系统的支持。利用时钟系统把CPU时间分红一个一个的时间片,操做系统轮流把每一个时间片分给各个程序,每道程序一次只能够运行一个时间片。当时间片计数到时后,产生时间中断,控制转向操做系统,操做系统选择另外一道程序并分给它时间片,让其投入运行。到达给定时间,再发中断,从新选程序(或做业)运行,如此反复。

两个或两个以上的程序在一段时间内,在同一CPU上执行就称做并发,在分时系统中利用并发机制实现了一个物理CPU(也能够是多个物理CPU)在若干道程序之间的多路复用。

分时系统的基本特征:

  • 同时性,若干用户能够同时上机使用计算机系统
  • 交互性,用户可以方便地与系统进行人机交互
  • 独立性,系统中各用户能够批次独立地操做,互不干扰或破坏
  • 及时性,用户能在很短期内获得系统的响应

分时系统的优势:

  • 为用户提供友好的接口,即用户能在较短期内获得响应,能以对话方式完成对程序的编写,调试,修改,运行和获得运算结果
  • 促进了计算机的普及应用,一个分时系统可带多台终端,同时为多个远近用户使用
  • 便于资源共享和交换信息,为软件开发和工程设计提供良好的环境

经常使用的通用操做系统是分时系统与批处理系统的结合,其原则是:分时优先,批处理在后。“前台”响应需频繁交互的做业,“后台”处理时间性不强的做业。

三、实时系统

在计算机的不少应用领域内,要求对实时采样数据进行及时处理,作出相应的反应,若是超出限定的时间就可能丢失信息或影响下一批信息的处理。实时系统是指计算机能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制全部设备和任务协调一致工做的操做系统。实时系统的目标是:对外部请求在严格时间范围内作出反应,并有高可靠性和完整性。其主要特色是:资源的分配和调度首先要考虑实时性,而后才是效率。此外实时系统还应该具备较强的容错能力。实时系统如今有三种典型的应用形式:过程控制系统、信息查询系统和事务处理系统。

实时系统与分时系统的差异:

  • 交互性:分时系统提供一种随时可提供多个用户使用、通用性很强的计算机系统,用户与系统之间具备较强的交互做业或会话能力,而实时系统的交互能力相对来讲比较差
  • 实时性:分时系统响应时间的要求是人可以接受的等待时间,数量级一般是秒;而实时系统对响应时间要求较高,数量级可达到毫秒,甚至微秒。
  • 可靠性:虽然分时系统也要求系统可靠,可是实时系统对可靠性要求更高

四、网络操做系统

因为单台计算机资源毕竟有限,为了实现异地计算机之间的数据通讯和资源共享,可将分布在各处的计算机和终端设备经过数据通讯系统联结在一块儿,构成一个系统,这就是计算机网络,计算机网络须要两大支柱----计算机技术和通讯技术。

计算机网络的特征:

  • 分布性:网上节点机能够位于不一样地点,各自执行本身的任务
  • 自治性:网上的每台计算机都有本身的内存,IO设备和操做系统,可以独立地完成本身承担的任务
  • 互连性:利用互连网络把不一样地点的资源(包括硬件资源和软件资源)在物理上和逻辑上链接在一块儿,在统一的网络操做系统控制下,实现网络通讯和资源共享
  • 可见性:计算机网络中的资源对用户来讲是可见的,用户任务一般在本地机器上运行,利用网络操做系统提供的服务可共享其余主机上的资源

网络操做系统通常创建在各个主机的本地操做系统基础之上,其功能是实现网络通讯,资源共享和保护,以及提供网络服务和网络接口等。在网络操做系统的做用下,对用户屏蔽了各个主机对一样资源所具备的不一样存取方法。

网络操做系统的特性:

  • 接口一致性:网络操做系统要为共享资源提供一个一致的接口,而无论其内部采起什么方法予以实现。
  • 资源透明性:网络操做系统可以实现对资源的最优选择,它了解整个网络系统中共享资源的状态和使用状况,可以根据用户的要求自动作出选择。
  • 操做可靠性:网络操做系统利用硬件和软件资源在物理上分散的优势,实现可靠的操做。
  • 处理自主性:网络操做系统中的各个主机都具备独立的处理能力,在各主机上的资源被认为是局部全部的
  • 执行并行性:计算机网络中任何一个工做站或通讯计算机都称做一个节点,网络操做系统不只实现本机上多道程序的并发执行,并且实现网络系统各节点机上进程执行的真正并行。

五、分布式操做系统

分布式操做系统把大量的计算机组织在一块儿,彼此经过高速网络进行链接。分布式系统有效地解决了地域分布很广的若干计算机系统间的资源共享,并行工做,信息传输和数据保护等问题。

分布式操做系统特色:

  • 灵活性:根据用户需求和使用状况,方便地对系统进行修改或者扩充
  • 可靠性:若是系统中某台机器不能工做了,就有另外的机器作它的工做。可靠性包括可用性,安全性和容错性
  • 高性能:分布式具备执行速度快,响应及时,资源利用高,并且网络通讯能力强
  • 可扩充性:分布式系统能够根据使用环境和应用的须要,方便地扩充或缩减其规模

分布式系统是网络操做系统的更高形式,它保持了网络操做系统的所有功能,并且还具备可靠性和高性能。网络操做系统和分布式操做系统虽然都属于管理分布在不一样地理位置的计算机,但最大的差异是:网络操做系统知道计算机确切的地址,而分布式系统则不知道计算机的确切地址;分布式操做系统负责整个资源的分配,能很好地隐藏系统内部的实现细节,如对象的物理位置,这些对用户都是透明的。

4、计算机硬件结构

从硬件的角度看,现代通用计算机系统是由CPU、内存和若干IO设备组成,它们经由系统总线连接在一块儿,实现彼此通讯。从功能上讲,是由五大功能部件组成,即运算器、控制器、存储器、输入设备和输出设备。这五大功能部件相互配合,协同工做。其中运算器和控制器集成在一片或几片大规模或超大规模集成电路中,称为中央处理器(CPU)。

一、处理器

CPU是计算机的“大脑”,它从内存中提取指令并执行它们。CPU工做的基本周期是:提取指令,译码分析,执行指令。对后面的的指令按相似步骤进行处理。CPU内部包含若干寄存器,其中,一类是通用寄存器,用来存放关键变量和中间结果。另外一类是专用寄存器,如程序计数器(PC),栈指针寄存器和程序状态字(PSW)。同时通常操做系统都提供核心态与用户态两种处理机执行状态。其目的是为了保护操做系统程序(特别是内核部分),防止受到用户程序的损害。当执行操做系统程序时,处理机处于核心态。这时它具备较高特权,能够执行全部指令,包括普通用户程序中不能使用的特权指令,从而能对全部寄存器和内存进行访问,以及启动IO操做等。而用户程序是在用户态下执行的,它的的权限较低,只能执行指令集中非特权指令。

二、存储器

在任何计算机中,存储器都是最主要的组成部分之一。按照速度、容量和成本划分,存储器系统构成一个层次结构,以下图所示:

 

  • 顶层是CPU内部寄存器,其速度与CPU同样快,因此存取它们没有延迟。可是它的成本高,容量小,一般小于1KB。典型存取时间1ns
  • 下面一层是高速缓存,它们大多由硬件控制。Cache的速度很快,它们放在CPU内部或很是靠近CPU的地方。当程序须要读取具体信息时,Cache硬件先查看它是否在Cache中,若是在其中,就直接使用它;若是不在,就从内存中获取该信息,并把它放入Cache中,以备从此再次使用。但Cache成本很高,容量较小,通常小于4MB。典型存取时间2ns
  • 中间一层是内存或者称为主存,它是存储器系统的主力,也称做RAM(随机存取存储器)。CPU能够直接存取内存及寄存器和Cache中的信息,可是不能直接存取磁盘上的数据。所以,机器执行的指令及所用的数据必须预先存放在内存及Cache和寄存器中。然而内存中存放的信息是易丢失的,当机器电源被关闭后,内存中的信息就所有丢失了。
  • 再往下一层是磁盘,称做辅助存储器,它是对内存的扩展。磁盘上能够永久的保留数据,并且容量特别大,如今经常使用的磁盘容量为250GB~2TB。磁头是能够移动的,因为是机械装置,因此磁盘上数据的存取速度低于内存存取速度
  • 最下层是磁带,它记录的数据能够永久保存,而已还能够根据状况换磁带,故容量很大,可是因为它的存取速度很慢,因此不适宜进行随机存取,因此,磁带设备通常不能用作辅存,它的主要用途是做为文件系统的后备,存放一些不常用的信息或者用做系统间传送信息的介质。

 三、IO设备

IO设备是人机交互的工具,它一般由控制器和设备自己两部分组成。控制器是IO设备的电子部分,它协调和控制一台或多台IO设备的操做,实现设备操做与整个系统操做的同步。设备控制器自己有一些缓冲区和一组专用寄存器,负责在外部设备和本地缓冲区之间移动数据。设备实际上隐藏在控制器的后面,于是,操做系统老是与控制器打交道,而不是与设备直接做用。因为设备的种类有不少,于是设备控制器的类别就不少,这就须要不一样的软件来控制它们。这些向控制器发布命令并接收其回答信息的软件就是设备驱动程序。不一样操做系统上的不一样控制器分别对应不一样的设备驱动程序,理论上讲,驱动程序能够在核心以外运行,但当前的系统都把它放在操做系统中,使其在核心方式下运行。

四、总线

按照总线上传送的信息所起的做用,系统总线基本上能够分为以下三部分:

  • 数据总线:用于传输计算机各部件之间数据的通道,其宽度随字节而定。32位结构的数据总线应是32根,64位结构的数据总线应为64根。数据总线是双向总线,即两个方向均可以传送数据。
  • 地址总线:从CPU送来地址的地址线,它能够是存储器的地址,也能够是IO设备控制器中控制寄存器或数据寄存器的地址。地址总线决定了CPU所能访问的最大内存空间的大小。
  • 控制总线:在该线上出现的信号是各模块之间传送数据时所需的所有控制信号

 

本文内容参考孟庆昌老师所著《操做系统》一书

相关文章
相关标签/搜索