当前位置:   article > 正文

操作系统复习

操作系统复习

 操作系统本质是运行在计算机上的软件/程序,是硬件基础上的第一层软件,是硬件和系统软件沟通的桥梁,主要的功能就有两个

  • 管理计算机的硬件和系统资源(CPU...)
  • 向用户提供一个和系统交互的图形界面(GUI)

 操作系统的四大特性

操作系统的两大基础特性是并发和共享,这两个特性是相互依存的,在并发和共享的基础上,还有虚拟和异步,总共四个特性

并发:                                                                                                                                       

并发我们听的多,但是还有一个和并发很像的叫做并行,经常会搞混,今天就来说一下两者之间的区别

并发:是指宏观上多段程序在同一时间发生,在微观上其实是分段发生的,只是间隔时间比较短所以我们认为是同时发生的,操作系统引入进程和线程使得程序可以并发运行

并行:是指同一时刻运行多个程序,这经常发生在多核CPU系统上,需要硬件支持

说道并发和并行,CPU也是重要的一环,CPU从内存中获取指令执行然后运行程序,所以当一个程序进入内存之后并不是马上就运行,而是要先看是否有CPU分配,只有分配了CPU,程序才可以运行。所以并发和并行和CPU是密不可分的

单核CPU一个时间只可以运行一个程序,所以只能并发执行

多核CPU一个时间可以运行多个程序,所以并发并行均可

那么可能有人会问,那多核CPU既然可以并行执行,那么并发是不是就不需要,我们都用多核CPU即可——答案是否定的,比如说现在常见的4核CPU可以同时运行4个程序,但是你一台电脑需要5个程序的时候怎么办,这时候并发还是必不可少的

共享

共享就是资源共享,就是指系统资源可以供内存中多个并发执行的程序一起使用

共享有两种方式——互斥共享和同时共享

互斥共享

就是说虽然这个程序是共享的,所有进程都可以使用,但是同一时刻仅允许一个进程访问,所有互斥共享也叫作互斥访问,通过同步机制来实现,而这些互斥共享的资源叫作临界资源

例子:摄像头——同一时刻qq和微信只能有一个访问

同时共享

与互斥共享相反,允许同一时间多个进程访问,当然这个同时一般也是宏观上的,微观上其实还是各个进程交替访问,这种访问就叫作分时共享

例子——用QQ发送文件A,用微信发送文件B,看起来是两个进程在同时访问磁盘发送文件,但是微观上其实是在交替访问磁盘资源

并发和共享是操作系统的两大最基本特征,互相依存

还是用QQ和微信发送文件举例,如果系统失去并发性,那就代表进程只能一个一个执行,QQ发送完文件A微信才能访问磁盘发送文件B,那么共享就没有意义

那如果没有共享,QQ和微信就无法同时访问磁盘,那么并发也没有意义

虚拟

虚拟的定义:是把一个物理上的实体(实际存在)变成若干个逻辑上(用户感受到的,但实际上并不存在)的对应物。

假设我们使用的是一台单核4GB的电脑,此时电脑上运行着gta5(4g),谷歌浏览器(256mb),qq(256mb)

问题1:这些程序的运行内存此时超过了电脑的内存,为什么还可以运行?

答:这就倚仗了虚拟内存技术的空分复用技术,虽然电脑实际只有4gb内存,但是在用户看来却远不止4gb

问题2:我们是单核CPU,为什么可以同时运行多个程序?

答:这得益于虚拟内存技术的时分复用技术,虽然实际只有一个CPU,但是微观上CPU其实是在交替为各个程序服务的,用户感觉好像这就是一台多核电脑 

空分复用技术 

 空分复用技术的原理就是把内存当初了高速缓存来使用,只保存最频繁使用的部分程序,而把程序的大部分都存放在磁盘上。这种机制要求快速的映像内存地址,便于把程序生成的地址转换成有关字节在内存中的物理地址。这个映像地址的工作就交个CPU中的存储器管理单元(MMU)完成

时分复用技术

单核CPU却能像多核CPU一样同时运行多个程序,得益于时分复用技术,其实就是CPU给每个进程分配了时间片,每次只执行一个时间片然后快速切换。

虚拟和并发的关系:如果失去并发,那么程序一次只能执行一个,那么就失去了实现虚拟的意义,没有并发,就谈不上虚拟

异步

异步是指,在多道程序环境下,允许多个程序并发执行,但是因为系统资源是有限的,所以每个程序并不是一直从开始运行到结束,而是走走停停,以不可预知的速度前进,这就是进程的异步性

异步和并发的关系——如果失去并发性,那么进程就只能串行的执行,那么异步就没有意义 

核心内容

  • 进程管理
  • 存储管理
  • 文件系统管理
  • I/O设备管理

进程管理

