操作系统+linux系统月考复习

这是我们整理的这次操作系统与linux系统的月考复习资料,重点已经使用不同颜色标出,大家好好复习,预祝同学们取得好成绩

同学们不要拿公众号资料作弊哦

操作系统是计算机系统中最重要的系统软件,是用户和硬件交互的桥梁,负责管理和协调计算机硬件与软件资源,提供用户与计算机系统之间的交互环境。

我们之前的课程 计算机组成原理 里介绍了计算机的基本构成:

不难发现,操作系统是最接近硬件的一层软件,是为了向上层用户提供方便简单易用的服务(封装思想)。

在本门课程中,我们主要学习进程、内存、文件系统、设备管理。linux操作系统,是一种开源的操作系统,方便灵活,易用安全稳定的特性,广泛应用于服务器,嵌入式系统,机器人,超算等多领域。我们主要学习Linux系统的一些关键命令,学会使用linux系统的基本使用方法,考试也是从这些角度进行考察。

本次月考范围:操作系统(理论课):第一章、第三章。Linux(第一张~第三章)

Part1:操作系统(理论课):

第一章:引导

一、操作系统的发展阶段:

1.手工操作阶段:我们知道指令基础是0、1代码(机器编码),计算机刚诞生时, 程序员通过对纸带打孔,传入计算机中,进行计算机操作。再把计算机输出结果放入纸带,程序员翻译,这样程序执行速度很慢。

缺点:单用户独占全机,资源利用率低。

单道批处理:引入脱机输入/输出技术应用程序并行配置不正确,并由监督程序负责控制作业的输入和输出。

直观理解,把多个需求,通过机器刻录在磁带上,将磁带输入计算机,速度会快很多。监督程序会让计算机的空等状况减少,提高了计算机的资源利用率。

优点:缓解了人机速度矛盾

缺点:只有一道程序运行,cpu仍然有大量时间在空等i/o完成

应用并行配置不正确怎么办_应用并行正确配置程序有哪些_应用程序并行配置不正确

3.多道批处理阶段:每次向内存中读入多道程序,此时操作系统真正诞生了!用于支持多道程序并发运行

优点:多道程序并发执行,共享计算机资源。资源利用率大幅度提升,cpu和其他资源更能保持“忙碌”状态,系统吞吐量增大。

缺点:用户响应时间长,没有人机交互功能

4.分时操作系统:计算机以时间片为单位轮流为各个用户/作业服务,各个用户通过终端与计算机进行交互

优点:用户请求可以及时响应,解决人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作系统相互独立,感受不到别人的存在

缺点:任请求有轻重缓急,不能及时处理紧急任务。每次请求是循环处理的。

应用并行正确配置程序有哪些_应用并行配置不正确怎么办_应用程序并行配置不正确

实时操作系统:能够根据优先级处理紧急任务

分为硬实时系统和软实时系统

必须严格按照规定时间完成处理(特别紧急,如智驾)

可以偶尔违法时间规定(选课系统)

操作系统的功能:

处理器管理(进程管理)、存储器管理、设备管理、文件管理和用户接口

本次只考进程管理

进程管理是对处理器进行分配,对其运行进行有效的控制和管理

进程是处理机分配和运行的基本单位

进程管理包括:进程控制、进程同步、进程通信、进程调度)

存储器管理:内存管理

内存分配与回收

内存共享和保护

地址映射

内存逻辑扩展

设备管理:管理外设,充分发挥效率,并给用户提供简单而易于使用的接口

缓冲区管理

设备分配与回收

设备操作控制

设备独立性和共享性

文件管理:对用户文件和系统文件进行管理,方便用户使用,保证文件的安全性

文件存储空间管理

目录管理

文件袋存取控制

三.操作系统类型的划分:

按用户可分为:单用户、多用户

按任务数:单任务、多任务

按cpu个数:单cpu、多cpu

按使用环境及对作业的处理方式等等

四.程序的执行方式:

程序是如何运行的?

我们人类间的交互是自然语言,然而机器是看不懂语言的,机器识别机器指令(二进制)——指令就是处理器能识别,执行的最基本命令。

程序可以分为内核程序(操作系统内核)和应用程序(对用户显式的程序)

五.操作系统的特征(简答):

并发性、共享性、虚拟性、异步型

并发性和共享性是两个最基本的特征,二者互为存在条件

并发:

