5,网络编程-操做系统分类/进程

 

多道程序系统,html

分时系统,linux

实时系统,程序员

通用操做系统,算法

操做系统的进一步发展,安全

操做系统的做用.服务器

 

内容总结:网络

 操做系统
操做系统种类 : 多道\分时\实时
操做系统的做用 : 帮助你调度硬件资源,帮助你调度管理软件
进程
进程是计算机中最小的资源分配单位
进程调度 : 多级反馈
进程是一个正在运行的程序
程序和进程的区别 : 进程是正在运行的,程序没有运行
同步异步 阻塞非阻塞
同步 就是顺序执行
异步 能够同时执行
阻塞 停住
非阻塞 不停
并行和并发
并行 有多个CPU在同时执行多个任务
并发 只有一个CPU,交替执行多个任务

 

 

手工操做 —— 穿孔卡片

程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,而后启动输入机把程序和数据输入计算机内存,接着经过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。session

手工操做方式两个特色:
  (1)用户独占全机。不会出现因资源已被其余用户占用而等待的现象,但资源的利用率低。
  (2)CPU 等待手工操做。CPU的利用不充分。
 

批处理 —— 磁带存储

批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机可以自动地、成批地处理一个或多个用户的做业(这做业包括程序、数据和命令)。并发

联机批处理系统

主机与输入机之间增长一个存储设备——磁带,在运行于主机上的监督程序的自动控制下,计算机可自动完成:成批地把输入机上的用户做业读入磁带,依次把磁带上的用户做业读入主机内存并执行并把计算结果向输出机输出。完成了上一批做业后,监督程序又从输入机上输入另外一批做业,保存在磁带上,并按上述步骤重复处理。
监督程序不停地处理各个做业,从而实现了做业到做业的自动转接,减小了做业创建时间和手工操做时间,有效克服了人机矛盾,提升了计算机的利用率。
可是,在做业输入和结果输出时,主机的高速CPU仍处于空闲状态,等待慢速的输入/输出设备完成工做: 主机处于“忙等”状态。
 
 

脱机批处理系统

为克服与缓解:高速主机与慢速外设的矛盾,提升CPU的利用率,又引入了 脱机批处理系统,即输入/输出脱离主机控制。
卫星机:一台不与主机直接相连而专门用于与输入/输出设备打交道的。
  其功能是:
  (1)从输入机上读取用户做业并放到输入磁带上。
  (2)从输出磁带上读取执行结果并传给输出机。
  这样,主机不是直接与慢速的输入/输出设备打交道,而是与速度相对较快的磁带机发生关系,有效缓解了主机与设备的矛盾。主机与卫星机可并行工做,两者分工明确,能够充分发挥主机的高速计算能力。
      脱机批处理系统:20世纪60年代应用十分普遍,它极大缓解了人机矛盾及主机与外设的矛盾。
  不足:每次主机内存中仅存放一道做业,每当它运行期间发出输入/输出(I/O)请求后,高速的CPU便处于等待低速的I/O完成状态,导致CPU空闲。
为改善CPU的利用率,又引入了多道程序系统。
 
 
 
多道程序系统:
 
所谓多道程序设计技术,就是指容许多个程序同时进入内存并运行。即同时把多个程序放入内存,并容许它们交替在CPU中运行,它们共享系统中的各类硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便当即转去运行另外一道程序。
 
 
多道程序设计技术不只使CPU获得充分利用,同时改善I/O设备和内存的利用率,从而提升了整个系统的资源利用率和系统吞吐量(单位时间内处理做业(程序)的个数),最终提升了整个系统的效率。
   单处理机系统中多道程序运行时的特色:
  (1)多道:计算机内存中同时存放几道相互独立的程序;
  (2)宏观上并行:同时进入系统的几道程序都处于运行过程当中,即它们前后开始了各自的运行,但都未运行完毕;
  (3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。
 
多道程序系统的出现,标志着操做系统渐趋成熟的阶段,前后出现了做业调度管理、处理机管理、存储器管理、外部设备管理、文件系统管理等功能。
因为多个程序同时在计算机中运行,开始有了空间隔离的概念,只有内存空间的隔离,才能让数据更加安全、稳定。
出了空间隔离以外,多道技术还第一次体现了时空复用的特色,遇到IO操做就切换程序,使得cpu的利用率提升了,计算机的工做效率也随之提升。
 
 

分时系统

分时技术:把处理机的运行时间分红很短的时间片,按时间片轮流把处理机分配给各联机做业使用异步

 
分时技术:把处理机的运行时间分红很短的时间片,按时间片轮流把处理机分配给各联机做业使用。
  若某个做业在分配给它的时间片内不能完成其计算,则该做业暂时中断,把处理机让给另外一做业使用,等待下一轮时再继续其运行。因为计算机速度很快,做业运行轮转得很快,给每一个用户的印象是,好象他独占了一台计算机。而每一个用户能够经过本身的终端向系统发出各类操做控制命令,在充分的人机交互状况下,完成做业的运行。
具备上述特征的计算机系统称为分时系统,它容许多个用户同时联机使用计算机。
  特色:
  (1) 多路性。若干个用户同时使用一台计算机。微观上看是各用户轮流使用计算机;宏观上看是各用户并行工做。
  (2)交互性。用户可根据系统对请求的响应结果,进一步向系统提出新的请求。这种能使用户与系统进行人机对话的工做方式,明显地有别于批处理系统,于是, 分时系统又被称为交互式系统。
  (3)独立性。用户之间能够相互独立操做,互不干扰。系统保证各用户程序运行的完整性,不会发生相互混淆或破坏现象。
  (4)及时性。系统可对用户的输入及时做出响应。分时系统性能的主要指标之一是响应时间,它是指:从终端发出命令到系统予以应答所需的时间。
   分时系统的主要目标:对用户响应的及时性,即不至于用户等待每个命令的处理时间过长。
分时系统能够同时接纳数十个甚至上百个用户,因为内存空间有限,每每采用对换(又称交换)方式的存储方法。即将未“轮到”的做业放入磁盘,一旦“轮到”,再将其调入内存;而时间片用完后,又将做业存回磁盘(俗称“滚进”、“滚出“法),使同一存储区域轮流为多个用户服务。
多用户分时系统是当今计算机操做系统中最广泛使用的一类操做系统。
       注意:分时系统的分时间片工做,在没有遇到IO操做的时候就用完了本身的时间片被切走了,这样的切换工做其实并无提升cpu的效率,反而使得计算机的效率下降了。可是咱们牺牲了一点效率,却实现了多个程序共同执行的效果,这样你就能够在计算机上一边听音乐一边聊qq了。
 
 
 

实时系统

 
虽然多道批处理系统和分时系统能得到较使人满意的资源利用率和系统响应时间,但却不能知足实时控制与实时信息处理两个应用领域的需求。因而就产生了实时系统,即系统可以及时响应随机发生的外部事件,并在严格的时间范围内完成对该事件的处理。
实时系统在一个特定的应用中常做为一种控制设备来使用。
    实时系统可分红两类:
    (1)实时控制系统。当用于飞机飞行、导弹发射等的自动控制时,要求计算机能尽快处理测量系统测得的数据,及时地对飞机或导弹进行控制,或将有关信息经过显示终端提供给决策人员。当用于轧钢、石化等工业生产过程控制时,也要求计算机能及时处理由各种传感器送来的数据,而后控制相应的执行机构。
    (2)实时信息处理系统。当用于预约飞机票、查询有关航班、航线、票价等事宜时,或当用于银行系统、情报检索系统时,都要求计算机能对终端设备发来的服务请求及时予以正确的回答。此类对响应及时性的要求稍弱于第一类。
   实时操做系统的主要特色
  (1) 及时响应。每个信息接收、分析处理和发送的过程必须在严格的时间限制内完成。
  (2) 高可靠性。需采起冗余措施,双机系统先后台工做,也包括必要的保密措施等。
 
 
 
分时——如今流行的PC,服务器都是采用这种运行模式,即把CPU的运行分红若干时间片分别处理不一样的运算请求 linux系统
实时——通常用于单片机上、PLC等,好比电梯的上下控制中,对于按键等动做要求进行实时处理 
 
 
 

通用操做系统:

 

 

 
操做系统的三种基本类型:多道批处理系统、分时系统、实时系统。
   通用操做系统:具备多种类型操做特征的操做系统。能够同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。
  例如:实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理做业。常把实时任务称为前台做业,批做业称为后台做业。
  再如:分时处理+批处理=分时批处理系统。即:时间要求不强的做业放入“后台”(批处理)处理,需频繁交互的做业在“前台”(分时)处理,处理机优先运行“前台”做业。
  从上世纪60年代中期,国际上开始研制一些大型的通用操做系统。这些系统试图达到功能齐全、可适应各类应用范围和操做方式变化无穷的环境的目标。可是,这些系统过于复杂和庞大,不只付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。
  相比之下, UNIX操做系统倒是一个例外。这是一个通用的多用户分时交互型的操做系统。它首先创建的是一个精干的核心,而其功能却足以与许多大型的操做系统相媲美,在核心层之外,能够支持庞大的软件系统。它很快获得应用和推广,并不断完善,对现代操做系统有着重大的影响。
  至此,操做系统的基本概念、功能、基本结构和组成都已造成并渐趋完善。
 
 
 

操做系统的进一步发展

我的计算机操做系统:

我的计算机上的操做系统是联机交互的单用户操做系统,它提供的联机交互功能与通用分时系统提供的功能很类似。
  因为是我的专用,所以一些功能会简单得多。然而,因为我的计算机的应用普及,对于提供更方便友好的用户接口和丰富功能的文件系统的要求会越来越迫切。
 
 

网络操做系统:

计算机网络:经过通讯设施,将地理上分散的、具备自治功能的多个计算机系统互连起来,实现信息交换、资源共享、互操做和协做处理的系统。
  网络操做系统:在原来各自计算机操做系统上,按照网络体系结构的各个协议标准增长网络管理模块,其中包括:通讯、资源共享、系统安全和各类网络应用服务。
 
 
 

分布式操做系统

 
表面上看,分布式系统与计算机网络系统没有多大区别。分布式操做系统也是经过通讯网络,将地理上分散的具备自治功能的数据处理系统或计算机系统互连起来,实现信息交换和资源共享,协做完成任务。——硬件链接相同。
  但有以下一些明显的区别:
  (1)分布式系统要求一个统一的操做系统,实现系统操做的统一性。
  (2)分布式操做系统管理分布式系统中的全部资源,它负责全系统的资源分配和调度、任务划分、信息传输和控制协调工做,并为用户提供一个统一的界面。
  (3)用户经过这一界面,实现所须要的操做和使用系统资源,至于操做定在哪一台计算机上执行,或使用哪台计算机的资源,则是操做系统完成的,用户没必要知道,此谓:系统的透明性。
  (4)分布式系统更强调分布式计算和处理,所以对于多机合做和系统重构、坚强性和容错能力有更高的要求,但愿系统有:更短的响应时间、高吞吐量和高可靠性。
 
 
 
I/O操做都有哪些? 输入输出:是从内存写入到硬盘,仍是硬盘读入到内存.
输入 input f.read accept recv connect
输出 print f.write connect send
文件操做/网络操做的都是IO操做

操做系统的做用

 

现代的计算机系统主要是由一个或者多个处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其余输入输出设备组成。

  通常而言,现代计算机系统是一个复杂的系统。

  其一:若是每位应用程序员都必须掌握该系统全部的细节,那就不可能再编写代码了(严重影响了程序员的开发效率:所有掌握这些细节可能须要一万年....)

  其二:而且管理这些部件并加以优化使用,是一件极富挑战性的工做,因而,计算安装了一层软件(系统软件),称为操做系统。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的全部设备。

  总结:

  程序员没法把全部的硬件操做细节都了解到,管理这些硬件而且加以优化使用是很是繁琐的工做,这个繁琐的工做就是操做系统来干的,有了他,程序员就从这些繁琐的工做中解脱了出来,只须要考虑本身的应用软件的编写就能够了,应用软件直接使用操做系统提供的功能来间接使用硬件。

  精简的说的话,操做系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。

 
 
 
#一:隐藏了硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。
应用程序员有了这些接口后,就不用再考虑操做硬件的细节,专心开发本身的应用程序便可。 例如:操做系统提供了文件这个抽象概念,对文件的操做就是对磁盘的操做,
有了文件咱们无需再去考虑关于磁盘的读写控制(好比控制磁盘转动,移动磁头读写数据等细节), #二:将应用程序对硬件资源的竞态请求变得有序化 例如:不少应用软件实际上是共享一套计算机硬件,
比方说有可能有三个应用程序同时须要申请打印机来输出内容,
那么a程序竞争到了打印机资源就打印,而后多是b竞争到打印机资源,也多是c,这就致使了无序,
打印机可能打印一段a的内容而后又去打印c...,操做系统的一个功能就是将这种无序变得有序。
 
 
 
  进程:
 

顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。

进程的概念起源于操做系统,是操做系统最核心的概念,也是操做系统提供的最古老也是最重要的抽象概念之一。操做系统的其余全部内容都是围绕进程的概念展开的。

因此想要真正了解进程,必须事先了解操做系统,点击进入    

PS:即便能够利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。

 
#一 操做系统的做用:
    1:隐藏复杂的硬件接口,提供良好的抽象接口
    2:管理、调度进程,而且将多个进程对硬件的竞争变得有序

#二 多道技术:
    1.产生背景:针对单核,实现并发
    ps:
    如今的主机通常是多核,那么每一个核都会利用多道技术
    有4个cpu,运行于cpu1的某个程序遇到io阻塞,会等到io结束再从新调度,会被调度到4个
    cpu中的任意一个,具体由操做系统调度算法决定。
    
    2.空间上的复用:如内存中同时有多道程序
    3.时间上的复用:复用一个cpu的时间片
       强调:遇到io切,占用cpu时间过长也切,核心在于切以前将进程的状态保存下来,这样
            才能保证下次切换回来时,能基于上次切走的位置继续运行

 

 什么是进程:

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,操做系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体

狭义定义: 进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
广义定义:进程是一个具备必定独立功能的程序关于某个数据集合的一次运行活动。它是 操做系统动态执行的 基本单元,在传统的 操做系统中, 进程既是基本的分配单元,也是基本的执行单元
进程的概念:
第一,进程是一个实体。每个进程都有它本身的地址空间,通常状况下,包括文本区域(text region)、
数据区域(data region)和堆栈(stack region)。
文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;
堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操做系统执行之),它才能成为一个活动的实体,咱们称其为进程。
第三, 进程是操做系统中最基本、重要的概念。
是多道程序系统出现后,为了刻画系统内部出现的动态状况,描述系统内部各道程序的活动规律引进的一个概念,全部多道程序设计操做系统都创建在进程的基础上。

 

 
 进程的特征:
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程均可以同其余进程一块儿并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:因为进程间的相互制约,使进程具备执行的间断性,即进程按各自独立的、不可预知的速度向前推动
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不一样的进程能够包含相同的程序:一个程序在不一样的数据集里就构成不一样的进程,能获得不一样的结果;可是执行过程当中,程序不能发生改变。

 

 进程与程序的区别:
 
程序是指令和数据的有序集合,其自己没有任何运行的含义,是一个静态的概念。 而进程是程序在处理机上的一次执行过程,它是一个动态的概念。 程序能够做为一种软件资料长期存在,而进程是有必定生命期的。 程序是永久的,进程是暂时的。
 
 注意:同一个程序执行两次,就会在操做系统中出现两个进程,因此咱们能够同事运行一个软件,
分别作不一样的事情也不会混乱,
 
 
 
 

进程调度

 要想多个进程交替运行,操做系统必须对这些进程进行调度,这个调度也不是随即进行的,而是须要遵循必定的法则,由此就有了进程的调度算法。
 
1, 先来先服务调度算法:
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于做业调度,也可用于进程调度。
FCFS算法比较有利于长做业(进程),而不利于短做业(进程)。
由此可知,本算法适合于CPU繁忙型做业,而不利于I/O繁忙型的做业(进程)。
 2,短做业优先调度算法
短做业(进程)优先调度算法(SJ/PF)是指对短做业或短进程优先调度的算法,
该算法既可用于做业调度,也可用于进程调度。
但其对长做业不利;不能保证紧迫性做业(进程)被及时处理;做业的长短只是被估算出来的。
 3,时间片轮转法:
时间片轮转(Round Robin,RR)法的基本思路是让每一个进程在就绪队列中的等待时间与享受服务的时间成比例。
在时间片轮转法中,须要将CPU的处理时间分红固定大小的时间片.
4,
前面介绍的各类用做进程调度的算法都有必定的局限性。如短进程优先的调度算法,仅照顾了短进程而忽略了长进程,并且若是并未指明进程的长度,则短进程优先和基于进程长度的抢占式调度算法都将没法使用。
而多级反馈队列调度算法则没必要事先知道各类进程所需的执行时间,并且还能够知足各类类型进程的须要,于是它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程以下所述。
(1) 应设置多个就绪队列,并为各个队列赋予不一样的优先级。第一个队列的优先级最高,第二个队列次之,其他各队列的优先权逐个下降。该算法赋予各个队列中进程执行时间片的大小也各不相同,在优先权愈高的队列中,为每一个进程所规定的执行时间片就愈小。例如,第二个队列的时间片要比第一个队列的时间片长一倍,……,第i+1个队列的时间片要比第i个队列的时间片长一倍。
(2) 当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,即可准备撤离系统;若是它在一个时间片结束时还没有完成,调度程序便将该进程转入第二队列的末尾,再一样地按FCFS原则等待调度执行;若是它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长做业(进程)从第一队列依次降到第n队列后,在第n 队列便采起按时间片轮转的方式运行。