进程是程序的一次执行过程,它是暂时的,不仅包含了正在运行的程序代码实体,还有这个过程所占据的系统资源——CPU、网络等(所以同一个程序运行两次就是两个不同的进程)

提到进程,线程就必须说一下

线程也可以说是轻量级的进程,一个进程里可以有多个线程,线程共享所属进程的资源

就比如浏览器这个进程,它包含了http请求线程,网页渲染线程等,线程的并发执行使得我们在点击浏览器的一个链接发起http请求的时候,浏览器还可以对其他事件响应。

进程管理其实包含两部分内容

进程通信——进程通信就是进程之间的相互交流,一个进程只有分配CPU的时候才能执行,那么一个程序可能有多个进程,这时候就需要进程间进行交流,完成同步

举个例子——如果进程A在产生数据,进程B打印数据,那么进程B就必须在A产生数据之前一直等待,当A生产好数据之后,就需要对B发信息说我产好了,你快打吧

进程调度——通常情况下,会有多个进程竞争CPU,如果只有一个CPU可用,那么CPU肯定要选择最好的分配方案,对下一个运行的进程或者线程进行选择,这就是进程(线程)调度

 内存管理

其实这一部分就是虚拟里面的虚拟内存技术,我们将内存当做高速缓存来使用,只保存程序中最频繁使用的部分程序,而把大部分程序存放在磁盘中,内存管理负责的工作就是两部分

  • 把最频繁使用的程序放进内存
  • 当内存满了之后,替换掉部分内存腾出空间

 文件系统管理

文件是进程创建的信息逻辑单元,一个磁盘有成千上万个文件,每个文件都是独立于其他文件的(同名的文件也是两个不同的文件),事实上,我们可以将文件看做是一个逻辑地址空间更好理解它的本质,文件系统的主题就是对文件的构造、命名、存储、使用、保护、管理

I/O设备管理

操作系统需要高效的管理I/O设备,需要发送命令,捕捉中断,并处理设备发生的各种错误,还要在设备和系统的其他部分之间提供简易的借口 

 内核态和用户态

内核——是操作系统中的一组程序模块,作为可信软件来提供支持进程并发执行的基本功能和基本操作,具有访问硬件设备和所有内存空间的权限。内核是操作系统的核心

 既然说内核是程序,那么它运行时我们也需要分配CPU,因此CPU会运行两种程序,一种是操作系统的内核程序(也叫系统程序),还有就是应用程序。内核程序控制应用陈旭,前者可以分配调度系统资源,后者只能申请使用资源

显然这种分配方式也是我们区分内核态和用户态的关键

内核态——当CPU处于内核态时,运行在内核态的程序可以访问计算机的任何资源,为所欲为,例如分配系统资源,协调CPU分配等

用户态——应用程序基本都是运行在用户态,用户态就是应用程序运行的地址空间,运行在用户态的程序只能访问当前CPU上执行程序所在的地址空间,这样就可以防止系统程序(内核态)受到应用程序的侵害 

中断机制

在合适的情况下,操作系统的内核会将CPU的使用权主动交还给应用程序,也就是使用CPU从内核态转换到用户态上。而CPU向从用户态回到内核态只能通过中断机制实现,如果没有中断机制,那么一旦进入用户态,CPU就会一直运行这个程序。中断机制是内核态夺回CPU主动权的唯一途径 ,操作系统就是由中断驱动的。

中断机制是一种广义的说法,一般来说有三种方式

  • 程序请求操作系统服务,执行系统调用
  • 程序运行时产生外中断(I/O操作完成),运行程序被中断,转向中断程序处理(外中断)
  • 在程序运行时发生内中断(捕捉到异常),运行程序被中断,转向异常处理程序(内中断)

系统调用

程序通过执行系统调用,可以使CPU从用户态转回内核态,那么系统调用是中断的一种吗?答案是正确的 ,因为系统调用是通过陷入指令完成的,会引发内中断。详细一点说,操作系统是计算机硬件之上的第一层软件,需要向上层软件提供一些简单的服务,这个上层就包括用户和应用程序。

操作系统给用户提供的是GUI图像界面和命令接口,给应用程序提供的是程序接口,这个程序接口就是系统调用,是操作系统供给开发人员使用的。可以理解为应用程序可以通过系统调用来请求获得操作系统的内核服务

 系统调用的过程

  • 在用户态,应用程序传递系统调用参数
  • 执行陷入指令,引发内中断,从用户态转向内核态
  • 在内核态,执行相应的中断处理程序,内核态处理系统调用
  • 内核态主动转换成用户态,将响应结果返回用户态

这是自己对操作系统知识的一些复习梳理

感谢@飞天小牛肉的复习资料 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/442940?site
推荐阅读
相关标签
  

闽ICP备14008679号