计算机操作系统测试第一轮【错题涉及知识点】

处理器CPU{
    硬件{
        由于集成电路集成度越来越高,为降低系统成本,越来越多的功能集成在了芯片组中,芯片组与CPU同步发展,有什么样功能和速度的CPU,就有什么样的芯片组与之配套,所以芯片组里面啥都有,就没有CPU
        控制器{
            MMU用来管理虚拟存储器 、物理存储器的控制线路,同时也负责虚拟地址 映射为物理地址 。
        }
    }
    频率{
    	微型计算机的主频是微处理器时钟工作频率
        外频有时称为系统总线频率。是内存和cpu之间传送数据的频率,体现数据传送能力!
    }
    架构{
    RISC大多数指令在一个时钟周期内完成
    RISC的内部通用寄存器数量相对CISC多
    RISC的指令数、寻址方式和指令格式种类相对CISC少
    }
    CPU硬件{
        用于执行系统软件和应用软件的微处理器称为CPU,目前几乎所有计算机的CPU使用的都是微处理器也就是集成电路
    }
    处理器调度{
        处理器调度可以在进程结束时能进行调度  //cpu将该进程代码执行完毕,此时cpu空闲
        处理器调度可以在创建新进程后能进行调度//进程创建好进入就绪队列,抢占调度会判断该进程优先级抢占CPU
        处理器调度可以在系统调用完成并返回用户态时能进行 //调度可以打断cpu运行(抢占式/轮转式)
        处理器调度可以在进程处于临界区时也能进行//临界区不属于原子操作,可以把互排资源占有,并退出CPU          
        算法复杂度{
            T(n)= T(n – 1)+1,T(1)=1 --> O(N) //线性
            T(n)=  2n^2 -->O(N^2) //去掉系数
            T(n)= T(n/2)+1,T(1)=1 -->O(logN) 
            T(n)= 3nlog2n -->O(NlogN)  //去掉系数  }      
    }
    CPU状态切换{  }
    cpu指令{
        指令 = 操作码+地址码  //地址码是操作对象的地址,不是直接就是数据 
        寄存器传送指令完成内存和CPU之间的传送,不是寄存器与cpu
    }    
    调度计算{
        周转时间=作业完成时间—作业提交时间;
	平均周转时间=(作业1的周转时间+...+作业n的周转时间)/n;
	带权周转时间=作业周转时间/作业实际运行时间;
	平均带权周转时间=(作业1的带权周转时间+...+作业n的带权周转时间)/n;
 
        响应比 =(等待时间+服务时间)/ 服务时间;--> 高效应比优先算法是已经等待时间长的优先,短工作时长的优先;
        错题1{  }
        错题2{
	     假设有四道作业,他们的提交时间和执行时间由下表给出。
             请计算在单道程序环境下,用最短作业优先调度算法(SJF)时的平均周转时间和平均带权周转时间是(8,2.13)
				作业名 |提交时刻(时) |执行时间(小时)
				A        |    0                  |    4
				B        |    1                  |    5
				C        |    2                  |    2
				D        |    3                  |    3
				E        |    4                   |    4
        }
        错题3{  }
        错题4{  }
        错题5{  }
        错题6{  }
    }
}


线程与进程{
    基础{  并行是指多个事件在同一时刻发生,缓冲区就是为了使io能与cpu并行    
        并发是指多个事件在同一时间间隔内发生。
        线程是进程的一个执行单元,同一个进程的多个线程共享资源。创建或撤销线程不会分配和回收资源。
        进程申请读磁盘操作的时候,因为要等待磁盘IO完成,将自身阻塞,进入阻塞态。当IO完成之后,从阻塞进入就绪态
        线程执行开销小,但是不利于资源管理和保护
        进程同步也是进程之间直接的制约关系,进程互斥是进程之间的间接制约关系
        静止就绪==挂起就绪;活动就绪==就绪
        每个线程都有各自私有的程序计数器、寄存器和栈。一个线程既不能读也不能写另一个线程的私有数据
    }    
    进程通信{
            两个进程它们都各自拥有程序段和数据段,即有各自的全局变量,不可能通过全局变量交换数据,只能通过第三方比如数据库,pipe,共享内存传递信息;线程共用数据段,可以用全局变量交换数据

            管道是pipe文件,由于文件的读写是互斥的,一次只能有一个进程对该管道读/写操作,管道是队列结构,一个进程(写进程)在管道的 尾部写入数据 ,另一个进程(读进程)从管道的 头部读出数据 ,所以是单向的半双工,其他进程被阻塞!
    信号量{
         同步信号量的初值一般设为0;
         互斥信号量的初值一般设为1;
    }
}

死锁{
    资源分配图中存在回路,系统不一定存在死锁;死锁一定,存在资源分配图中存在回路
    单处理机系统中,若有4 个用户进程,处于阻塞状态的进程最多有4个,全部死锁了,cpu没有进程运行。
    避免死锁{
            银行家算法中,对某时刻的资源分配情况进行安全分析,如果该时刻状态是安全的,则存在一个安全序列,代表进程推进顺序,进程推进顺序可以多种,安全序列可以是多个!
    }
    错题{ 

       }
}


内存管理{
    系统内存{
            内存没有那么大的空间,操作系统的程序和用户程序一样,是对换到外存也就是硬盘/磁盘的。
    }
    虚拟内存{
            虚存容量的扩大是以牺牲 CPU 工作时间以及内、外存交换时间为代价的
    }
    分区管理{        
            变分区管理方案中,若采用“最佳适应”分配算法,通常将空闲区按容量递增排列。
            内部碎片指的是在存储管理时,给程序配了一定的内存,但是没有全部使用,有一部分空闲而浪费。
            外部碎片指的是就是没有分配给程序的内存碎片;
            可变分区解决了不可变分区的内部碎片的问题,产生了外部碎片问题
    }
    页管理{        
        错题1{
            下图的页表是存放在内存中的,对逻辑地址进行读写时。第一次找到对应的块号,第二次从内存绝对地址行读写,必须访问两次主存  分析:页号4位 + 页内地址10位
            逻辑地址0A1F = 0000 10,10 0001 1111 = 0010(页号)+(1000011111)页内地址 
            物理地址 = 3(块号) + (1000011111)块内地址=页内地址 = 11,1000011111
        }
        错题2{  }
        二级分页/页表页{
        //页表和现实中的书本结合理解
        //页表等于一页书,每一页对应一个页表项
        //页表大小等于一页书能写多少字(字节)
        //页表页就是页目录就是专门存放页表项就是书本目录,查书必须先翻目录页
        //页表项就是书本目录的每一行,一行记载某一页书大致信息(页表项大小)
        //逻辑空间大小1000页等于整本书1000页
        页表项 == 【页号】【物理块号】【状态位P】【访问字段A】【修改位M】【外存地址】
        【状态位P】:用于指示该页是否已调入内存;
        【访问字段A】:用于记录本页在一段时间内被访问次数,供选择换出页面时参考;
        【修改位M】:表示该页在调入内存后是否被修改过,供置换页面时参考;
        【外存地址】:用于指出该页在外存上的地址,通常是物理块号,供调入该页时参考;
            例题1{
            某计算机采用二级页表的分页存储管理方式,页面大小为1024B,每个页表项占2B,若逻辑地址空间的大小为64K个页面,则表示整个逻辑地址空间等于需要128页表页!
            解:整本书64K页,每页对应一个页表项,全部64K页表,占地64K×2字;一页1024字,需要128页专门放页表项,等于需要128页表页
            }
            例题2{  }
        }
    }
    分页虚拟存储{
            //虚拟存储代表内存外存统一管理;虚拟地址代表逻辑地址
            Belady现象是指分页式虚拟存储器管理中,发生缺页时的置换算法采用FIFO(先进先出)算法时,增加内存中的页面,缺页率反而增加,FIFO算法的缺页率最高(belady--become lady--麻烦)
            页式虚拟存储管理的“虚拟”说明:不要求将作业同时全部装入;“页式”说明:存入的主存可以不连续。

            工作集指的是一段时间内使用过的页面的集合。
    
            缺页{
                影响缺页中断率的因素有四个:
                分配给作业的主存块数多则缺页率低
                页面大,缺页中断率低;
                程序编制方法:少使用goto语句可以保护好程序的局部性,数组每一行元素存放在一页中,则按行处理各元素缺页中断率低;
                页面调度算法对缺页中断率影响很大
	        分页存储管理的存储保护是通过页表完成的,起始地址与限长地址。
	        请求分页管理/虚拟分页管理中,已修改过的页面再次装入cpu时应来自磁盘对换区
                请求分页管理 == 虚拟分页管理
                在缺页处理过程中,操作系统执行的操作有,修改页表项(回看页表项定义),磁盘 I/O(调入页),分配页框(页是进程中的块,页框是内存中的块,页放入页框中的)
                抖动是页面在内存与外存之间频繁的换入与换出的现象,可能是由于置换算法不合适引起的,可能是由于物理内存数量不足引起的,导致CPU比较忙碌,不会崩溃
                错题1{  }
                错题2{  }

            }

        }
    }
    段管理{
        分段对程序员是可见的,代码段和数据段,bss段等!
    }
    段页管理{
        段页式存储器管理系统中,不会产生外部碎片,会产生内部碎片,因为段分成多页,分页产生内部碎片
    }
    
    数据存放{
            例题1{
                8086读写一个以奇数地址开始的双字,最少需3周期 
                //8086是1986年的16位小端模式,
                //字等于2字节,int是2字节,奇地址是高地址,偶地址是低地址
                //一次取一个字也就是一个int,16位
                |奇地址|偶地址| 
            }
    }
    链接{
        静态连接{
            在程序运行之前,将目标程序段及它们所需的库函数链接成一个完整的可执行程序
        }
        动态链接{
            能够装入内存任何位置的代码程序必须是可动态链接的
            动态链接前提是要有动态重定位
            运行时,先将主程序所对应的目标程序段(链接要求以段作为管理的单位)装入内存并启动运行,当运行过程中又需要调用某段时,才将该目标程序段调入内存并进行链接。
        }
        重定位{
	    采用动态重定位方式装入作业,在执行中允许操作系统在一定条件下将其移走。
        }
    }
}

外存{
    基础{
        磁带只能存放是顺序型文件,所以存储介质决定数据文件类型
        磁带/磁盘/硬盘/光碟/U盘/都叫外存,他们叫产品,ROM,FLASH也叫外存,他们叫技术,技术构成产品
        外存硬件划分为扇区/块;系统分配磁盘空间为簇,簇等于若干扇区辅存就是外存
        位示图只能用在磁盘空间的管理;位向量的用处为磁盘空闲空间的管理
        虚拟存储将外存非连续空间与内存统一管理;为了把所有的能用的存储空间都统一起来,拟内存的容量是受到内外存容量和计算机地址位数限制的
    }
    例题1{
        例如某文件系统的簇和磁盘扇区大小分别为1 KB和512 B。若一个文件的大小为1 026B,则系统分配给该文件的磁盘空间大小是2KB=2048B  }
    文件系统{
            文件{
	        索引文件是记录文件,比如目录文件,流式文件是顺序文件	
                流式文件是指无结构的文件,记录式文件是具有逻辑结构的文件
                文件系统在内存中维护唯一的一张文件分区表,其中保存了系统所有已打开文件的FCB。
        	Linux 文件名的长度不能超过256个字符。
            索引文件{   }
            错题1{  }
        }
        文件权限{
                如果系统的umask设置为244,创建一个新文件后,
                它的权限是422 == 100 010 010 ==  - /r--/ -w-/-w-
                umask是从权限中“拿走”相应的位,且文件创建时不能赋予执行权限.
                所以文件默认666,目录默认777,666减去umask的位就是结果422
        }
        文件链接{
                硬链接{
                      基于索引节点的共享,当用户A创建一个新文件时,它便是该文件的所有者,此时将“源文件链接数”置为1。当有用户 B要共享此文件时,在用户B的目录中增加一个目录项,并设置一指针指向该文件的索引结点。此时,文件主仍然是用户A,“源文件链接数”=2。如果用户A不再需要此文件,不能将文件直接删除。若直接删除了该文件,也必然删除了该文件的索引结点,这样便会使用户B的指针悬空。
                      若文件f1的硬链接为f2,两个进程分别打开f1和f2,获得对应的文件描述符为fd1和fd2;两个进程各自维护自己的文件描述符
                      硬链接不可以跨文件系统。它只能建立对文件的链接,硬链接就是一个文件的一个或多个文件名。目的是多个文件名能同时修改同一个文件。
                      一个文件有几个文件名,我们就说该文件的链接数为几。链接数可以是1, 这表明该文件只有一个文件名。
                      通过文件名存取文件时,文件系统内部的操作过程是通过文件名在目录中查找对应的i节点,通过i节点存取文件数据。
                }
                软链接{
                     也叫符号链接,可以建立对于文件和目录创建新的链接文件,文件类型是链接文件l,链接文件具有新的i节点,是一个全新的文件,相当于快捷方式,不改变源文件链接数。
                     符号链接就是快捷方式,可以跨文件系统,即可以跨磁盘分区,如果采用符号链接的方式共享文件,那么当文件被删除的时候,该共享链接会失效
                }
                错题{
                    在linux 中,设文件F1 的当前引用计数为1,先建立F1 的符号链接文件F2,再建立F1 的
                    硬链接文件 F3,则此时文件F1、F2 和F3 的引用计数值分别是(2,1, 2) 。
                }
        }
    }
}


虚拟地址{
        虚拟地址不是外存,是逻辑地址
        虚存逻辑地址最大为Min(内存+外存,2^地址线)
        例题1{
            段的逻辑地址形式是段号10位,段内地址20位,主存的容量为512MB,辅存的容量为1GB那么虚拟存储器最大实际容量是min(10×2^20=1024MB,512MB+1GB) = 1024MB
        }
        例题2{
            一个虚拟存储器系统中,设主存的容量为16MB,辅存的容量为1GB,而地址寄存器的位数32 位,在这样的系统中,虚存的实际最大容量是min(2^32=4GB,1GB+16MB) = 1GB+16MB
        }
}

中断{
        硬中断就是硬件设备引起的中断,比如按键,触发硬件中断,转去执行服务函数的程序
        软中断是软件模拟的中断,是软件指令触发,比如访管指令可以触发软中断进入管态,执行系统调用
        中断程序不能写成线程
        处理外部中断时,应该由操作系统保存的是通用寄存器的内容,PC值由中断隐指令由硬件自动保存
}

系统OS{
      系统{
          多道批处理系统最重要是运行效率 //进程对IO操作时,阻塞在队列等IO结果,cpu让给其他进程
          Unix操作系统是汇编语言,闭源的
          Windows  操作系统是是一个批处理多用户操作系统
          微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。微内核并非是一个完整的OS,而只是操作系统中最基本的部分
          多道程序系统是在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行,用绝对地址编写的程序不适合多道程序系统运行,后调用的程序可能覆盖之前程序使用的内存,从而导致前面程序访问内存错误
  	  C语言程序能够在不同的操作系统下运行,这说明C语言具有很好的移植性,所以Linux有很好的移植性
      }
      指令{
          系统调用指令不属于特权指令,系统调用往往以函数调用和陷入指令的方式使用,用户编程使用的系统调用不是特权指令,而是用户指令,超级用户也不可以使用特权指令。特权指令是指只允许操作系统使用,是不能提供给用户的!
          访管指令能引起访管中断,它不属于特权指令
      }
}

校验{
    奇偶校验法{
        判断传输的一组二进制数据中"1"的个数是奇数还是偶数
        奇校验:如果以二进制数据中1的个数是奇数为依据,则是奇校验
        偶校验:如果以二进制数据中1的个数是偶数为依据,则是偶校验
    }
}


IO设备{
    //SPOOLing 技术把独占设备改成共享设备,不是虚拟设备
    独享设备:用户作业独享设备。如输入机、磁带机、打印机等。——需要装驱动。
    共享设备:多个作业都占有该设备。软硬盘、光盘等块设备都是共享设备。——无需驱动。
    通道不含存储器,只含CPU的外部设备,所以才叫IO处理机,有处理器,执行I/O指令
    用户程序应与实际使用的物理设备无关,这种特性就称作设备独立性
设备名{ 逻辑设备表( LUT )的作用是在物理设备和逻辑设备之间建立对应关系,将逻辑设备名映射为物理设备名 用户申请设备时应指定设备类相对号。用户向系统说明所要使用的设备类型,至于实际使用哪一台,由系统根据该类设备的分配情况来决定。用户申请“设备类、相对号”。系统为用户建立“绝对号”与“设备类、相对号”的对应关系。 } IO系统{ 操作系统的I/O 子系统通常由 4 个层次组成,合理的层次组织排列顺序是{ 用户层I/O软件 //用户直接调用I/O操作的库函数,对设备进行操作 //用户和I/O软件之间 设备无关软件   //I/O软件和设备驱动器之间 设备驱动程序   //设备驱动器与硬件之间 中断处理程序   //中断 } 设备分配算法{ 先来先服务  优先级高者优先 } }