多道程序系统,html
分时系统,linux
实时系统,程序员
通用操做系统,算法
操做系统的进一步发展,安全
操做系统的做用.服务器
内容总结:网络
操做系统
操做系统种类 : 多道\分时\实时
操做系统的做用 : 帮助你调度硬件资源,帮助你调度管理软件
进程
进程是计算机中最小的资源分配单位
进程调度 : 多级反馈
进程是一个正在运行的程序
程序和进程的区别 : 进程是正在运行的,程序没有运行
同步异步 阻塞非阻塞
同步 就是顺序执行
异步 能够同时执行
阻塞 停住
非阻塞 不停
并行和并发
并行 有多个CPU在同时执行多个任务
并发 只有一个CPU,交替执行多个任务
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,而后启动输入机把程序和数据输入计算机内存,接着经过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。session
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机可以自动地、成批地处理一个或多个用户的做业(这做业包括程序、数据和命令)。并发
分时技术:把处理机的运行时间分红很短的时间片,按时间片轮流把处理机分配给各联机做业使用。异步
分时——如今流行的PC,服务器都是采用这种运行模式,即把CPU的运行分红若干时间片分别处理不一样的运算请求 linux系统
实时——通常用于单片机上、PLC等,好比电梯的上下控制中,对于按键等动做要求进行实时处理
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)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操做系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
第一,进程是一个实体。每个进程都有它本身的地址空间,通常状况下,包括文本区域(text region)、
数据区域(data region)和堆栈(stack region)。
文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;
堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操做系统执行之),它才能成为一个活动的实体,咱们称其为进程。
第三, 进程是操做系统中最基本、重要的概念。
是多道程序系统出现后,为了刻画系统内部出现的动态状况,描述系统内部各道程序的活动规律引进的一个概念,全部多道程序设计操做系统都创建在进程的基础上。
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程均可以同其余进程一块儿并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:因为进程间的相互制约,使进程具备执行的间断性,即进程按各自独立的、不可预知的速度向前推动
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不一样的进程能够包含相同的程序:一个程序在不一样的数据集里就构成不一样的进程,能获得不一样的结果;可是执行过程当中,程序不能发生改变。
程序是指令和数据的有序集合,其自己没有任何运行的含义,是一个静态的概念。 而进程是程序在处理机上的一次执行过程,它是一个动态的概念。 程序能够做为一种软件资料长期存在,而进程是有必定生命期的。 程序是永久的,进程是暂时的。
先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于做业调度,也可用于进程调度。
FCFS算法比较有利于长做业(进程),而不利于短做业(进程)。
由此可知,本算法适合于CPU繁忙型做业,而不利于I/O繁忙型的做业(进程)。
短做业(进程)优先调度算法(SJ/PF)是指对短做业或短进程优先调度的算法,
该算法既可用于做业调度,也可用于进程调度。
但其对长做业不利;不能保证紧迫性做业(进程)被及时处理;做业的长短只是被估算出来的。
时间片轮转(Round Robin,RR)法的基本思路是让每一个进程在就绪队列中的等待时间与享受服务的时间成比例。
在时间片轮转法中,须要将CPU的处理时间分红固定大小的时间片.
前面介绍的各类用做进程调度的算法都有必定的局限性。如短进程优先的调度算法,仅照顾了短进程而忽略了长进程,并且若是并未指明进程的长度,则短进程优先和基于进程长度的抢占式调度算法都将没法使用。 而多级反馈队列调度算法则没必要事先知道各类进程所需的执行时间,并且还能够知足各类类型进程的须要,于是它是目前被公认的一种较好的进程调度算法。在采用多级反馈队列调度算法的系统中,调度算法的实施过程以下所述。 (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完成、申请缓冲区不能知足、等待信件(信号)等。
所谓同步就是一个任务的完成须要依赖另一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列
。要么成功都成功,失败都失败,两个任务的状态能够保持一致。
所谓异步是不须要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工做,依赖的任务也当即执行,只要本身完成了整个任务就算完成了
。至于被依赖的任务最终是否真正完成,依赖它的任务没法肯定,因此它是不可靠的任务序列
。