(3) 仅当第一队列空闲时,调度程序才调度第二队列中的进程运行;仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。若是处理机正在第i队列中为某进程服务时,又有新进程进入优先权较高的队列(第1~(i-1)中的任何一个队列),则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权进程。
多级反馈队列

 

进程的并行与并发

 

并行 : 并行是指二者同时执行,好比赛跑,两我的都在不停的往前跑;(资源够用,好比三个线程,四核的CPU )

并发 : 并发是指资源有限的状况下,二者交替轮流使用资源,好比一段路(单核CPU资源)同时只能过一我的,A走一段后,让给B,B用完继续给A ,交替使用,目的是提升效率。

区别:

并行是从微观上,也就是在一个精确的时间片刻,有不一样的程序在执行,这就要求必须有多个处理器。
并发是从宏观上,在一个时间段上能够看出是同时执行的,好比一个服务器同时处理多个session

 
 

同步异步阻塞非阻塞

 
 进程的几个状态:就绪,运行,阻塞.
 
 
 
 
 

(1)就绪(Ready)状态

  当进程已分配到除CPU之外的全部必要的资源,只要得到处理机即可当即执行,这时的进程状态称为就绪状态。

  (2)执行/运行(Running)状态当进程已得到处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。

  (3)阻塞(Blocked)状态正在执行的进程,因为等待某个事件发生而没法执行时,便放弃处理机而处于阻塞状态。引发进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能知足、等待信件(信号)等。

 
 
 

同步和异步

所谓同步就是一个任务的完成须要依赖另一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态能够保持一致。

  所谓异步是不须要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工做,依赖的任务也当即执行,只要本身完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务没法肯定,因此它是不可靠的任务序列

 

阻塞与非阻塞

阻塞:中止,
非阻塞:不中止,继续运行,
 

同步/异步与阻塞/非阻塞

1,同步阻塞形式:效率最低
2,异步阻塞形式:异步操做是能够被阻塞住的,只不过它不是在处理消息时阻塞,
而是在等待消息通知是被阻塞.
3,同步非阻塞形式:效率低下,
4,异步非阻塞形式:效率高,
相关文章
相关标签/搜索