指两个或多个事件在同一时间间隔内发生应用程序并行配置不正确,宏观同时发生,微观交替发生(区分并行:两个或多个时间在同一时刻发生)单处理机并发,多处理机并行

这里需要了解进程、线程:

进程是一个操作系统中执行的程序实例,系统进行资源分配和调度的基本单位;线程:操作系统能够进行运算调度的最小单位,进程内部的更小的调度和运行单位,一个进程包含 多个线程。

我们可以粗略的认为并发是在进程上进行,并行依赖于线程特性。实际系统设计中,进程和线程相辅相成,互相依存。

共享性:资源共享,系统中的资源可供内存中多个并发执行的进程共同使用。

两种资源共享方式:互斥共享和同时共享

互斥共享:系统中的某些资源,虽然可以提供给多个进程使用。一个时间段内只允许一个进程访问该资源

同时共享:允许一个时间段内由多个进程同时对他们访问。

所谓同时,也总是宏观同时,进程可能是交替访问(分时)

Eg:(互斥)wx和同时视频,统一时间段只可以分配给其中一个进程

(同时)wx发送文件A,同时给另一个人发文件B,两边同时读取发送文件,宏观同时,微观可能是交替访问硬盘。

并发和共享的关系:

并发是指计算机系统中同时存在着多个运行的程序,共享是指系统的资源可供内存中多个并发执行的进程共同使用。

如果没有共享性,任务交互难,资源访问复杂,必须依赖于共享资源

如果没有并发性,整个系统的利用率和相应能力提升效果差

因此称并发和共享是操作系统的两个最基本的特征,互为存在条件

虚拟性:通过某种技术菜把一个物理实体变成若干个逻辑上的对应物

引入一个例子来具象这个特性:比如我的电脑是4gb的内存,我在上面运行了宏观加起来等于6gb内存的软件,那怎么使用内存的呢?

利用虚拟存储器,”空分复用“:通过将空间分成多个区域,不同的区域分配给不同的程序以便于达到共享的目的。(虚拟内存、虚拟磁盘)

”时分复用“:通过将时间分成多个片段,不同的时间片分给不同的程序以达到共享的目的。(虚拟处理机、虚拟设备)物理还是单机,逻辑分片成多机。

如果没有并发性,那么任意一个时间段内只需要运行一道程序,那么就没有分时间或空间片的可能性。

异步性:多道程序环境下,运行多个程序并发执行,但由于资源有限,进程执行不是一贯到底的,而是走走停停,速度不可预知,这就是进程的异步行

(并发执行的程序会争抢系统的资源)

如果没有并发性,系统只能串行执行程序,因此只有并发,才能异步

作业:

用户要求计算机所做的有关这次业务处理的全部工作称为一个作业。作业是由不同等顺序相连的作业步组成

作业步:在一个作业的处理过程中相对独立的工作

脱机作业控制(批处理作业)

联机作业控制(终端作业)

作业控制说明书:作业控制块(JCB)

不同操作系统的JCB结构不同,包含作业名,作业预计执行时间,优先数,建立时间,说明书,文件名,程序语言类型等等

用户作业的输入和输出:联机、脱机、直接耦合、假脱机、网络。

在计算机上配置操作系统,其主要目标是:方便性、有效性、可扩充性和开放性。

第三章:进程管理

进程管理是学习操作系统最重要的一部分,涉及的考点包括简答题、小题、计算题、状态转换图和一些简单的原语描写等等。从内容上,我们要理解进程的定义、特征,进程的状态及转换过程、进程同步与互斥的问题、原语定义、经典进程管理模型、mutex信号量等重点内容。

一。基本概念

这是我们电脑的任务管理器中可以看到在运行的进程,不难发现后面提示的资源占用率是一个动态指标,因此我们可以说,进程是动态的,是程序的一次执行过程。

与之相关的概念程序:是一个静态概念,是存放在磁盘中的可执行文件,是一系列的指令集合。

要注意的:同一个程序多次执行,会对应多个进程。

一个进程肯定有一个对应的程序,进程和程序不是一一对应的,进程有并发性和独立性,程序是封闭的

进程是一个具有独立功能的程序对某个数据集合的一次执行过程。

进程是程序的运行过程。是系统进行资源分配和调度一个独立单位。

(一种情形:我们重复打开两次同样的程序,系统怎么区分这两个程序,处理相对应的进程呢?这里就引出我们之前提过的进程控制块PCB,他会为该进程分配一个唯一的不重复的PID,以此做区分,PCB里还会有相关资源的占用情况,运行情况)

