操作系统的基本特征

ε祈祈猫儿з 提交于 2020-03-08 08:26:44

转自百度知道

https://zhidao.baidu.com/question/1493972177685493419.html

操作系统有四个基本特征 , 如下:

1.并发(concurrence)
并行性与并发性这两个概念是既相似又区别的两个概念。并行性是指两个或者多个事件在同一时刻发生,这是一个具有微观意义的概念,即在物理上这些事件是同时发生的;而并发性是指两个或者多个事件在同一时间的间隔内发生,它是一个较为宏观的概念。在多道程序环境下,并发性是指在一段时间内有多道程序在同时运行,但在单处理机的系统中,每一时刻仅能执行一道程序,故微观上这些程序是在交替执行的。 应当指出,通常的程序是静态实体,它们是不能并发执行的。为了使程序能并发执行,系统必须分别为每个程序建立进程。进程,又称任务,简单来说,是指在系统中能独立运行并作为资源分配的基本单位,它是一个活动的实体。多个进程之间可以并发执行和交换信息。一个进程在运行时需要运行时需要一定的资源,如 cpu,存储空间,及i/o设备等。在操作系统中引入进程的目的是使程序能并发执行。
2.共享 (sharing)
所谓共享是指,系统中的资源可供内存中多个并发执行的进程共同使用。由于资源的属性不同,故多个进程对资源的共享方式也不同,可以分为:互斥共享方式 和 同时访问方式
3.虚拟 (virtual)
是指通过技术吧一个物理实体变成若干个逻辑上的对应物。在操作系统中虚拟的实现主要是通过分时的使用方法。显然,如果n是某一个物理设备所对应的虚拟逻辑设备数,则虚拟设备的速度必然是物理设备速度的1/n。
4.异步 (asynchronism)
在多道程序设计环境下,允许多个进程并发执行,由于资源等因素的限制,通常,进程的执行并非“一气呵成”,而是以“走走停停”的方式运行。内存中每个进程在何时执行,何时暂停,以怎样的方式向前推进,每道程序总共需要多少时间才能完成,都是不可预知的。或者说,进程是以一步的方式运行的。尽管如此,但只要运行环境相同,作业经过多次运行,都会获得完全相同的结果,因此,异步运行方式是运行的。

可见,操作系统为了使程序并发执行而产生了进程。

进程的定义:可并发执行的程序在一个数据集合上的运行过程。
进程的特征:
1.动态性 进程既然是进程实体的执行过程,因此进程是有一定的生命期。而程序只是一组有序指令的集合,并放在某种介质上,本身无运行的含义,因此程序是个静态的实体。
2.并发性
3.独立性 这是指进程实体是一个能独立运行的基本单位,同时也是系统种独立获得资源和调度的基本单位。
4.异步性
5.结构特征 从结构上看,进程实体是由程序段、数据段及进程控制块三部分组成。
(进程控制块(PCB):进程控制块是进程实体的一部分,它记录了操作系统所需要的、用于描述进程情况及控制进程运行所需的全部信息。os 是根据PCB来对并发执行的进程进行控制和管理的)

关于进程的总结:
定义:可并发执行的程序在一个数据集合上的运行过程,每个进程有一个自己的地址空间以及一个单一的控制流程。
要解决的问题:为了使程序能并发执行,(要并发执行就要隔离进程,使进程独立,即每个进程有属于自己的数据段、程序段、进程控制块)

线程的出现:

我们首先回顾进程的两个基本属性:(1)进程使一个可拥有资源的独立单位 (2)进程同时又是一个可以独立调度和分派的基本单位。正是由于这两个基本属性,才使进程成为一个能独立运行的基本单位,从而构成了进程并发执行的基础。
为了使程序能并发执行,系统必须进行以下操作:
(1) 创建进程。创建一个进程时必须为之人、分配所必需的、除处理器以外的所有资源,如内存空间、I/O设备以及建立相应的PCB.
(2) 撤消进程。系统在撤消进程时,需要先对这这些资源进行回收,然后再撤销PCB.
(3) 进程切换。在对进程进行切换时,由于要保留当前进程的CPU环境和设置新选中的进程的CPU环境,为此须花费不少处理器时间。
简言之,由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,也正因为如此,在系统中设置的进程的数目不宜过多,进程的切换的频率也不宜过高,但这也就限制了并发程度的进一步提高。为了解决这个问题,不少操作系统的学者们想到:将进程的两个属性分开,由操作系统分开处理。即对作为调度和分派的基本单位,不同时作为独立分配资源的单位,以使之轻装运行;而对拥有资源的基本单位,又不频繁地对之进行切换,在这种思想的指导下,产生了线程的概念。

