| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 操作系统基本概念和基本特征 -> 正文阅读 |
|
[系统运维]操作系统基本概念和基本特征 |
首先应该明确操作系统是一种系统软件,如何看待操作系统?我认为操作系统是一边面向用户,一边又面向计算机硬件的,方便用户更好的使用计算机的一种工具。主要体现在操作系统的几个主要的功能上:处理机管理/存储器管理/设备管理/文件管理。操作系统的主要特征包括:并发/共享/虚拟/异步。这四个概念实现操作系统功能的重要因素。 1.并发并发是指两个或者多个事件在同一时间间隔内发生,主要体现的是操作系统具有处理和调度多个多个程序同时运行的能力,即此时的计算机系统中存在多个运行的程序,即多个进程。 在了解并发的概念后,应该注意区别并行二者的不同。 并发:指的是在多道程序环境下,一段时间内宏观上有多道程序在同时运行,这里的同时而微观上实际上是交替运行的概念,这种交替体现为时间上的交替,因此可以称其为分时交替,而系统的并发性是建立在分时的基础上。 并行:指的是在同一时刻能够同时完成多道程序的运行,不管从微观上还是宏观上都是同时进行的。对于单处理机而言,同一时刻下只能有一道程序运行,因此要想实现并行,必须得到相关硬件的支持,如多流水线或多处理机的硬件环境。 举个例子: 并发:吃饭吃到一半,电话来了,停止吃饭去接电话,接完电话继续吃饭。 并行:吃饭吃到一半,电话来了,边吃饭边接电话 顺序执行:吃饭吃到一个,电话来了,不接,吃完饭才去接,这既不是并发也不是并行,这样的系统两种方式均不支持。 2.共享共享即资源共享,指的是系统中的资源可供内存中多个并发执行的进程共同使用。共享包括以下两种方式: (1)互斥共享首先了解临界资源(独占资源)的概念,这种资源指的是一段时间内只允许一个进程访问的资源。即如果A进程未使用完该资源时,在并发运行时(此时假设切换到B进程),此时B进行无法访问该资源,只有当A彻底释放该资源时,B才有权限访问该资源。如果不互斥共享会发生什么样的事情呢?假设A/B均为两个打印机进程,当A未执行完一个打印进行时,B切换进来同时也正常使用打印进行,此时A/B进程对应的打印内容在实际打印出来时也是交替的,即两个不同的文件混到了一起。计算机中大多数物理设备以及某些软件中所用到的栈/变量/表格都属于临界资源。 (2)同时访问在弄清楚互斥共享后,同时共享就很好理解了,即这类资源允许在一段时间内多个进程并发的进行访问,也就是刚才说到的A和B得出错误的打印结果的行为。典型的能够同时访问的设备有磁盘设备,以及某些可重入码编写的文件。 从这里可以看出,并发和共享存在一定关系:互为存在条件。 资源共享是以程序的并发为条件的(主要体现在同时访问共享),若系统不允许程序并发执行,则不存在资源共享问题。而如果系统不能对资源共享实施有效的管理,则必将影响到程序的并发执行,甚至根本无法执行(主要体现在互斥共享)。 3.虚拟虚拟指的是一个物理上的实体变成若干逻辑上的对应物。 可以把虚拟看成操作系统对物理硬件的抽象(映像),这里可以看作一种映射关系。虚拟技术主要是面向用户的,而实际的系统物理层面上的都是由操作系统来完成的,这一过程层面对用户是透明的。我们要想操作计算机,是通过指令来实现的,这本身就是一种逻辑上的映射关系,而并非自己实际上去硬件内部操作。对于一个映射关系而言,可以实现多对一,即可以将多台的逻辑上的I/O设备指向一台物理的实际的I/O设备,可将4GB的逻辑上的虚拟内存指向1GB物理的实际的存储设备。而实现这种映射的方法就是操作系统的虚拟技术:时分复用技术,如处理器的分时共享;空分复用技术,虚拟存储器。 例如,假如单处理器情况下同时下载A和B,从用户的角度看,我们看到A和B同时在进行下载,实际上内部是交替的运行下载进程,即A下载一会,B下载一会。但是内部对用户的是透明的,用户感觉是同时在下载,即感觉有两个处理器在下载。这种感觉就是逻辑上的而并非实物理上的。而这种逻辑上的两个处理器实际上对应的是一个物理处理器。 4.异步从并发的概念可以知道,并发运行的程序实际上是交替的使用有限的CPU资源,而交替本身也表明运行的程序并非是一次执行到底,中间存在进程的切换,因此进程的运行是走走停停的,同时其总的推进速度我们也无法预知,这就是异步性。可以看出如果系统不支持并发,那也不存在异步性。当系统存在异步性时,由于我们无法预知进程的运行进度,可能导致进程产生与时间有关的错误(当对全局变量的访问顺序不当会导致程序出错)。因此,在运行环境相同的情况下,操作系统就必须保证同一进程在多次运行后可以得到相同的结果。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 10:42:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |