zoukankan      html  css  js  c++  java
  • 计算机基础_操作系统

    ## 操作系统定义

    # 操作系统位于计算机的硬件和应用软件之间,本质上也是计算机系统中的一个系统软件;操作系统用于管理和控制计算机系统的硬件和软件资源,能合理且高效的控制计算机的工作,并给用户提供一个良好的工作环境和接口。

    # 操作系统通过资源管理,提高计算机系统的效率

    # 操作系统改善人机界面,向用户提供友好的工作环境

    # 操作系统具有:并发性,共享性,虚拟性,不确定性

    ## 操作系统功能

    # 处理机管理:又称为进程管理,利用多道进程等技术对CPU的时间进行分配,对CPU进行有效的管理

    # 文件管理:包括文件存储空间管理,目录管理,文件的读取管理,存取控制,软件管理

    # 存储管理:对存储器进行分配,保护,扩充

    # 设备管理:方便设备的使用,提高CPU和I/O设备的利用率

    # 作业管理:包括任务管理,界面管理,人机交互

    ## 操作系统类型

    # 批处理操作系统

    单道批处理操作系统:一次只有一个作业装入内存执行

    多道批处理操作系统:允许多个作业装入内存执行,在任意的时刻,作业都处于开始点和终止点之间

    # 分时操作系统

    将CPU的工作时间划分位多个很短的时间片,轮流为各个终端用户服务,如UNIX

    # 实时控制系统

    实时控制系统:生产过程的自动控制,实验数据的自动采集,武器的控制

    实时信息处理系统:用于实时的 信息处理,如飞机订票系统

    # 网络操作系统

    使计算机方便的共享网络资源,电子邮件,文件传输,共享硬盘,打印机

    # 分布式操作系统

    网络操作系统的更高级形式,具有网络系统的全部功能,又具有 透明性,可靠性,高性能,网络操作系统的用户必须知道网址,而分布式操作系统的用户则不必知道计算机的确切网址

    # 微机操作系统

    微型计算机上的操作系统,例如DOS,Window,OS/2,SCO,UNIX,Linux

    # 嵌入式操作系统

    运行在嵌入式智能芯片环境中

    ## 处理机管理(进程管理)

    # 进程的定义

    进程是程序一次执行,是资源分配和调度的基本单位。进程通常由 程序,数据,进程控制块(PCB)组成。

    程序部分:描述进程需要完成的功能

    数据部分:包括程序执行时所需的数据及工作区

    进程控制块:是进程的唯一标识,PCB中记录了系统所需的,是进程动态特性的集中反应,PCB中含有进程标识符,状态,位置信息,控制信息,队列指针,优先级,现场保护区等信息。

    # 进程状态

    运行状态:进程获得处理机,正在运行

    就绪状态:进程所需要的资源都已经到位,只需要等待处理机调度

    阻塞状态:进程等待某些事件的发生才能继续执行,所以不再占用处理机而转为阻塞状态

    # 进程控制:

    进程的控制:就是对系统中所有进程从创建到消亡的全过程实施有效的控制。

    实现:进程控制是由操作系统内核中的原语进行实现的,其功能为:创建一个新的进程,撤销一个已经运行完的进程,改变进程的状态,实现进程间的通信

    内核:包含了支撑功能(中断处理、时钟管理和原语操作)以及资源管理功能(进程、存储器和设备的管理)

    原语:由若干条指令组成,用于完成一定功能的一个过程。原语的特点是在执行的过程中不可分割,即原子操作要么都做,要么都不做

    # 进程同步与互斥

    同步:指为完成某种任务而建立的两个和多个进程,这些进程在合作的过程中需要协调工作次序进行有序的访问而出现等待所产生的制约关系

    互斥:指两个或多个进程访问临界资源时只能一个进程访问,其他进程等待的一种相互制约的关系

    临界区管理原则:临界区指的是进程中对临界资源进行操作的程序。互斥临界区的原则是:有空则进,无空则等;有限等待,让权等待

    # 进程通信

     因为进程之间存在着同步和互斥的关系,所以进程之间必然存在着信息的交换,信号量机制其实是一种低级的通信,因为信号量每次只能告诉另一个进程一个信息

    # 信号量与P,V操作

    # 信号量机制是一种很有成效的进程同步工具,分为整形信号量,记录型信号量,信号量集机制,其中最为常用的为记录型信号量,记录型信号量只是在整形信号量的基础上增加了阻塞和唤醒操作,符合“让权等待”原则

    # 信号量S的物理意义:当S>=0时表示某资源的可用数;当S<0时,其绝对值表示阻塞队列中等待该资源的进程数

    信号量S是一个表示资源数的东西,只有在wait(S)和signal(S)这两个原子操作时才能修改,保护了信号量在其它地方不被随意修改

    P操作:对信号量S = S-1,判断信号量的状态,若S>=0则执行P操作的进程继续执行,若S<0则让该进程阻塞

    V操作:对信号量S = S+1,判断信号量状态,若S>0则执行V操作的程序继续执行,若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列

    # 高级通信原语

    P V操作用来协调进程间的关系,但编程较为困难,效率低,通信对用户不透明,生产者每次只能向缓冲区发送一个消息,消费者每次也只能从缓冲区中取得一个消息。所以引入高级原语

    1)共享存储系统:相互通信的进程共享某些数据结构或者存储区,以实现进程之间的通信

    2)消息传递系统:进程间交换数据以消息为单位,将通信的数据封装在消息中。利用系统提供的通信命令(原语)在进程间进行消息的传递

    3)管道通信:用于连接两个进程之间的一个打开的共享文件。向管道提供输入的发送进程以字节流的形式将大量的数据送入管道

    # 前趋图

    # 管程

     引入管程的原因:信号量机制存在着缺点,每个进程访问临界资源时,进程都得自备同步操作,大量的P V操作分布在各个进程中,不容易进行管理,而且易发生死锁

    当引入管程时,管程内部封装了同步操作,对进程隐藏了同步的细节,将分散在各个进程中的临界区集中起来管理,有了了管程后,进程对共享资源的访问,就不必自带P V 操作

    # 管程特点

    共享性:管程可被系统范围内的进程互斥访问,属于共享资源
    安全性:管程的局部变量只能由管程的过程访问,不允许进程或其它管程直接访问,管程也不能访问非局部于它的变量
    互斥性:多个进程对管程的访问是互斥的。任一时刻,管程中只能有一个活跃进程
    封装性:管程内的数据结构是私有的,只能在管程内使用,管程内的过程也只能使用管程内的数据结构。进程通过调用管程的过程使用临界资源

    # 进程调度

    进程调度需要完成的任务:当有更高优先级的进程到来时,如何分配CPU的使用?


    # 进程调度方式

    1):可剥夺式:有更高优先级的进程来,强行将正在运行的进程所占用的CPU分配给更高级的进程

    2):不可剥夺式:有更高优先级的进程进来时,必须等待正在运行的进程运行完毕并自动释放CPU

    # 进程调度算法

    1)先来先服务:

    按照作业提交或进程变为就绪状态的先后次序分配CPU

    特点:比较有利于长作业,而不利于短作业。因为长作业会长时间占据处理机;有利于CPU繁忙的作业,而不利于I/O繁忙的作业。

    2)时间片轮转:

    按照先来先服务的原则,系统将就绪的进程按照到达的时间先后排成一个队列,进程调度时总是选择就绪队列中的第一个执行,但每个进程只能运行一定的时间片,当时间片使用完后,即使该进程未完成运行,也得将该进程释放,让该进程拍到就绪队列的末尾

    # 固定时间片:该每个进程分配的时间片相同,让每个进程都具有相同的执行时间,是一种简单而又公平的方法

    # 可变时间片算法:根据进程的不同,所需要执行的时间也不同的特点,可以修改每次每个进程执行的时间片大小,可以提高效率

    3)优先级调度:

    让每个进程都具有一个优先数,数值高的表示优先级高,优先级调度算法是每次从准备就绪的队列中选择优先级高的作业来分配CPU,让其执行

    # 静态优先级:进程的优先级在创建时就已经确定好了,直到进程的终止都不会改变,

    # 动态优先级:进程的优先级在创建时给定一个优先级,在进程的运行过程中可以对其优先级进行修改

    4)多级反馈调度:

    多级反馈调度综合了 时间片轮转法 和 优先级算法 ,通过动态调整进程的优先级和时间片的大小,多级反馈调度可以兼顾系统的很多方面:照顾短进程以提高系统吞吐量,缩短了平均周转时间;照顾I/O进程以获得较好的I/O设备利用率;不必不急进程的执行时间,动态调节优先级

    # 死锁

    死锁是指两个或两个以上的进程互相都要求对方已经占有的资源导致无法继续执行下去的现象

    在计算机中存在着许多的互斥的资源,例如打印机,如果有两个进程同时的去使用打印机,必然会出现问题

    # 产生死锁的四个必要的条件

    互斥条件:一个资源,一次只能允许一个进程的使用

    请求保持条件:以获得请求资源后,又请求资源被堵塞

    不可剥夺条件:进程已经获得的资源,在未使用完之前不能被剥夺

    环路条件:发生死锁时,在进程的资源图中必定构成环路

    # 死锁的处理策略

    死锁预防:破坏资源的“不可剥夺条件”,预先分配系统所需的资源,保证不等待资源

    死锁避免:银行家算法,如果发现分配资源后系统将进入不安全的状态,则不给予分配资源;若分配资源后系统处于安全的状态,则给予分配资源。提高了资源的利用率,但是为了检测系统是否安全增加了系统的开销

    死锁检测:系统允许死锁的产生,但是系统会定时的运行死锁检测程序,判断系统是否产生死锁

    死锁解除:资源剥夺法,从一些进程中剥夺足够数量的资源分配给死锁进程;撤销进程法,根据某种策略逐个的撤销死锁的进程,直到死锁解除为止

    # 线程

    线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪,阻塞,运行三种状态。

    ## 存储管理

    存储管理的对象是主存储器,简称主存或内存,存储器是计算机中关键的资源,用于存放各种各样的信息

    存储管理要完成的功能是如何对存储器实施有效的管理,影响到了存储器的利用率也影响到了系统的性能

    存储管理的功能:主存空间分配和回收,提高主存的利用率,扩充主存,对主存信息实现有效的保护

    # 存储器的结构

    常用的存储器的结构包括“寄存器-主存-外存”和“寄存器-缓存-主存-外存”

    # 地址重定位

     地址重定位:将逻辑地址转换为主存物理地址的过程

    # 静态地址重定位:在用户程序被装入主存时已经实现了逻辑地址到物理地址的变换,在程序的执行期间不在变换

    1)优:无须硬件地址变换机构的支持

    2)缺:必须给作业分配一个连续的存储区域,在作业执行期间不能扩大存储空间;不能再主存中移动;不能共享同一程序的副本和数据

    # 动态地址重定位:在程序的运行期间完成逻辑地址到物理地址的变换

    1)优:程序再执行的期间可以换入和换出主存,可以解决主存空间不足的问题;可以再主存中移动,将主存中的碎片集中起来,可以充分利用空间;可以实现共享

    # 存储管理方案是为了解决多个用户使用主存的问题

    # 分区存储管理

    基本思想就是将主存的用户区划分成若干区域,将灭个区域分配给一个用户作业使用,并且用户仅能再自己的区域中运行。

    按照划分方式的不同可区分为:固定分区,可变分区,重定位分区 

    1)固定分区:在系统生成时已将主存划分位若干个区域,这些区域可以大小不同。该方法的缺点是程序作业的大小不可能刚刚好与分区的大小一样,所分配的区域中存在未用的空间,造成空间的浪费

    2)可变分区:存储空间的划分是在作业装入时进行的,所以分区的大小刚刚好与作业的大小相等

    3)可重定位分区:可重定位分区是解决碎片问题简单而又有效的方法,基本的思想是移动所有已经分配好的分区,使之称为连续的区域;因为移动是要造成系统的一定负担,故会在用户请求空间得不到满足时才会进行重定位分区;因为重定位后地址都发生了变化,故会产生重定位分区

    # 分页存储管理

     系统将一个进程的地址空间划分成若干个大小相等的区域,称为页;系统也将主存的空间划分成与页相同大小的若干个物理快,称为块;将进程中的页装入多个不相邻的块中

    # 分页存储管理的地址结构图

    0~11位称为业内地址

    12~32称为页号

    每页的大小为4KB所以允许的空间地址大小最多为1MB

    # 页表:系统为每个进程建立了一张页表,目的是为了当进程中的每一页分配到主存中的多个物理块时,系统能保证在主存中找到每个页面对应的物理快;在页表中记录了主存中对应着物理块号,通过查找页表就能查找到每页所对应的物理块号

    # 块表:用来存放当前访问最频繁的少数活动页的页号及相关的信息

    # 分段存储管理

     在分存储管理的方式中,作业的地址空间按程序自身逻辑关系划分为若干程序段,每段定义一组逻辑信息。

    分段系统的逻辑地址由段号S和段内地址D两部分组成,一个作业最多有64K个段,每个段的长度最大为64KB

    # 段表:实现从逻辑地址到物理地址的映射

    # 段页式存储管理

    结合分段存储管理和分页存储管理的优点,客服其缺点;段页式存储管理方式即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。右图示出了一个作业的地址空间和地址结构。

    # 虚拟存储管理

    # 页面置换算法

    1)最佳置换算法:一种理想化的算法,选择那些永远不会使用的算法,或则那些长时间不再被访问的算法将被置换出去

    2)先进先出置换算法:每一次淘汰页面时总是先淘汰先进入主存的页面,也就是选择在主存中停留时间最久的页面。先进先出置换算法是一种最直观,但是性能最差

    3)最近最久未使用置换算法:选择最久未使用的算法将被淘汰

     4)最近未用置换算法:将最近一段时间未被引用过的页面淘汰

    待补充图来解释...

    ## 设备管理

     # 设备分类

    按数据组织分类:块设备,字符设备

    按资源分配角度分类:独占设备,共享设备,虚拟设备

    按数据传输分类:低速设备,中速设备,高速设备

    按输入输出对象分类:人机通信设备,机机通信设备

    按是否可交互分类:非交互设备,交互设备

    # 设备管理的作用:提高各个设备的利用率,给用户提供统一方便的界面

    # 设备管理的功能

    动态掌握并记录设备的状态

    设备的分配和释放

    缓冲区管理

    实现物理I/O设备的操作

    提供设备使用的的用户接口

    设备访问和控制

    I/O缓冲和调度

    # 设备管理采用的相关缓冲技术

    1)通道技术:CPU向通道发出I/O命令,通道收到命令后,从主存中取出本次I/O要执行的通道程序并执行

    2)直接存储访问方式:又称为DMA,当输入输出设备在和主存进行数据传送时,不需要CPU的干涉,只需要CPU在开始启动和结束时的处理,实际的操作过程由DMA来进行完成

    3)缓冲技术:缓和CPU与I/O设备之间速度不匹配的矛盾;减少对CPU中的中断频率,放宽对中断响应的时间限制;提高CPU和I/O设备之间的并行性

    4)SPOOLing技术:提高了输入输出的速度,从对低速输入输出设备进行的输入输出操作变为对输入井或输出井的操作,如同脱机操作一样。提高了I/O速度,缓和了CPU与低速I/O设备速度不匹配的矛盾;设备并没有分配给任何进程,在输入井或输出井中,分配给进程的是一存储区和建立一张I/O请求表;实现了虚拟设备功能,多个进程同时使用一独享设备,而对每一进程而言,都认为自己独占这一设备,不过,该设备是逻辑上的设备.

    # 磁盘调度

    利用适当的调度算法,使进程对磁盘的平均访问时间最少。

    磁盘读写操作的时间由寻找(寻道)时间、延迟时间和传输时间决定。进程在对磁盘机型访问时,最为耗时的是寻道时间,故磁盘调度算法的目标是较少进程的寻道时间

    1)先来先服务磁盘调度算法:利用进程访问磁盘的先后顺序来进行调度;每个进程都能调用到磁盘

    2)最短寻道时间优先磁盘调度算法:若进程A所要访问的磁道的时间为T1,进程B所要访问的磁道时间为T2,且T1>T2,则根据最短寻道时间算法让进程B访问磁道;该算法不能保证平均寻道时间最短

    3)扫描算法:结合了最短寻道时间算法的优点,而又增加考虑了当前磁头的移动方向,每次扫描只能从里到外或从外到里,类似电梯从上端到下端,则该算法又称为电梯调度算法

    4)单向扫面调度算法:扫描算法存在的问题(当磁头刚从里移动到外时经过一个磁道,而这时该磁道刚好要被访问,但扫描算法不能立即处理该请求,只能等下次扫描到该磁道时才能处理),单向扫描算法的磁头做单向移动(只从里到外或只从外到里)

    ## 文件管理

    # 目录结构

    待完成... 

    # 文件的存取方法

    顺序存取:从前到后依次存取各个信息项

    随机存取:又称直接存取,允许用户随意存取任意一个物理块

    按键存取:直接存取的一种根据文件中各记录的某个数据项来存取记录的,这种数据项称为“键”

     # 文件的物理结构

    连续结构:逻辑上联系的文件信息存放在连续的物理块中

     链接结构:逻辑上联系的文件信息存放在不连续的物理块中,每个物理快设有一个指针指向下一个物理快

     索引结构:逻辑上联系的文件信息存放在不连续的物理块中,系统为每个文件建立一张索引表

    # 文件系统的可靠性

    指系统抵抗和预防各种物理破坏和认为性破坏的能力

    如果文件系统被破坏了,很多情况下是无法恢复的

    # 系统的安全性

    系统级安全管理:不允许未授权的用户进入系统,措施有登录和注册

    用户级安全管理:对所有用户分类,对指定的用户分配访问权,不同的用户对不同文件设置不同的存取权限来实现

    目录及安全管理:为了保护系统中各个目录而设计的,与用户的权限无关,为了保证目录的安全,规定只有系统的核心才能具有写目录的权利

    文件级安全管理:通过系统管理员或文件主对文件属性的设置来控制用户对文件的访问,只执行,只读,只写共享

    ## 作业管理

    # 作业是系统为了完成一个用户的计算任务,所做的工作的总和

    作业由:程序,数据,作业说明书三部分组成

    作业说明书包括作业的基本情况,作业控制的描述,作业资源要求的描述,体现了用户的控制意图

    # 作业调度算法

    1)先来先服务

    2)短作业优先

    3)响应比优先算法:HRN=作业响应时间/作业执行时间;作业响应时间为:作业进入系统后的等待时间与作业的执行时间之和

    4)优先级调度算法

    5)均衡调度算法根据系统的运行情况和作业本身的特性来对作业进行分类,调度从中挑选执行

    待补充...

  • 相关阅读:
    React 16 源码瞎几把解读 【前戏】 为啥组件外面非得包个标签?
    nodejs 使用redis 管理session
    nodejs 优雅的连接 mysql
    mongodb 学习笔记 3 --- 查询
    mongodb 学习笔记 2 --- 修改器
    mongodb 学习笔记--- 基础知识
    看jquery3.3.1学js类型判断的技巧
    FIS3 大白话【一】
    Flutter 插件开发:以微信SDK为例
    最新Android面试题整理,收藏下吧值得拥有!
  • 原文地址:https://www.cnblogs.com/Doaoao/p/10235858.html
Copyright © 2011-2022 走看看