线程引入的原因: 为了减少程序并发执行所付出的时空开销,使os具有更好的并发性。

在引入线程的os 中,线程是进程中的一个实体(进程中的一个或多个指令执行流),是被系统独立调度和分派的基本单位。线程基本上不再拥有系统资源,(只拥有一点在运行中必不可少的资源,如程序计数器、寄存器和栈),但它可与同属一个进程的其他线程功能共享进程所拥有的全部资源。线一个线程可以创建和撤销另一个线程;同一进程中的多个线程之间可以并发执行。

线程与进程的比较:
线程具有许多传统进程所具有的特征,故又称为轻型线程或进程元;而把传统的进程称为重型进程。在引入了线程的os中,通常一个进程拥有若干个线程。下面从四个方面来比较线程与进程。
1.调度
在“原始”的OS中,拥有资源的基本单位和独立调度、分配的基本单位都是进程。而在引入线程的OS中,则把线程作为调度和分派的基本单位,而把进程作为资源拥有的基本单位,使传统进程的两个属性分开,线程便能轻装运行,从而可以显著的提高系统并发程度。在同一进程中,线程的切换不会引起进程切换,在由一个进程中的线程切换到另一进程中的线程时,将会引起进程切换。
2.并发性
在引入线程的OS中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可以并发执行,因而使OS具有更好的并发性,从而能更有效的使用系统资源和提高系统吞吐量。
3.拥有资源
不论是“原始”的OS,还是设有线程的操作系统,进程都是拥有资源的一个独立单位,它可以拥有自己的资源。线程自己基本不再拥有系统资源,但它可以访问其隶属进程的资源。
4.系统开销
由于在创建或撤销进程时,系统都要为之分配或回收资源,如内存空间,I/O设备等。因为,OS所付出的开销将显著地大于在创建或撤销线程时的开销。类似的,在进行进程切换时,涉及到整个当前进程CPU环境的保存以及新被调度运行的进程的CPU 环境设置。而线程切换只须保存和设置少量寄存器的内容,并不涉及存储器管理方面的操作。可见,进程切换的开销也远大于线程切换的开销。此外,由于同一进程中的多个线程具有相同的地址空间,使它们之间的同步和通信的实现变得比较容易。
这个机制在现代操作系统的实现主要可分为两大类。即根据操作系统内核是否对线程可感知,分为内核线程和用户线程。
1.内核线程 无论是用户进程中的线程还是系统进程中的线程,它们的创建、撤销和切换都是由内核实现的。在内核中保留了一张线程控制块,内核根据该控制块而感知线程的存在并对线程进行控制。
2.用户线程 它仅存在于用户级中,对于这种线程的创建、撤销和切换,都不利用系统调用实现,因而这种线程与内核无关。相应地,内核也并不知道用户级线程的存在。( 调度的实现方式是采用在用户空间增加运行库,这些运行库被称为“线程包”,每当用户进程获得CPU控制权,线程运行库决定该从哪里开始运行)

( 实际上,上面所说的线程是操作系统调度的基本单位,实际上指的只是内核线程。操作系统在调度时,参考各进程内的线程运行情况做出调度决定,如果一个进程中没有就绪态的线程,那么这个进程也不会被调度占用CPU.
在Windows 2000中,操作系统进行调度时根本就不理采线程是属于哪个进程的,只是将所有的就绪线程统一排成若干个优先级队列,然后进行调度。在这个情况下,线程的确成了调度的最小单位)。

关于线程的总结:
出现的背景:由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,限制了并发程度的进一步提高。
要解决的问题:解决进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销的问题
解决的方法:将进程的两个属性分开,由操作系统分开处理。把“独立调度、分配的基本单位”这个属性分离出来作为线程;而把进程作为资源拥有的基本单位,线程作为进程中的一个实体而存在。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!