PCB是进程存在的唯一标志,当进程被创建时,操作系统会创建PCB,进程结束,回收PCB。

系统的所有PCB组织成链队或队列,常驻内存的PCB区。

PCB的存在可以实现间断性运行方式(保存CPU的现成信息)

进程的组成:PCB、程序段(程序的代码(指令序列))、数据段(运行过程中产生的各种数据)

进程的特征:动态性:有生命周期,由系统创建并独立执行,完成后撤销

并发性:进程是可以并发执行的基本单位,宏观上可以同时执行

独立性:各进程间相互独立,是系统调度和分配资源的基本单位

异步性:各个进程按照各自独立的,不可预知的速度,异步向前推进。

二。进程的相关预备知识:

前趋图:有向非循环图(DAG)描述进程之间执行的先后顺序

结点:表示一条语句、一个程序段或一个进程

有向边:结点之间的前趋关系用—>表示

前趋和后继相关知识我们在数据结构的课程中学习过:

之前提过的单道程序:任何时刻在内存中运行的程序只有一道,任何时刻在CPU上执行的指令也只有一个,基于这个概念:单道程序顺序执行有以下特征:

顺序执行、封闭性、可再现性(程序执行结果与执行速度无关)

但是这样资源利用率低,因此我们需要多道程序并发执行:

这时我们就从需求的角度引入了进程:

程序并发执行:非封闭性、间断性、独立性、随机性,不可再现性(程序执行结果与执行速度相关)。

理解:

int = 0;

