操作系统
- 操作系统的定义
- 操作系统的功能
- 操作系统的特征
- 并发和并行的区别
- 操作系统的类型
- Windows 操作系统的优缺点
- 操作系统的中断
- 大内核与微内核的区别(联想单体架构和微服务的区别)
- 进程的三种基本状态及三种状态间的转换
- 进程之间存在什么关系
- 进程与线程的区别
- 进程之间通信的方式
- 什么是 PV 操作
- 什么是计算机的作业,作业有哪几种基本状态
- 高级调度与低级调度的主要任务是什么,为什么要引入中级调度
- 常用的进程调度算法有哪些
- 常用的页面置换算法有哪些
- 常用的磁盘调度算法有哪些
- I/O 控制方式有哪些
- 什么是死锁,为什么会产生死锁,怎么解决死锁
- 什么是饥饿,死锁和饥饿有什么区别
- 什么是内存管理
- Windows 下的内存是如何管理的
- 虚拟内存(虚拟存储器)
操作系统的定义
操作系统是管理和控制计算机硬件和软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统的功能
(1)操作系统是计算机系统资源的管理者
① 处理机管理(包括进程控制、进程同步、进程通信、死锁处理、调度)
② 存储器管理(包括内存分配、内存包含、地址映射、内存扩充)
存储器管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器。
③ 设备管理(包括缓冲管理、设备分配、设备处理)
④ 文件管理(包括文件存储空间的管理、目录管理、文件的读/写管理和保护)
(2)操作系统为用户提供使用计算机硬件系统的接口
① 命令接口(用户通过控制台或终端输入操作命令,向系统提出各种服务要求)
② 程序接口(由系统调用组成,用户在程序中使用这些系统调用来请求操作系统为其提供服务)
③ 图形接口(最常见的是图形界面GUI,最终还是通过调用程序接口来实现)
(3)操作系统用作扩充器
没有任何软件支持的计算机为裸机,实际呈现在用户面前的计算机系统是经过若干层软件改造的计算机。操作系统将裸机改造成功能更强、使用更方便的机器。我们将覆盖了软件的机器称为扩充器或虚拟机。
操作系统的特征
(1)并发:两个或者多个事件在同一时间间隔内发生。(注意区分并发和并行)
(2)共享:系统中的资源可以被内存中多个并发执行的进程共同使用。
(3)虚拟:通过时分复用技术(如分时系统)以及空分复用技术(如虚拟内存)实现把一个物理实体虚拟为若干个逻辑上的对应物。
(4)异步:系统中的进程是以走走停停的方式执行的,且以一种不可预知的速度推进。
并发和并行的区别
(1)并发是指两个或多个事件在同一时间间隔内发生,而并行是指两个或者多个事件在同一时刻发生。
(2)并发是在一台处理器上“同时”处理多个任务,而并行是在多台处理器上同时处理多个任务。
操作系统的类型
(1)批处理操作系统
(2)分布式操作系统
(3)分时操作系统
(4)实时操作系统
(5)个人操作系统
(6)网络操作系统
Windows 操作系统的优缺点
因为我只接触过Win7和Win10两个系统,这两个系统各有各的优点,但就个人使用而言,我感觉还是Win7比较好。
首先,Win10在UI设计、视觉效果和功能方面确实要优于 Win7,但 Win10带有的诸多功能本身就非常占内存,在 Win10的使用过程中,磁盘占有率经常达到90%以上,甚至100%,导致电脑异常的卡顿,而且总是不能够很好的解决。然后就是,因为电脑硬件的一些原因,电脑上使用的各种编程软件会出现各种各样的卡顿和不兼容问题,所以 Win10在兼容性方面还是有很多的不足之处。
相较Win10而言,Win7虽然在自定义优化功能上不比Win10,但Win7对于一些专业软件兼容性高,运行环境也很稳定,不经常卡顿。
操作系统的中断
中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保存现场后自动去执行相应的处理程序,处理完该事件后,再返回中断处继续执行原来的程序。
中断一般分为三类,一种是由CPU外部引起的,例如I/O中断、时钟中断;一种是由CPU内部事件或程序执行过程中引起的,例如程序非法操作、地址越界、浮点溢出;最后一种是在程序中使用了系统调用引起的。
中断处理一般分为中断响应和中断处理两个步骤,中断响应由硬件实施,中断处理由软件实施。
大内核与微内核的区别(联想单体架构和微服务的区别)
大内核和微内核是操作系统基本的两种体系结构。
大内核的性能比微内核高。因为微内核这个模块运行在内核态,而其余的模块运行在用户态,这就导致需要经常在内核态和用户态之间进行切换,就会导致一定的性能损失。
进程的三种基本状态及三种状态间的转换
(1)就绪:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
(2)执行:当进程已获得处理机,其程序在处理机上执行,这时的进程状态称为执行状态。
(3)阻塞:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件有多种,例如,等待I/O完成、申请缓冲区不能满足等。
进程在运行期间,不断地从一种状态转换为另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。
(1)就绪状态转换为执行状态:处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转换为执行状态。
(2)执行状态转换为就绪状态:处于执行状态的进程在其执行过程中,因为分配给它的一个时间片已经用完而不得不让出处理机,于是进程从执行状态转换为就绪状态。
(3)执行状态转换为阻塞状态:正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态转换为阻塞状态。
(4)阻塞状态转换为就绪状态:处于阻塞状态的进程,若其等待的事件已经发生,进程由阻塞状态转换为就绪状态。
进程之间存在什么关系
进程之间存在同步与互斥的制约关系。
同步是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生制约关系。
互斥是指当一个进程进入临界区使用临界资源时,另一个进程必须等待,只有当占用临界资源的进程退出临界区后,另一个进程才被允许去访问临界资源。临界资源是指一次只允许一个进程使用的资源,如打印机。
进程与线程的区别
做个简单的比喻:进程 =火车,线程 =车厢
(1)进程是系统进行资源调度和分配的独立单位(进程由进程控制块、程序段、数据段三部分组成),线程是CPU调度的基本单位。线程是比进程更小的能独立运行的基本单位。
(2)一个线程只能属于一个进程,而一个进程可以有多个线程 [一辆火车可以有多个车厢],但至少有一个线程。线程共享整个进程的资源。
(3)进程和线程的通信方式不同。进程之间的数据很难共享 [一辆火车上的乘客很难换到另外一辆火车],只能通过进程间通信的方式进行(如信号量,管道,共享内存,消息队列,套接字),而线程之间的通信比较方便 [A车厢换到B车厢很容易],同一进程下的线程共享数据(如全局变量,静态变量)。
(4)一个进程挂掉不会影响其他进程,而一个线程挂掉将导致整个进程挂掉 [一列火车不会影响到另外一列火车,但是如果一列火车上中间的一节车厢着火了,将影响到所有车厢]。
(5)进程要比线程消耗更多的计算机资源 [采用多列火车相比多个车厢更耗资源]。
(6)进程可以拓展到多机,而线程最多适合多核 [不同火车可以开在多个轨道上,同一火车的车厢不能在行进的不同的轨道上]。
补充知识点:
① 互斥锁:进程使用的内存地址可以上锁,即一个线程使用某些共享内存时,其他线程必须等它结束,才能使用这一块内存。 [比如火车上的洗手间]
② 信号量:进程使用的内存地址可以限定使用量。[比如火车上的餐厅,最多只允许多少人进入,如果满了需要在门口等,等有人出来了才能进去]
进程之间通信的方式
信号量,管道,共享内存,消息队列,套接字
什么是 PV 操作
PV操作是一种实现进程同步与互斥的有效方法。PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。
PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值非0时,表示期望的消息已经存在。用PV操作实现进程同步时,调用P操作测试消息是否到达,调用V操作发送消息。
什么是计算机的作业,作业有哪几种基本状态
计算机的作业是指计算机的操作及运行的基本进程。
作业的基本状态包括4种:后备状态、提交状态、执行状态、完成状态
高级调度与低级调度的主要任务是什么,为什么要引入中级调度
高级调度(作业调度)的主要任务是按照某种算法,将外存上处于后备队列中的那些作业调入内存。
低级调度(进程调度)的主要任务是按照某种算法,从就绪队列中选取一个进程将处理机分配给它。
引入中级调度(内存调度)的主要目的是为了提高内存利用率和系统吞吐量。
常用的进程调度算法有哪些
(1)先来先服务调度算法(FCFS)
按请求的顺序进行调度。非抢占式,开销小,无饥饿问题;响应时间不确定,对短进程不利。
(2)最短作业优先调度算法(SJF)
按估计运行时间最短的顺序进行调度。非抢占式,开销可能较大,可能导致饥饿问题;对短进程提供好的响应时间,对长进程不利。
(3)优先级调度算法
为每个进程分配一个优先级,按优先级进行调度。
(4)时间片轮转调度算法
将所有就绪进程按先来先服务的原则排成一个队列,用完时间片的进程排到队列最后。抢占式,开销小,无饥饿问题;对短进程提供好的响应时间。
(5)高响应比优先调度算法
(6)多级反馈队列调度算法
常用的页面置换算法有哪些
(1)最佳页面置换算法(OPT)
(2)先进先出置换算法(FIFO)
(3)最近最久未使用置换算法(LRU)
(4)时钟置换算法(CLOCK)
常用的磁盘调度算法有哪些
(1)先来先服务算法(FCFS)
(2)最短寻找时间优先算法(SSTF)
(3)扫描算法(SCAN)
(4)循环扫描算法(C-SCAN)
I/O 控制方式有哪些
(1)程序控制I/O方式(直接程序控制方式)
其优点是控制简单,所需硬件支持少。
其缺点是CPU和外部设备只能串行工作,CPU的利用率低;不能实现设备之间的并行工作。
(2)中断控制I/O方式(中断驱动控制方式)
其优点是所需硬件支持较少,与程序控制I/O方式相比,CPU的利用率大大提高,并且能支持多道程序和设备的并行操作。
其缺点是消耗的CPU处理时间较多,随着外部I/O设备的增多和速度的提高,可能会造成CPU无法响应中断和出现数据丢失现象。
(3)直接存储器访问控制方式(DMA)
(4)通道控制方式
什么是死锁,为什么会产生死锁,怎么解决死锁
(1)死锁的概念
在两个或多个并发进程中,如果每个进程都持有某种资源而又都等待其他进程释放它或它们现在保持着的资源,在未改变这种状态之前不能继续向前推进,称这一组进程产生了死锁。通俗点讲,就是两个或多个进程被无限期地阻塞、相互等待的一种状态。
(2)产生死锁的原因有两个,一是互斥资源分配不当,二是进程推进顺序不当。
(3)产生死锁的必要条件有四个,分别是互斥条件、不剥夺条件、请求并保持条件和循环等待条件。
① 互斥条件是指一个资源每次只能给一个进程使用。
② 不剥夺条件是指在进程使用完资源之前,资源不能被强制剥夺。
③ 请求并保持条件是指一个进程因请求资源而阻塞时,对已获得的资源保持不放。
④ 循环等待条件是指多个进程之间形成的一种互相循环等待资源的关系。
(4)处理产生死锁的办法
死锁的预防是通过设置一些限制条件,破坏死锁的一些必要条件,让死锁无法产生。
死锁的避免是在动态分配资源的过程中,用一些算法(如银行家算法)防止系统进入不安全状态,避免死锁的产生。
死锁的检测及解除是在死锁发生前不做任何操作,只是检测当前是否发生死锁,若发生死锁则采取一些措施(如资源剥夺法、撤销进程法)来解除死锁。
什么是饥饿,死锁和饥饿有什么区别
当等待时间给进程推进和响应带来明显影响时,称发生了进程饥饿。
(1)死锁和饥饿都是资源分配问题。
(2)死锁是等待永远不会释放的资源,而饥饿申请的资源会被释放,只是永远不会分配给自己。
(3)一旦产生死锁,进程必然是多个,而一旦产生饥饿,进程可以只有一个。
(4)饥饿的进程可能处于就绪状态,而死锁的进程一定是阻塞状态。
什么是内存管理
内存管理的基本功能就是为待运行的程序分配内存,并在使用结束后回收这些内存。
分区法是一种简单的内存管理方式,分为固定分区法、动态分区法。
(1)固定分区法:一旦分区分好,分区的个数和大小都不再改变。
(2)动态分区法:根据作业的内存容量需求,动态地为作业划分一块连续的内存空间。
Windows 下的内存是如何管理的
有三种方法:虚拟内存,内存映射文件,内存堆栈。
(1)虚拟内存是将页文件加载到内存,适用于比较大的对象或结构。
(2)内存映射文件是将磁盘上的文件加载到内存,适用于大文件和单机的进程间内存共享。
(3)内存堆栈就是动态的分配内存,适用于小对象的创建。
虚拟内存(虚拟存储器)
(1)虚拟存储器的概念
操作系统将内存中暂时不使用的内容换出到外存上,从而腾出空间存放将要调入内存的信息。这样,系统好像为用户提供了一个比实际内存大得多的存储器,称为虚拟存储器。
(2)虚拟存储器的特征
① 多次性:作业无需在运行时一次性全部装入内存,而是可以分成多次调入内存。
② 对换性:作业运行过程中存在换进换出的过程(换出暂时不用的数据,换入需要的数据)。
③ 虚拟性:从逻辑上扩充了内存的容量,使用户所感觉到的内存容量远大于实际容量。