你必须知道的关于操作系统的N个概念!
本文全部概念都是基于《计算机操作系统教程(第四版)》中的表述归纳而成。
操作系统的任务和功能
操作系统的职能是管理和控制计算机系统中的所有硬件和软件资源,合理地组织计算机流程,并为用户提供一个良好的工作环境和友好的接口。操作系统的基本功能包括处理机管理,存储管理、设备管理、信息管理(文件系统管理)和用户接口等。
多道程序和多重处理
多道程序是作业之间自动调度执行、共享系统资源,并不是真正地同时执行多个作业。
而多重处理系统配置多个CPU,能真正同时执行多道程序。
要有效使用多重处理,必须采用多道程序设计技术,而多道程序设计原则上不一定要求多重处理系统的支持。
批处理、分时、实时、网络、分布式系统
- 批处理操作系统:操作员把用户提交的作业分类,把一批作业编成一个作业执行序列,由专门编制的监督程序自动依次处理。其主要特征是用户脱机使用计算机、成批处理以及多道程序运行。
- 分时系统:把处理机的运行时间分成很短的时间片,按时间片轮转的方式把处理机分配给各进程使用。其主要特征是交互性、多用户同时性和独立性。
- 实时系统:在被控对象允许时间范围内作出响应。其主要特征是:对实时信息分析处理速度要比进入系统快,要求安全可靠,资源利用率低。
操作系统的角度
- 操作系统是计算机资源的管理者
- 操作系统为用户提供使用计算机的界面
- 用进程管理观点研究操作系统,即围绕进程运行过程来讨论操作系统。
操作系统的基本硬件元素
- CPU与指令长度及执行方式
- 内存、缓存和高速缓存等存储装置
- 各类寄存器,包括各种通用寄存器、控制寄存器和状态寄存器
- 中断机构
- 外部设备与I/O设备
- 内部总线与外部总线
- 对硬件进行操作的指令集
作业概念及组成
在一次应用业务处理过程中,从输入开始到输出结束,用户要求计算机所做的有关该次业务处理的全部工作称为一个作业。作业由程序、数据和作业说明书组成。系统通过作业说明书控制文件形式的数据和程序,使之执行和操作。在批处理操作系统中,作业是抢占内存的基本单位。作业由顺序相连的作业步组成。
作业步
在一个作业的处理过程中计算机所做的相对独立的工作。
系统调用的概念
是操作系统提供给编程人员的唯一接口。编程人员利用系统调用,在源程序一级动态请求和释放系统资源,调用系统中已有的系统功能来完成那些与机器硬件部分相关的工作和控制程序的执行速度。系统调用像一个黑箱子那样,对用户屏蔽了操作系统的具体动作而只提供有关功能。
系统调用的实现方式
用户在程序中使用系统调用,给出系统调用名和函数后,即产生一条相应的陷阱指令,通过陷阱指令处理机制调用服务,引起处理机中断,然后保护处理机现场,取系统调用功能号并寻找子程序入口,通过入口地址表来调用系统子程序,然后返回用户程序继续执行。
作业说明书
作业说明书体现用户的控制意图,主要包含三方面内容:作业的基本描述、作业控制描述和资源要求描述。
作业控制块
作业说明书在系统中生成一个称为作业控制块(job control block,JCB)的表格,登记该作业所要求的资源情况、预计执行时间和执行优先级等。操作系统通过该表了解到作业要求,并分配资源和控制作业中的程序和数据的编译、链接、装入和执行。
作业的输入输出方式:5种
- 联机输入方式:用户和系统通过交互式会话来输入作业。
- 脱机输入方式:利用低档个人计算机作为外围处理机进行输入处理,存储在后援存储器上,然后将此后援存储器连接到高速外围设备上和主机相连,从而在较短时间内完成作业的输入工作。
- 直接耦合方式:把主机和外围低档机通过一个公用的大容量外存直接耦合起来,从而省去了在脱机输入中那种依靠人工干预来传递后援存储器的过程。
- Spooling方式:可译为外围设备同时联机操作。在Spooling系统中,多台外围设备通过通道或DMA器件和主机与外存连接起来,作业的输入输出过程由主机中的操作系统控制。
- 网络联机方式:上述几种输入输出方式为基础。当用户通过计算机网络中的某一台设备对计算机网络中的另一台主机进行输入输出操作时,就构成了网络联机方式。
Spooling系统原理
- 在Spooling系统中,多台外围设备通过通道或DMA器件和主机与外存连接起来,作业的输入输出过程中由主机的操作系统控制。操作系统中的输入程序包含两个独立的过程,一个过程负责从外部设备把信息读入缓冲区;另一个过程是写过程,负责把缓冲区中的信息送入到外存输入井中。
- 在系统输入模块受到作业输入请求后,输入管理模块中的读过程负责将信息从输入装置读入缓冲区。当缓冲区满时,由写过程将信息从缓冲区写到外存输入井中。读过程和写过程反复循环,直到一个作业输入完毕。当读过程读到一个硬件结束标志后,系统再次驱动写过程把最后一批信息写入外存并调用中断处理程序结束该次输入。然后,系统为该次作业建立作业控制块(JCB),从而使输入井中的作业进入作业等待队列,等待作业调度程序选中后进入内存。
用户接口:程序一级和作业一级
- 一个是系统为用户提供的各种命令接口,用户利用这些操作命令来组织和控制作业的执行或管理计算机系统。
- 另一个接口是系统调用,编程人员使用系统调用请求操作系统提供服务,例如申请和释放外设等类资源,控制程序的执行速度等。
作业的控制方式:联机和脱机
- 脱机控制方式利用作业控制语言来编写表示用户控制意图的作业控制程序,也就是作业说明书。作业控制语言的语句就是作业控制命令。不同的批处理系统提供不同的作业控制语言。
- 联机控制方式不同于脱机控制方式,它不要求用户填写作业说明书,系统只为用户提供一组键盘或其他操作方式的命令。用户使用操作系统提供的操作命令和系统会话,交互地控制程序执行和管理计算机系统。
分时系统没有作业的概念
因为在分时系统中,每个用户得到的时间片有限,用户的程序和数据信息直接输入到内存工作区中和其他程序一起抢占系统资源投入执行,而不必进入外存输入井等待作业调度程序选择。因此,分时系统没有作业控制表,也没有作业调度程序。
分时系统没有作业调度的概念
在分时系统中,一般不存在作业调度,而只有线程调度、进程调度和交换调度。这是因为在分时系统中,为了缩短响应时间,作业不是建立在外存中,而是直接建立在内存中。在分时系统中,一旦用户和系统的交互开始,用户马上要进行控制。因此,分时系统中没有作业提交状态和后备状态。分时系统的输入信息经过终端缓冲区为系统直接接收,或立即处理,或经交换调度暂存外存中。
进程
一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位,其中程序指一组操作序列,数据集是接受程序规定操作的一组存储单元的内容。进程是一个动态的执行过程。
线程
线程是在进程中内用于调度和占有处理机的基本单位,由相关堆栈(系统栈或用户栈)、寄存器和线程控制表TCB组成。只有一个进程中线程的切换到另一个进程中的线程时,才引起进程的切换。线程可分为用户级线程、核心级线程以及用户/核心混合线程等类型。
临界区
是指不允许多个并发进程交叉执行的一段程序。它是由于不同的并发进程的程序段共享公共数据或公共数据变量而引起的,所以它又被称为访问公用数据的那段程序。
死锁
是指各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发进程不能继续向前推进的状态。
直接制约
是由于并发进程互相共享对方的私有资源所引起的。
间接制约
是竞争公有资源所引起的。
同步
异步环境下的一组并发进程因直接制约互相发送消息而进行相互合作、相互等待,是各进程按一定的速度执行的过程。
互斥
一组并发进程中的一个或多个程序段,因共享某一段公有资源而导致它们必须以一个不许交叉执行的单位执行,即不允许两个以上的共享该资源的并发进程同时进入临界区。
进程与程序的区别
- 进程是动态概念,而程序是一个静态概念,程序是指令的有序集合,无执行含义,进程则强调执行的过程。
- 进程具有并行特征(独立性、异步性),程序则没有。
- 不同的进程可以包含同一个程序,同一程序在执行中也可以产生多个进程。
进程和作业的区别
一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。
作业是用户为了让计算机完成某项任务而要求计算机所做的工作的集合。
一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。
而进程是已提交完毕的程序的执行过程的描述,是资源分配的基本单位。
- 作业是用户向计算机提交任务的任务实体
- 一个作业可以由多个进程组成。且必须至少由一个进程组成,但反过来不成立。
- 作业的概念主要用在批处理系统中。
进程和线程的区别
线程是在进程中内用于调度和占有处理机的基本单位,它由线程控制表、存储线程上下文的用户栈以及核心栈组成。线程可分为用户级线程、核心级线程以及用户/核心混合线程等类型。
其中用户级线程在用户态下执行,CPU调度算法和各线程优先级都由用户设置,与操作系统内核无关。
核心级线程的调度算法及线程优先级的控制权在操作系统内核。混合型线程的控制权则在用户和操作系统内核二者。
- 进程是资源管理器的基本单位,它拥有自己的地址空间和各种资源。线程只是处理机调度的基本单位,它只和其他线程一起共享进程资源,但自己没有任何资源。
- 以进程为单位进行处理机切换和调度时,由于涉及资源转移以及现场保护等问题,将导致处理机切换时间变长,资源利用率降低。以线程为单位进行处理机切换和调度时,由于不发生资源变化,特别是地址空间的变化,处理机切换的时间较短,从而处理机效率较高。
- 对用户来说,多线程可减少用户等待时间,提高系统的响应速度。
- 线程和进程一样,都有自己的状态,也有相应的同步机制。不过线程没有单独的数据和程序空间,因此,线程不能像进程的数据和程序那样交换到外存空间,从而线程没有挂起状态。
- 进程的调度、同步等控制大多由操作系统内核完成,而线程的控制既可以由操作系统内核进行,也可以由用户控制进行。
P、V原语和加锁法互斥实现的区别
互斥的加锁法实现是这样的:当某个进程进入临界区之后,它将锁上临界区,直到它退出临界区为止。并发进程在申请进入临界区时,首先测试该临界区是否是上锁的,如果该临界区已被锁住,则该进程要等到该临界区开锁之后才有可能获得临界区。
但是加锁法存在如下弊端:
(1)循环测试锁定位将损耗较多的CPU计算时间
(2)产生不公平现象
为此,P、V原语法采用信号量管理相应临界区的公有资源,信号量的数值仅能由P、V原语操作改变,而P、V原语执行期间不允许中断发生。其过程是这样的某个进程正在临界区内执行时,其他进程如果执行了P原语,则该进程并不像lock时那样因进不了临界区而返回lock的起点,等以后重新测试,而是在等待队列中等待由其他进程做V原语操作释放资源后,进入临界区,这时P原语才算真正结束。若有多个进程做P原语操作而进入等待状态之后,一旦有V原语释放资源,则等待进程中第一个进入临界区,其余的继续等待。
总之,加锁法是采用反复测试lock而实现互斥的,存在CPU浪费和不公平现象,P、V原语使用了信号量,克服了加锁法的弊端。
一个进程是由伪处理机执行的一个程序
对。因为伪处理机的概念只有在执行时才存在,它表示多个进程在单处理机上并发执行的一个调度单位。因此,尽管进程是动态概念,是程序的执行过程,但是,在多个进程并行执行时,仍然只有一个进程占据处理机执行,而其他并发进程则处于就绪或等待状态。这些并发进程就相当于由伪处理机执行的程序。
现代操作系统的特点
保证安全的前提下,程序并发执行,以及系统所拥有的资源被共享和系统的用户随机使用。
程序顺序执行的特点
顺序性、封闭性、可再现性。
多道程序系统中程序执行环境的特点
独立性、随机性、资源共享性。
并发执行
一组在逻辑上相互独立的程序或程序段在执行过程中,其执行时间在客观上相互重叠,即一个程序段的执行尚未结束,另一个程序段的执行以及开始的这种执行方式。
并行执行
一组程序按独立的、异步的速度执行。
进程的静态描述
进程控制块、有关程序段和该程序段对其进行操作的数据结构集。
进程控制块
进程控制块包含了有关进程的描述信息、控制信息以及资源信息,是进程动态特征的集中反映。
进程的状态
初始状态、就绪状态(内存就绪、外存就绪)、等待状态(内存等待、外存等待)、执行状态、终止状态。
原语
一般地,把系统态下执行的某些具有特定功能的程序段称为原语。
进程控制的原语
创建原语、撤销原语、阻塞原语、唤醒原语
合作进程
具有同步关系的一组并发进程称为合作进程,合作进程互相发送消息的信号称为消息或事件。
低级通信和高级通信
进程间的通信内容可分为:控制信息传递传送(低级通信)和大批量数据传送(高级通信)
进程间的通信方式
主从式
- 主进程可自由地使用从进程的资源或数据。
- 从进程的动作受主进程的控制。
- 主进程和从进程的关系是固定的。
会话式:通信双方可分别称为使用进程和服务进程。
- 使用进程在使用服务所提高的服务之气那,必须得到服务进程的许可。
- 服务进程根据使用进程的要求提供服务,但对所提供服务的控制有服务进程自身完成。
- 使用进程和服务进程咋进行通信时有固定连接关系。
消息或邮箱机制:
- 只要存在空缓冲区或邮箱,发送进程就可以发送消息。
- 与会话系统不同,发送进程和接收进程之间无直接连接关系,接收进程可能在收到某个发送进程发来的消息之后,又转去接收另一个发送进程发来的消息。
- 发送进程和接收进程之间存在缓冲区或邮箱用来存放消息。
消息的一般形式:发送进程名、接收进程名、数据和有关数据的操作
共享存储区方式不要求数据移动。两个需要互相交换信息的进程通过对同一个共享数据区的操作来达到互相通信的目的。这个共享数据区时每个相互通信的一个组成部分。
都可用于大量数据传送
死锁的条件
互斥条件
并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对它所需要的资源进行排他性控制。
不剥夺条件
进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程自己释放。
部分分配
进程每次申请它所需要的一部分资源,在等待新资源的同时,继续占有已分配到的资源。
环路条件
存在一种进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。
死锁的消除方法
死锁预防
采用某种策略,限制并发进程对资源的请求,从而使得死锁的必要条件在系统执行的任何事件都不满足。
死锁避免
指系统在分配资源时,根据资源的使用情况提前做出预测,从而避免死锁的发生。
死锁的检测和恢复
系统设有专门的机构,当死锁发生时,该机构能够检测到死锁发生的位置和原因,并能通过外力破坏死锁发生的必要条件,从而使得并发进程从死锁状态中恢复出来。
死锁的根本条件
产生死锁的根本条件在于系统提供的资源个数少于并发进程所要求的该类资源数。
死锁的起因
死锁的起因是并发进程的资源竞争。
分级调度
处理机调度问题实际上也是处理机的分配问题。显然只有那些必需的资源都已得到满足的进程才能享有竞争处理机的资格。这时它们处于内存就绪状态。这些必需的资源包括内存、外设及有关数据结构等。从而,在进程有资格竞争处理机之前,作业调度程序必需先调用存储管理和外设管理程序,并按一定的选择顺序和策略从输入井中选择出几个处于后备状态的作业,为它们分配资源和创建进程,使它们获得竞争处理机的资格。另外,由于处于执行状态的作业一般包括多个进程,而在单机系统中,每一个时刻只能有一个进程占用处理机,这样,在外存中,除了处于后备状态的作业外,还存在处于就绪状态等待得到内存的作业。需要有一定的方法和策略为这部分作业分配空间。因此处理机调度需要分级。
作业调度
又称宏观调度或高级调度。其主要任务是按一定的原则对外存输入井上的大量后备作业进行选择,给选出的作业分配内存和输入输出设备等必要资源,并建立相应的根进程,以使得该作业的进程获得竞争处理机的权力。另外,当该作业执行完毕时,还负责回收系统资源。
交换调度
又称中级调度。其主要任务是按照给定的原则和策略,将处于外存交换区中的就绪状态或等待状态进程调入内存,或把处于内存就绪状态或内存等待状态的进程交换到外存交换区。交换调度主要涉及内存管理与扩充。
进程调度
又称微观调度或低级调度。其主要任务是按照某种策略或方法选取处于就绪状态的进程占用处理机。在确定了占用处理机的进程之后,系统必须进行进程上下文切换以建立与占用处理机进程相适应的执行环境。
线程调度
进程中相关堆栈和控制表等的调度。
实时调度
实时调度是为了完成实时处理任务而分配计算机处理器的调度方法。
周转时间
将一个作业提交给计算机系统后到该作业的结果返回给用户所需要时间。
吞吐率
给定时间内,一个计算机系统所完成的总工作量。
响应时间
用户向计算机发出一个命令到计算机把相应的执行结果返回给用户所需要的时间。
设备利用率
输入输出设备的使用情况。
收容状态
若一个作业的全部信息已全部备输入进入输入井,那么,在它未被调度去执行之前。
执行状态
作业被作业调度程序从后备作业中选中到内存,为其建立进程并分配资源。
实时调度和非实时调度的区别
- 实时调度所调度的任务有完成时限,而非实时调度没有。因此,实时调度算法的正确与否不仅与算法的逻辑有关,也与调度算法调度的时限有关。
- 实时调度要求较短的进程或线程切换时间,而非实时调度的进程或线程的切换时间较长。
- 非实时调度强调资源的利用率(批处理系统)或用户共享处理机(分时系统),实时调度则主要强调在规定时限范围内完成对应设备的控制。
- 实时调度为抢先式调度,而非实时调度则很少采用抢式调度。
作业调度的功能
- 记录系统中各个作业的状况,包括执行阶段的有关情况。
- 按一定原则对外存输入井中的大量后备作业进行选择
- 给选出的作业分配内存、输入输出设备等必要的资源,并建立相应进程,使该作业的相关进程获得竞争处理机的权利。
- 当作业执行完毕时,在负责回收系统资源。
进程调度的主要功能
- 记录和保存系统中所有进程的执行情况。
- 选择占有处理机的进程。
- 进行进程上下文切换。
进程调度的时机
不可剥夺:
- 正在执行的进程执行完毕。这时如果不选择新的就绪进程执行,将浪费处理机资源。
- 执行中进程自己调用阻塞原语将自己阻塞起来进入睡眠等待状态。
- 执行中进程调用了P原语操作,从而因资源不足被阻塞;或调用了V原语操作激活了等待资源的进程队列。
- 在执行中进程提出了I/O请求后被阻塞。
- 在分时系统中时间片已经用完。
- 在执行完系统调用等系统程序后返回用户程序时,可看做系统进程执行完毕,从而调度选择一个新的用户进程执行。
可剥夺:
- 就绪队列中的某进程的优先级变得高于当前执行进程的优先级,从而也将引发进程调度。
调度算法(作业调度、进程调度)
- 先来先服务调度算法(FCFS):将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。
- 轮转法(RR):让每个进程在就绪队列中的等待时间与享受服务的时间称比例。将CPU的处理时间分成固定大小的时间片。
- 多级反馈轮转法(RRMF):一个进程在执行结束之前,可能需要反复多次通过反馈循环执行,而不是优先级法中的一次执行。
- 优先级法:确定作业或进程的优先级。静态优先级、动态优先级、线性优先级调度(SRR)。
- 最短作业优先(SJF):选择那些估计需要执行时间最短的作业投入执行,为它们创建进程和分配资源
- 最高响应比优先(HRN):同时考虑每个作业的等待时间长短和估计需要的执行时间长短,从中选出响应比最高的作业投入执行。
实时调度的策略
实时调度是为了完成实时处理任务而分配计算机处理器的调度方法。
实时处理任务要求计算机在用户允许的时限范围内给出计算机响应信号。实时处理任务可分为硬实时任务和软实时任务。硬实时任务要求计算机系统必须在用户给定的时限内处理完毕,软实时任务允许计算机系统在用户给定的时限左右处理完毕。
针对硬实时任务和软实时任务,计算机系统可以有不同的实时调度算法。这些算法采用基于优先级的抢先式调度策略,具体的说,大致有如下几类:
静态表驱动模式
该模式用于周期性实时调度,它在任务到达之前对各任务抢占处理机的时间进行分析,并根据分析结果进行调度。
静态优先级驱动的抢先式调度模式
该模式也进行静态分析。分析结果不是用于调度,只是用于给各任务指定优先级。系统根据各任务的优先级进行抢先式调度。
基于计划的动态模式
该模式在新任务到达后,将以前调度过的任务与新到达的任务一起统一计划,分配CPU时间。
动态尽力而为模式
该模式不进行任何关于资源利用率的分析,只检查各任务的时限是否能得到满足。
代表性的实时调度算法有两种,即时限式调度法和频率单调调度法。
多处理机系统
广义上来说,使用多台处理机协调工作来完成用户所要求任务的计算机系统都是多处理机系统。狭义的多处理机系统是利用系统内的多个CPU来并行执行用户的几个程序,以提高系统的吞吐量;或用来进行冗余操作,以提高系统的可靠性。
虚拟存储器
由进程中的目标代码、数据等的虚拟地址组成的虚拟空间。
覆盖
将程序划分为若干功能区上相对独立的程序段,按照程序的逻辑结构让那些不会同时执行的程序段共享同一个内存区的内存扩充技术。
交换
指先将内存某部分的程序或数据写入外存交换区,再从外存交换区中调入指定的程序或数据到内存中来,并让其执行的一种内存扩充技术。
分区管理
给每一个内存中的进程划分一块适当大小的存储区,以连续存储各进程的程序和数据,使各进程得以并发执行。
页式管理
就是把各进程的虚拟空间划分为若干长度相等的页面,把指令按页面大小划分后存放在内存中执行,或者只在内存中存放那些经常被执行或即将被执行的页面,而那些不被经常执行以及在近期不可能被执行的页面则存放在外存中,按一定规定调入的一种内存管理方式。
请求页式管理
是一种动态页式内存管理,它在作业或者进程开始执行之前,不把作业或进程的程序段或数据段一次性全部装入内存,而是只装入被认为是经常反复执行和调用的工作区部分。其他部分则在执行过程中动态装入。请求页式管理的调入方式是,当需要执行某条指令而又不发现它不在内存中,或者当执行某条指令需要访问其他数据或指令,而这些指令或数据又不在内存中,从而发生缺页中断时,系统将外存中相应的页面调入内存。
Belady现象
Belady现象是指在使用FIFO算法进行内存页面置换时,在未给进程或作业分配足够它所要求的全部页面的情况下,有时出现的分配的页面数增多,缺页次数反而增加的奇怪现象。
段式管理
是将程序按照内容或过程(函数)关系分成段,每段拥有自己的名字。一个用户作业或进程所包含的段对应于一个二维线性虚拟空间,也就是一个二维虚拟存储器。段式管理程序以段为单位分配内存,然后通过地址映射机构把段式虚拟地址转换成实际的内存物理地址。同页式管理时一样,段式管理也采用只把那些经常访问的段驻留内存,而把那些在将来一段时间内不被访问的段放入外存,待需要时自动调入相关段的方法实现二维虚拟存储器。
局部性原理
是指在几乎所有程序的执行过程中,在一段时间内,CPU总是集中地访问程序中的某一个部分而不是对程序的所有部分具有平均的访问概率。
抖动
是指当给进程分配的内存小于所要求的工作区时,由于内存和外存之间交换频繁,访问外存的时间和输入输出处理时间大大增加,造成CPU因等待数据而空转,使得整个系统性能大大下降。
覆盖与交换的区别
与覆盖技术相比,交换不要求程序员给出程序段之间的覆盖结构,而且,交换主要在进程或作业之间进行,而覆盖则主要在同一个作业或同一个进程内进行。另外,只能对那些与覆盖程序段无关的程序段进行覆盖。
段式管理与页式管理的区别
- 页式管理中源程序进行编译链接时是将主程序、子程序、数据区等按照线性空间的一维地址顺序排列起来。段式管理则是将程序按照内容或过程(函数)关系分成段,每段拥有自己的名字。一个用户作业或进程所包含的段对应于一个二维线性虚拟空间,也就是一个二维虚拟存储器。
- 同动态页式管理一样,段式管理也提供了内外存统一管理的虚存实现。与页式管理不同的是:段式虚存每次交换的是一段有意义的信息,而不是像页式虚存管理那样只交换固定大小的也,从而需要多次缺页中断才能把所需的信息完整地调入内存。
- 在段式管理中,段长可根据动态增长。这对那些不需要不断增加或改变新数据或子程序的段来说,将是非常有好处的。
- 段式管理便于对具有完整逻辑功能的信息段进行共享。
- 段式管理便于进行动态链接,而页式管理进行动态链接的过程非常复杂。
存储管理的功能
- 在硬件的支持下,完成统一管理内存和外存之间 数据和程序段 自动交换的虚拟存储器功能。
- 将多个虚存的一维线性空间或多维线性空间变换到内存的唯一的一维物理线性地址空间。
- 控制内外存之间的数据传输。
- 实现内存的分配和回收。
- 实现内存信息的共享和保护
虚拟存储器的特点(离散性、虚拟性、多次性、交换性)
- 虚拟存储器不考虑物理存储器的大小和信息存放的实际位置,只规定每个进程中相互关联的信息相对位置。
- 每个进程都拥有自己的虚拟存储器,虚拟存储器的容量由计算机的地址结构和寻址方式来确定。
- 实现虚拟存储器要求有相应的地址转换机构,以便把指令的虚拟地址变换为实际物理地址;
- 另外,由于内存空间较小,进程只有部分内容存放于内存中,待执行时根据需要再调指令入内存。
地址重定位
把虚拟空间中已链接和划分好的内容装入内存,并将虚拟地址映射为内存地址。
实现地址重定位的方法(静态、动态)
(1)静态地址重定位:是在虚拟空间程序执行之前由装配程序完成地址映射工作。
优点:不需要硬件支持
缺点: 无法实现虚拟存储器
必须占用连续的内存空间和难以做到程序和数据的共享
(2)动态地址重定位:是在程序执行过程中,在CPU访问内存之前,由硬件地址变换机构将要访问的程序和数据地址转换成内存地址。
优点: 可以对内存进行非连续分配
动态重定位提供了实现虚拟存储器的基础
动态重定位有利于程序段的共享。
内存信息保护方法
- 上下界保护法是一种常用的硬件保护法。上下界存储保护技术要求为每个进程设置一对上下界寄存器。上下界寄存器中装有被保护程序和数据段的起始地址和终止地址。在程序执行过程中,在对内存进行访问操作过程时首先进行的访问地址合法性检查,即检查经过重定位之后的内存地址使得在上下界寄存器所规定的范围之内。若在规定的范围之内,则访问时合法的;否则是非法的,并产生访问越界中断。
- 保护键法也是一种常用的软件存储保护法。保护键法为每一个被保护存储块分配一个单独的保护键。在程序状态字中则设置相应的保护键开关字段,对不同的进程赋予不同的开关代码以和被保护的存储块中的保护键匹配。保护键可以设置成对读写同时保护的或只对读写进行单项保护的。如果开关字段与保护键匹配或存储块未受到保护,则访问该存储块是允许的,否则将产生访问出错中断。
- 另外一种常用的硬软件内存保护方式是界限存储器与CPU的用户态、核心态相结合的保护方式。在这种保护方式下,用户态进程只能访问那些在界限寄存器所规定范围内的内存部分,而核心态进程则可以访问整个内存地址空间。
动态分区的内存分配方法
最先适应法、最佳适应法、最坏适应法
从搜索速度上看,最先适应法最佳,最佳适应法和最坏适应法都要求把空闲区按大小进行排队。
从回收过程来看,最先适应法也最佳,因为最佳适应法和最坏适应法都必须重新调整空闲区的位置。
最佳适应法找到空闲区是最佳的,但是会造成内存碎片较多,影响了内存利用率;而最坏适应法的内存碎片最少,但是对内存的请求较多的进程有可能会分配失败。
3种算法各有所长,针对不同的请求队列,它们的效率和功能是不一样的
请求式页面常用的页面置换算法
- 随机淘汰算法:即随机地选择某个用户页面并将其换出。
- 轮转法(RR):轮转法循环换出内存可用区内一个可以被换出的页,无论该页是刚被换进或已经换进内存很长时间。
- 先进先出(FIFO):FIFO算法选择在内存驻留时间最长的是一页将其淘汰。
- 最近最久未使用页面置换算法(LRU):当需要淘汰某一页时,选择离当前时间最近的一段时间内最久没有被使用过的页面先淘汰。
- 理想型淘汰算法(OPT):该算法淘汰在访问串中将来再也不出现的或是在离当前最远的位置上出现的页面。
RR和FIFO都是基于CPU按线性顺序访问地址空间这一假设,但是实际上CPU在很多时候并非是按线性顺序访问地址空间的,因而其内存利用率不高。此外FIFO算法还存在着Belady现象。LRU算法实现是相当困难的,因此在实际系统中往往要采取LRU的近似算法,常用的近似算法有最不经常使用页面淘汰算法(LFU)和最近没有使用页面淘汰算法(NUR)。OPT算法是由于必须预先知道每一个进程的指令访问串,所以它是无法实现的。
为什么要提出段页式管理
因为段式管理和页式管理各有所长。
段式管理为用户提供了一个二维虚拟地址空间,反映了程序的逻辑结构,有利于段的动态增长以及共享和内存保护等,这极大地方便了用户。
而页式系统则有效地克服了碎片,提高了存储器的利用效率。
从存储管理的目的来讲,主要是方便用户的程序设计和提高内存的利用率。所以人们提出了将段式管理和页式管理结合起来让其相互取长补短的段页式管理。
为什么说段页式管理的虚拟内存是二维的
因为在段式内存管理中,对每一段内的地址空间进行分页式管理只是为了克服在内存分配过程中产生的大量碎片,从而提高存储器的利用率,它并没有改变段内地址空间的一维结构,所以段页式内存管理中的虚拟地址仍然和段式内存管理中的虚拟地址一样,是二维结构的。
段页式管理的缺点及其改进方法
段页式管理的主要缺点式对内存中指令或数据进行存取时,至少需要对内存进行三次以上的访问。
第一次是由段表地址寄存器取段表始址后访问段表,由此取出对应段的页表在内存中的地址。
第二次则是访问页表得到所要访问的指令或数据的物理地址。只有在访问了段表和页表之后。
第三次才能真正需要访问的物理单元。显然,这将大大降低CPU执行指令的速度。
改进办法:设置快速联想寄存器。在快速联想寄存器中,存放当前最常用的段号s、页号p和对应的内存页面地址与其他控制项。当需要访问内存空间某一单元时,可通过段表、页表进行内存地址查找的同时,根据快速联想寄存器查找其段号和页号。如果所要访问的段或页的地址在快速联想寄存器中,则系统不再访问内存中的段表、页表,而直接把快速联想寄存器中的值与页内相对地址d拼接起来得到内存地址。
如何减少系统抖动现象
- 在进行淘汰或置换时,一般总是把缺页进程锁住,不让其换出,从而防止抖动发生。
- 设置较大的内存工作区。
文件
计算机系统中,文件被解释为一组赋名的相关联字符流的集合,或者是相关联记录( 一个有意义的信息单位 )的集合。
文件系统
操作系统中与管理文件有关的软件和数据称为文件系统。
文件的逻辑结构
就是用户可见的结构,可分为字符流式的无结构文件和记录式的有结构文件两大类。
文件系统的物理结构
文件的物理结构是指文件在存储设备上的存放方法。常用的文件物理结构有连续文件、串联文件和索引文件3种。
记录
是一个具有特定意义的信息单位,它由该记录在文件中的逻辑地址(相对位置)与记录名所对应的一组关键字、属性及其属性值所组成。
文件目录(文件名、内部标识、物理地址)
文件目录中包含文件名、与文件名相对应的文件内部标识以及文件信息在文件存储设备上第一个物理块的地址等信息。另外还可能包含关于文件逻辑结构、物理结构、存取控制和管理等信息。
文件系统的功能
文件系统的功能是为用户建立文件,撤销、读写、修改和复制文件,以及完成对文件的按名存取和进行存取控制。
文件系统的分类
文件系统一般按性质、用途、组织形式、文件中的信息流向或文件保护级别等分类,按文件的性质和用途可以分为系统文件、库文件、和用户文件。按组织形式可以普通文件、目录文件和特殊文件。按文件中的信息流向可以分为输入文件、输出文件和输入输出文件、目录文件和特殊文件。按文件中的保护级别可以分为只读文件、读写文件、可执行文件和不保护文件。
文件存储管理方法
文件存储设备的管理实质上是一个空闲块的组织和管理问题。有3种不同的空闲块管理方法。即空闲文件目录、空闲块链和位示图。
- 空闲文件目录管理方法就是把文件存储设备中的空闲块的块号统一放在一个称为空闲文件目录的物理块中,其中文件目录的每个表项对应一个由多个空闲块构成的空闲区。该方法实现简单,适于连续文件结构的文件存储区的分配与回收。但是由于回收时不进行合并,所以使用该方法容易产生大量的小块空闲区。
- 空闲块链法把文件存储设备上的所有空闲块链接在一起,从链头分配空闲块,把回收的空闲块插入到链尾。该方法不占用额外的空间,但实现复杂。
- 位示图法是从内存中划出若干字节,每一位对应一个物理块的使用情况。如果该位为0则表示对应的是空闲块,为1则表示对应的物理块已分配出去。位示图法在查找空闲块时无须启动外设,但要占用内存空间。
成组链法
成组链法首先把文件存储设备中的所有空闲块按50块一组进行分组。组的划分是从后往前进行的。其中,每组的第一块用来存放前一组中各块的块号和总块数。第一组为49块。最后一组的物理块号与总块数只能放在管理文件存储设备用的文件资源表中。
分配和释放过程如下:
首先,系统在初始化时把对文件资源表复制到内存,从而把文件资源表中放有最后一组空闲块块号与总块数的堆栈载入内存,并使得空闲块的分配与释放可以在内存中进行。用于空闲块分配与回收的堆栈有栈指针Ptr,且Ptr的初值等于该组空闲块的总块数。当申请者申请n块空闲块时,按照后进先出的原则,分配程序在取走Ptr所指的块号之后,再做Ptr=Ptr-1的操作。这个过程一直持续到所要求的n块空间都分配完毕或堆栈中只剩下最后一个空闲块的块号时。当堆栈中只剩下最后一个空闲块号时,系统启动设备管理程序,将该块中存放的下一组的块号与总块数读入内存之后再把该块分配给申请者。然后,系统重新设置Ptr指针,并继续为申请者分配空间。
文件存储设备的最后一个空闲块中设置有尾标识,以指示空闲块分配完毕。
如果用户进程不再使用有关文件并删除这些文件时,回收程序回收这些文件占用的物理块。成组链法的回收过程仍然利用文件管理堆栈进行。在回收时,回收程序先做Ptr=Ptr+1操作,然后把回收的物理块号放入当前Ptr指针所指的位置。如果Ptr等于50,则表示该组已经全部回收。此时,如果还有物理块需要回收的话,那么回收该块并启动I/O设备管理程序,把回收的50个块号与块数写入新回收的块中。然后将Ptr置1另起一个新组。
对空闲块的分配和释放必须互斥进行。
有三种方法可以实现文件共享
(1)绕道法
(2)链接法
(3)基本文件目录表BFD
文件的存取控制方式
文件存取控制方式一般有存取控制矩阵、存取控制表、口令、密码4种方式。
存取控制矩阵方式以一个二维矩阵来进行存取控制。矩阵的一维是所有的用户,另一维是所有的文件。对应的矩阵元素则是用户对文件的存取控制权。存取控制矩阵的方法在概念上比较简单,但是当用户和文件较多时,存取控制矩阵将变得非常庞大,从而时间和空间的开销都很大。
存取控制表方式以文件为单位,把用户按某种关系划分为若干组,同时规定每组的存取限制。这样所有用户组对文件权限的集合就形成了该文件的存取控制表。存取控制表方式占用空间较小,搜素效率也较高,但要对于用户分组,引入了额外的开销。
口令方式有两种。一种是当用户进入系统,为建立终端进程时获得系统使用权的口令。另一种口令方式是,每个用户在创建文件时,为每一个创建的文件设置一个口令,且将其置于文件说明中。当任一用户想使用该文件时,都必须首先提供口令,口令方式比较简单,占用的内存单元以及验证口令所费时间都非常少。不过,相对来说,口令方式保密性能较差。
密码方式在用户创建源文件并写入存储设备时对文件进行编码加密,在读出文件时对其进行译码解密。加密方式具有保密性强的优点。但是,由于加密和解密工作要耗费大量的处理时间,因此,加密技术是以牺牲系统开销为代价的。
文件层次
- 第一层用户接口层把系统调用转化为内部调用格式。
- 第二层符号文件层把第一层提供的用户文件名转化为系统内部的唯一标识符fd。
- 第三层基本文件系统层根据参数fd找到文件的说明信息。
- 第四层存取控制验证层根据存取控制信息和用户访问要求,验证文件访问的合法性。
- 第五层逻辑文件系统层根据文件逻辑结构找到第5个记录对应的逻辑地址2000,并将其转换为相对块号2.
- 第六层物理文件系统层根据文件的物理结构把相对块号2转换成物理地址,如1000000。
- 第七层文件存储设备分配模块和设备策略模块把物理块号转换成具体磁盘的柱面号、磁道号和扇区号,然后准备启动输入设备命令。
- 第八层启动输入输出层由设备处理程序执行读操作,把第5个记录读到内存地址15000处。
通道
是一个独立于CPU的专管输入输出控制的机构,它控制设备于内存直接进行数据交换。它有自己的通道指令,这些指令受CPU启动,并在操作结束时向CPU发中断信号。
中断
是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行的过程。
中断处理
CPU转去执行相应的事件处理程序的过程。
中断响应
CPU收到中断请求后转到相应的事件处理程序。
关中断
把CPU内部的处理机状态字(PSW)的中断允许位清除从而不允许CPU响应中断。
开中断
设置CPU内部的处理机状态字(PSW)的中断允许位从而允许CPU响应中断。
中断屏蔽
中断请求产生之后,系统用软件方式有选择地封锁部分中断而允许其余部分的中断仍能得到响应。
陷阱
陷阱是指处理机和内存内部产生的中断,它包括程序运算引起的各种错误,如地址非法、校验错和页面失效。存取访问控制错、从内存态到核心态的切换等都是陷阱的例子。
软中断
通信进程之间模拟硬中断的一种信号通信方式。
缓冲
使用专用硬件缓冲器或在内存中划出一个区域来暂时存放输入输出数据的器件。
为什么要引入缓冲
引入缓冲是为了匹配外设和CPU之间的处理速度,减少中断次数和CPU的中断处理时间,同时解决DMA或通道方式时的数据传输瓶颈问题。
根据I/O控制方式,缓冲的实现方法有两种
一种是采用专用硬件缓冲器,例如I/O控制器中的数据缓冲寄存器。
另一种方法是在内存划出一个具有n个单元的专用缓冲区,称为内存缓冲区又称软件缓冲。I/O控制
指用户进程的输入输出请求开始,给用户进程分配设备和启动有关设备进行I/O操作,并在I/O操作完成之后响应中断,直至善后处理为止。
设备驱动程序
设备驱动程序是驱动物理设备和DMA控制器或I/O控制器等直接进行I/O操作的子程序的集合。负责设置相应设备有关寄存器的值,启动设备进行I/O操作,指定操作的类型和数据流向等。
设备分配用数据结构
系统设备表SDT
设备控制表DCT
控制器表COCT
通道控制表CHCT
中断、陷阱和软中断之间异同
外中断指来自处理机和内存外部产生的中断,在狭义上一般被称为中断。内中断主要指在处理机和内存内部参数的中断,一般被称为陷阱。外中断和内中断统称为硬中断,因为这些中断要通过硬件产生相应的中断请求。软中断则不然,它是通信进程之间用来模拟硬中断的一种信号通信方式。
中断和陷阱的主要区别
- 陷阱通常由处理机正在执行的现行指令引起,中断是由与现行指令无关的中断源引起的。
- 陷阱处理程序提供的服务为当前进程所用,中断处理程序提供的服务不是为了当前进程的。
- CPU在执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷阱。
- 在有的系统中,陷阱处理程序被规定在各自的进程上下文中执行,而中断处理程序在系统上下文中执行。
设备管理的目标和功能
目标:
- 选择和分配输入输出设备以便进行数据传输操作;
- 控制输入输出设备和CPU之间交换数据;
- 为用户提供一个友好的透明接口;
- 提高设备和设备之间、CPU和设备之间以及进程之间的并行操作,以使操作系统获得最佳效率。
功能:
- 提供和进程管理系统的接口;
- 进行设备分配;
- 实现设备和设备、设备和CPU等之间的并行操作;
- 进行缓冲区管理。
数据传送控制方式及其优缺点
数据传送方式有程序直接控制方式、中断控制方式、DMA方式和通道方式4种。
数据传送控制方式就是由用户进程直接控制内存或CPU和外围设备之间的数据传送。
优点:控制简单,也不需要多少硬件支持。
缺点:1.CPU和外围设备只能串行工作
2.设备之间只能串行工作
3.无法发现和处理由于设备或其他硬件所产生的错误
中断控制方式是利用向CPU发送中断的方式控制外围设备和CPU之间的数据传送。
优点:中断控制方式下CPU利用率大大提高且能支持多道程序和设备并行操作
缺点:1.数据缓冲寄存通常较小,如果中断次数较多,占用大量的CPU处理时间。
2.在外围设备较多时,由于中断次数的急剧增加,可能造成CPU无法响应中断和出现数据丢失现象。
3.如果外围设备速度也非常高,可能造成数据缓冲寄存器的数据由于CPU来不及取走而丢失。
DMA方式是在外围设备和内存之间开辟直接的数据交换通路进行数据传送。
优点:除了在数据块传送开始时需要CPU的启动指令和在整个数据块传送结束时需发中断通知CPU进行中断处理,不需要CPU的频繁干涉。
缺点:在外围设备越来越多的情况下,多个DMA控制器可能会引起内存地址的冲突并使得控制过程进一步复杂化。
通道方式是使用通道来控制内存或CPU和外围设备之间的数据传送。通道是一个独立于CPU的专管输入输出控制的处理机,它控制设备与内存直接进行数据交换。它有自己的通道指令,这些通道指令受CPU启动,并在操作结束时向CPU发中断信号。
优点:进一步减轻CPU的工作负担、增加计算机系统的并行工作程度。
缺点:增加了额外的硬件,造价昂贵。
DMA方式与中断控制方式的主要区别
- 中断控制方式在数据缓冲寄存器满之后发中断,要求CPU进行中断处理。DMA方式在要求传送的数据块全部传送结束时,要求CPU进行中断处理。DMA方式大大减少了CPU进行中断处理的次数。
- 中断控制方式的数据传送由CPU控制完成。DMA方式的数据传送由DMA控制器控制完成。
- DMA方式排除了因并行操作设备过多时CPU来不及处理或因速度不匹配而造成数据丢失等现象。
中断控制方式时的CPU动作过程
- 首先,CPU检查响应中断的条件是否满足。如果中断响应条件不满足,则中断处理无法进行。
- 如果CPU响应中断,则CPU关中断。
- 保存被中断进程现场。
- 分析中断原因,调用中断处理子程序。
- 执行中断处理子程序。
- 退出中断,恢复被中断进程的现场或调度新进程占据处理机。
- 开中断,CPU继续执行。
缓冲队列的em、in和out采用做最少使用算法对改善I/O操作性能有什么好处
采用最近最少使用算法可以保留那些在最近一段时间内使用次数较多的缓冲区,而这些缓冲区继续被使用的可能性比较大,从而可以减少缓冲区分配和回收的次数,避免了频繁的分配和回收操作,所以可以改善I/O操作性能。
I/O控制的实现方法
I/O控制过程在系统中可以按三种方式实现:
(1)作为请求I/O操作的进程的一部分实现。
请求对应的I/O操作的进程能很快占据处理机,但要求系统和I/O操作系统的进程应具有良好的实时性。
(2)作为当前进程的一部分实现。
不要求系统具有很高的实时性,但I/O控制过程要求当前进程负责。
(3)由专门的系统进程——I/O进程完成。
增加了额外的进程开销,但用户不用关心I/O控制过程。
为什么要有设备驱动程序
设备驱动程序屏蔽了直接对硬件操作的细节,为编程者提供操作设备的友好接口。
用户进程怎样使用设备驱动程序
用户进程通过调用设备驱动程序提供的接口来使用设备驱动程序。
你必须知道的关于操作系统的N个概念!的更多相关文章
- 深入理解Sqlserver文件存储之页和应用 (转)
我们每天都在使用数据库,我们部门使用最多的关系数据库有Sqlserver,Oracle,有没有想过这些数据库是怎么存放到操作系统的文件中的?有时候为了能够设计出最优的表结构,写出高性能的Sqlserv ...
- 操作系统介绍-操作系统历史,IO,进程的三态,同步异步阻塞非阻塞
1.操作系统历史 2.进程,IO,同步异步阻塞非阻塞 操作系统历史: 手工操作: 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 手工操 ...
- OS位数,基本概念,结合iOS
CPU位数,一般指CPU支持的指令集位数,32位CPU对应32位的指令集,64位的CPU对应64位的指令集,不过为了向下兼容,64位CPU也支持32位的指令集. 操作系统位数,一般指操作系统对应的指令 ...
- 基于udp协议的套接字,socketserver模块,多道技术,进程理论
进程指的是一个正在进行/运行的程序,进程是用来描述程序执行过程的虚拟概念 进程vs程序 程序:一堆的代码 进程:程序执行的过程 进程的概念起源于操作系统,进程是操作系统最核心的概念,操作系统的其他所有 ...
- Python基础:内置函数
本文基于Python 3.6.5的标准库文档编写,罗列了英文文档中介绍的所有内建函数,并对其用法进行了简要介绍. 下图来自Python官网:展示了所有的内置函数,共计68个(14*4+12),大家可以 ...
- linux内核之进程的基本概念(进程,进程组,会话关系)
进程是操作系统的一个核心概念.每个进程都有自己唯一的标识:进程ID,也有自己的生命周期.一个典型的进程的生命周期如图4-1所示. 进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家 ...
- IT修养-基础篇
1.科学基础 成为开发人员的过程不尽相同,有的是科班出身,有的是兴趣爱好,还有的是专业机构的培训,在这个过程中,可能全面或者零散甚至没有学习过计算机基础学科,但无论是哪一种,想要成为更高层次的开发人员 ...
- 后端程序员必备的 Linux 基础知识+常见命令(近万字总结)
大家好!我是 Guide 哥,Java 后端开发.一个会一点前端,喜欢烹饪的自由少年. 今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令. 如果文章有任何需要 ...
- 【转】对初学LoadRunner朋友的建议
对初学LoadRunner朋友的建议 作者:wind摘要:随着Internet的普及与迅速发展,企业业务量的迅速加大,数据大集中成为一种趋势,IT系统承载的负荷越来越重,系统性能的好坏严重的影响了企业 ...
随机推荐
- Windows server 安装远程桌面及破解120天时间限制授权
一.问题描述 Windows Server系列服务器默认远程桌面连接数是2个用户(本文适用于所有Windows Server系列服务器),如果多余两个用户进行远程桌面连接时,系统就会提示超过连接数,可 ...
- 解决phpmyadmin上传文件大小限制的配置方法
解决phpmyadmin上传文件大小限制的配置方法 phpmyadmin导入SQL文件时涉及到phpmyadmin上传文件大小限制问题,默认phpmyadmin上传文件大小为2M,如果想要phpmya ...
- 神经网络中的降维和升维方法 (tensorflow & pytorch)
大名鼎鼎的UNet和我们经常看到的编解码器模型,他们的模型都是先将数据下采样,也称为特征提取,然后再将下采样后的特征恢复回原来的维度.这个特征提取的过程我们称为"下采样",这个恢复 ...
- 项目实战--JSON.toJSONString()
需求说明:公司使用Swagger(接口文档在线生成工具),为了让前端同事更好的了解传入参数的详细情况,应用项目中接口(eg:分页查询接口)中使用dto对象来接受前端传入的参数,但是后面中心项目中接口是 ...
- 用python+sklearn(机器学习)实现天气预报 准备
用python+sklearn机器学习实现天气预报 准备 项目地址 系列教程 0.流程介绍 1. 环境搭建 a.python b.涉及到的机器学习相关库 sklearn panda seaborn j ...
- linux find命令用法大全
本文档格式如下,命令说明在命令的上一行,尝试使用 Ctrl+f 组合键快速在页面内搜索. 命令说明 命令 参数起始目录:查找文件的起始目录.实例# 当前目录搜索所有文件,文件内容 包含 &qu ...
- Python绘制雷达图(俗称六芒星)
原文链接:https://blog.csdn.net/Just_youHG/article/details/83904618 背景 <Python数据分析与挖掘实战> 案例2–航空公司客户 ...
- JavaScript入门-对象
js对象 本篇主要介绍js里如何创建对象,以及for循环访问对象的成员... 什么是对象? 对象,并不是中文里有男女朋友意思,它是从英文里翻译来的,英文叫[Object],目标,物体,物品的意思. 在 ...
- 【Linux】如何查看命令来源于哪个包
Debian:(Ubuntu等) 先安装apt-file sudo apt-get install -y apt-file apt-file update 查询命令:(已查询ifconfig为例) r ...
- ctfshow—web—web4
打开靶机 发现与web3很相似,测试文件包含未成功 此题有两种解决方法 一.日志注入 查看日志的默认目录,得到了日志文件 ?url=/var/log/nginx/access.log 进行日志注入 & ...