void () {

= 1; // 设置共享变量

void () {

int temp = ; // 读取共享变量

// 进行一些计算

如果 先执行, 将被设置为1, 读取时将获得1。

如果调度使得 先执行,则 temp 将读取到0。

由于调度的不同,最终的结果可能会不同,这就是不可再现性的体现。

为了解决不可再现性导致的程序难并发,我们就引入进程,来描述程序在内存中运行的状态。

这也就和前面所说的:进程的组成:PCB、程序段(程序的代码(指令序列))、数据段(运行过程中产生的各种数据)呼应上了,我们在进程中详细描述了程序运行状态,让并行执行程序的不确定不可知变成了有具体描述的可知,可确定。

因此我们可以认为:现代操作系统为了提高资源利用率,要进行并发,为了预测并发程序的运行结果,对并发执行程序引入强可控性,我们就加入了进程,来管理并发程序!

综上我们来用一个流图来介绍基本都程序运行流程:

三。进程的状态和转换:

进程的状态:之前我们说过,进程是有生命周期的,在进程生命的各个阶段处于不同的状态,为了准确描述生命的不同阶段,引入进程状态!

进程有五种基本状态:初始态、就绪态、运行态、阻塞态、停止态。

初始状态:创建进程,实际上是创建进程实体的PCB(申请空白PCB、填写控制管理进程信息、分配资源和插入就绪队列)

就绪状态:得到了除了CPU(处理机 )以内所有必要资源(系统中可能会有很多个进程处于就绪态,cpu空闲时就会立刻选择一个就绪进程,让他上cpu运行)

运行状态:进程进入cpu,进程正在被执行

阻塞状态:进程在执行过程中,因等待某事件发生而无法继续执行的暂停状态(所需资源不足,等待),等待的事件处理完成后,就继续上处理机运行。

终止状态:撤销进程,等待操作系统善后处理,把资源回收,最后PCB也会被回收并归还系统。

所以创建进程就是创建PCB,撤销进程就是回收PCB。

注意:以上的状态是一个动态过程,不能简单的认为进程处于其中某个状态就是一个静态状态!因此我们引入一个状态转换图来更好的理解这个过程(容易考)

需要强调,阻塞态必然是从运行态转换的,是进程作出的主动行为,而阻塞完成后也要再次进入就绪态,再调度进程进入运行态。

应用程序并行配置不正确_应用并行配置不正确怎么办_应用并行正确配置程序有哪些

补充:挂起操作:

终端用户请求暂停进程,或父进程挂起,负荷调节需要,操作系统需要,会转到挂起状态,挂起的进程是静止的,未被挂起的进程锁活动的

静止就绪,静止阻塞;

活动就绪,活动阻塞。

活动就绪:进程在主存并且可被调度的状态。

活动阻塞:进程在主存并暂时无法执行的状态。

静止就绪:内存中就绪的进程被对换到辅存时的状态,是不能被直接调度的状态。

静止阻塞:内存中处于等待状态的进程被对换到辅存。

PCB的结构包括:标识信息(进程标识符、用户标识符、家族树指针)、控制信息(进程的状态、进程优先级、起始地址、占用CPU时间和占用内存时间)、资源信息(ram,swap,share,外设,文件情况)和CPU现场信息(处理机状态)

进程的链接方式:

执行指针:指向当前处于运行态的进程

就绪队列指针:指向当前处于就绪态的进程,优先级高的先指

阻塞队列指针:指向阻塞态度进程

索引方式:系统根据所有进程的状态建立几张索引表,把各表的内存首地址记录在内存的专用单元。记录了相应状态的某个PCB在PCB表中的地址

四.进程控制(原语程序):

进程控制的主要功能是对系统中的所有进程实施有效的管理,创建新进程,撤销已有进程,实现进程状态转换等功能

实现进程控制需要原语实现进程控制

原语是一种特殊的程序,它的执行具有原子性,运行必须一以贯之,不可以中断。

原语用关中断和开中断指令实现原子性,关中断和开中断之间的指令集不可以中断!

创建原语:

申请空白PCB,为新进程分配所需的资源,初始化PCB,将PCB插入就绪队列

进程创建的两种方式:系统程序创建、父进程创建(树结构,父进程、子进程)

使用创建原语的实际场景:用户登陆、作业调度、提供服务和应用请求。

creat()[操作系统发现要求创建新进程的事件后,调用进程创建原语]

使用创建原语后,进程进入就绪态。

撤销原语:

引起进程终止:正常结束、异常结束和外界干预

()

根据标志符检索PCB,读出进程状态,进程终止,资源归还,PCB从队列中移出

阻塞原语:运行态—>阻塞态就要用到阻塞原语

找到要阻塞的进程对应的PCB,保护进程运行现场,将PCB状态信息设置为阻塞态,暂时停止进程运行,将PCB插入相应事件的等待队列

请求系统服务失败,等待某种操作完成,等待新数据

block()

唤醒原语:阻塞态->就绪态,当阻塞进程等待的事件发生,则由有关进程调用唤醒原语,等待该事件的进程唤醒。

在事件等待队列中找到PCB,将PCB从等待队列移除,设置进程为就绪态,将PCB插入就绪队列,等待被调度。

()

五。进程同步与互斥:

一、之前提过,进程具有异步性:各个并发执行的进程以各自独立的,不可预知的速度向前推进。

但是现实中我们会对进程运行的顺序做约束,比如一些必须立刻发生的进程先发生,这就需要引入进程同步的机制来实现。

同步(协调多个进程的执行顺序)被称作直接制约关系,它是为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生制约关系。进程间的直接制约关系就是来自他们的相互合作。

直接相互制约关系叫进程同步关系(进程合作,进程间有逻辑关系),间接相互制约关系叫互斥关系(资源共享,进程间无逻辑关系)

在进程的特征时,我们讲过并发需要共享的支持,各个并发执行的进程不可避免的需要共享一些系统资源(内存,i/o设备等)

二、这里需要引入一个非常重要的概念——临界区

临界区是指访问共享资源的代码段。通过设置互斥机制,确保同一时间只有一个线程可以在临界区内执行。

临界:我们把一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备,变量,数据,内存缓冲区都属于临界资源

对临界资源的访问,必须互斥的进行。互斥也叫做间接制约关系。进程互斥就是当一个进程访问某临界资源时,另一个想要访问该资源的进程必须等待,当前访问临界资源的进程访问结束,释放资源后,另一个进程才能去访问临界资源。

对临界资源的访问可以分为四个部分:

可以说,在临界区中,涉及访问临界资源的代码段,这段代码实质上是进程实现互斥的基础,这个临界区涉及到四个使用规则:

空闲让进:临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区;

忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;

让权等待:如果进程不能进入自己的临界区,就应该让出CPU,避免进程忙等(忙等就是指,运行在处理机上的进程因为没有获得临界区资源而必须等待获取资源,但暂时获取不到,所以就该让出处理机运行权);

有限等待:对请求访问的进程,应保证能在有限时间内进入临界区,而进入临界区的进程应该尽可能短的时间内离开临界区。

进程互斥的解决方案:

软件同步机制、硬件同步机制和信号量机制,我们简单提一下软件和硬件,重点了解信号量机制

使用软件代码方法解决临界区的问题,有难度且有局限性,现在很少使用

有很多种算法,这里提一下解决方案(未满足让全等待),只适用于两个进程交替执行临界区的情况:

硬件同步机制:使用特殊的硬件指令,有效实现进程互斥,局限性:因为用开/关中断指令实现,因此不适用于多处理机,只适用于操作系统内核进程,这个特权指令只适用于内核态。类似的硬件指令还有一些,属于考研范畴,这里不再涉及,只需要知道多少都是有缺点的,缺点的角度大多也是不完全符合临界区的使用规则。

锁机制:解决临界区问题最简单的方式就是互斥锁。一个进程在进入临界区时获得锁,推出临界区时释放锁。

将标志看成锁,锁开进入,锁关等待

具体实现思路:并发进程申请进入临界区时首先测试临界区是否上锁,若已经上锁,则申请进程等待临界区解锁,否则锁上,进入临界区,知道该进程退出临界区,把锁打开

这个锁变量本质上就是一个布尔变量,false未上锁,可以进入,true上锁,还想使用临界区就得等待。

//开锁

(S){

S=false;

S;

//上锁

lock(S){

old=S;

S=true;

old;

加锁会导致忙等,循环造成资源浪费,对于同步问题灵活性很低。违反让权等待。

如果上锁时间短,其实上锁效率很高!

信号量机制:

之前的提到任何解决方案,都不能很好的实现让权等待规则。

信号量机制可以相对完美的实现进程同步和互斥。

用户进程可以通过使用操作系统提供的一对原语来对信号量进行操作,从而很方便的实现了进程互斥和同步操作。

和之前的各种方法一样,信号量其实也是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量,比如我们有两个显示屏,我们就可以设置一个初值为2 的信号量。

针对这个信号量,我们再定义两个信号量相关的原语操作——p操作和V操作

对信号量我们只能进行P、V操作(荷兰语)

P(S)操作对应wait(S)原语而V(S)操作对应(S)原语

P(S)占用或等待资源操作

V(S)归还或释放资源操作

它们是原语操作,不可中断

wait操作:

P(S){

S--;

if (S< 0 )/*判断状态*/

block(S) ; /*阻塞原语*/

V(S) {

S++;

if(S 文件名

例如:ls命令在屏幕上显示当前路径下的文件,无法保存所列信息。如果想要保存信息,就需要使用输出重定向,使信息保存在指定文件中。

$ ls > /home/linux/myml.lst

上述命令将ls显示信息保存在了myml.lst文件当中,如果指定文件中存有其它内容,那么该内容会被覆盖。因此大多数情况会选择在文件的原有内容后进行追加,追加的语法形式为:

命令 >> 文件名

因此为了避免原有文件内容被破坏,可将“ls > /home/linux/myml.lst”修改为“ls >> /home/linux/myml.lst”

Shell使用管道(pipe)将前一个命令的输出作为下一个命令的输入。

管道的工作过程是:首先将一个命令的标准输出重定向到一个文件,然后将该文件作为另一个命令的标准输入。管道的符号使用“|”表示,具体使用格式为:

命令1 | 命令2 ...... | 命令n

管道符左边命令的输出是右边命令的输入,需要注意的是,命令1的输出必须正确,否则将会影响后续输出结果。

例如:查找当前目录下,所有.text文件名称中有“apple”字符的文件。执行命令如下:

$ find -name "*.text" | grep "apple"

$ -h now #立即关机

$ -h n #提示用户系统将在n分钟以后关机

halt #立刻关机(功能同 -h命令相同)

halt -p #关闭系统的同时切断电源

halt -d #关闭系统但不留下记录

执行命令关闭计算机并切断电源,该命令与 -h now等同。

注意:如果系统中登录多个用户,某个普通用户关机时需要获取root权限。

执行命令可以重启系统,也可以使用命令重启系统,具体用法如下:

重启系统

-r 延时1分钟重启

-r now 立即重启,与等同

-r n(分钟) 过n分钟后重启

打开命令行终端,输入命令“vi”后回车即可打开vim编辑器。

输入“vi 文件名”并回车便可以打开相应的文件进行查看和编辑。启动后屏幕的左侧是一列“~”符号,表示当前行为空行,且在屏幕底部会显示当前打开文件的名称及状态。


限时特惠:
本站持续每日更新海量各大内部创业课程,一年会员仅需要98元,全站资源免费下载
点击查看详情

站长微信:Jiucxh

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注