操作系统

几个问题:中断,异常,陷入、操作系统的4个基本特征、说说进程与线程、5种进程调度算法、说说死锁、优先级反转问题及解决、虚存特点、4种页面置换算法、4种磁盘调度算法、链接。

中断,异常,陷入:操作系统为了及时对中断进行相应,在进程执行过程中,如果检测到中断信号,先陷入内核态执行中断处理程序,完成后再切换到用户态继续运行当前进程。为了与外部事件引起的中断相区别,把内部事件引起的中断叫做异常。因此,中断又称外中断,异常又称内中断。

信号量与互斥锁:信号量实现同步,互斥锁实现互斥(广义上互斥也是一种同步)。信号量可以大于或者小于0,小于0代表等待的进程数,大于0代表资源可用数;互斥量只能是0/1。

系统调用:一个进程在用户态需要使用内核态的功能,需要陷入内核态,由操作系统代为执行。

操作系统的4个基本特征:并发、共享、虚拟、异步。

    并发:宏观上一段时间内可以同时运行多个程序。共享:资源可以被并发的进程共同使用,分为互斥共享(打印机)和同时共享(磁盘)。需要互斥共享的资源称为临界资源,访问临界资源的代码块称为临界区。虚拟:把一个物理设备对应多个逻辑设备;时分复用:CPU,空分复用(磁盘)。

进程与线程:

    进程是具有独立功能的程序在某个数据集合上的一次行动,是资源分配的基本单位。

    线程是系统调度的基本单位,所有的线程共享它们所在进程的资源。一个线程只能属于一个进程,一个进程可以有多个线程,但至少有一个线程(main线程)。一个进程的所有线程共享该进程的地址空间,但栈空间、寄存器是线程独有的。不同进程的线程切换会导致进程的切换,同一个进程的线程切换不会导致进程的切换。

    有了进程为什么还要引入线程:创建/切换/销毁一个线程的开销比创建/切换/销毁一个进程小;更好的用户响应,对于浏览器,加载网络资源的同时,还能响应用户操作。

进程间通信的方式:信号量、互斥锁,无名管道、有名管道,消息队列,共享内存、共享文件、套接字socket。

管程:一种高级同步结构,一次只能有一个进程进入管程。

死锁:

    (1)定义:若干个进程相互等待对方,谁都无法前进

    (2)产生死锁的原因:资源的互斥访问;占有并请求hold and take,进程占有已有的资源并继续请求其它资源;循环等待条件:若干个进程相互等待;不剥夺条件:一个进程不能强行剥夺已经被其它进程占有的资源。

    (3)死锁预防:1.一次性分配进程所需的所有资源(破坏占有并请求条件);2.对资源进行编号,必须根据指定的顺序访问(破坏循环等待条件);3.请求其它资源不可得时,放弃已经获得的所有资源()(破坏不可剥夺条件)。都会降低系统并发度。

    (4)死锁避免:银行家算法。进程A第一次请求某资源R时,登记A进程对资源R的最大需求量(比较难做);以后每次申请资源时,尝试分配它请求的资源数,再通过安全性检测算法,看系统是否处于安全状态,若系统处于安全状态,则分配成功,若系统处于不安全状态,则取消这一次尝试分配。缺点:系统处于不安全状态也不一定会导致死锁,系统并发度降低;每一次请求资源都要进行安全性检测算法,系统开销大。

进程调度算法:

    批处理系统:先来先服务(有利于长作业,不利于短作业)、短作业优先(可能导致长作业饿死)。

    交互式系统:时间片轮转、优先级调度算法(手动设置优先级或者响应比优先)、多级反馈队列。

    多级反馈队列过程:如果一个进程需要执行 100 个时间片,如果采用轮转调度算法,那么需要交换 100 次。多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,..。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。

    

        优先级调度算法的优先级反转问题:低优先级进程先获取了某个共享资源,导致高优先级进程后来因此资源而阻塞,结果使低优先级进程先于高优先级进程运行。解决方式:优先级继承、优先级天花板。

(进程的)覆盖与交换:覆盖实现了进程的部分载入;交换把非运行状态的整个进程从内存换出到外存,换出的时间与所获取的内存空间成正比。在完全换出一个进程的思想上,对于页式系统,引出了页的换出,实现了部分换如换出;与覆盖相比,用户程序不需要指示覆盖段。

虚存的定义与特点:基于局部性原理,将程序部分装入内存,通过换入/换出,使得用户看得到内存远大于实际物理内存。特点:部分载入,换入换出、虚拟性。

页面置换算法(决定哪页换出)有几种:1.最佳置换算法:换出最长时间内(向后看)不会被使用的页。理论上的一种算法,因为实际上无法或很难知道后续访问序列。2.LRU:换出最近最久未使用的页。3.LCU:换出最近使用次数最少的页。4.时钟算法:设置一个访问位,当一个页被访问时,将访问位置1;。

页面抖动:刚刚换入的页面马上又要换出主存,刚刚换出的页面马上又要换出主存。根本原因:进程频繁使用的页面数量高于可用物理页数。

页地址转换过程:

    1.根据逻辑地址A算出页号P和业内偏移W:P=A/L,W=A%L,L是页表大小。

    2.查页表找到页号P对应的物理块号b。

    3.物理地址=b*L+W。

内存保护:

    作用:避免操作系统不受用户进程的影响;避免用户进程相互之间的影响。

    两种实现方式:

    1).设置一对上下限寄存器,当CPU要访问一个地址时,通过分别和两个寄存器的值比较,判断有无越界。

    2).与界地址寄存器比,与重定位寄存器加。若逻辑地址>界地址寄存器,则发出越界异常;否则用逻辑地址+重定位寄存器得到物理地址。

磁盘调度算法有几种:先来先服务、最短寻道时间优先、电梯算法(从里往外扫,到头后在反方向从右往左扫)、循环扫描算法(要求磁头始终沿着一个方向移动)。

文件目录:实现按名存取。由[文件目录项]构成,每个[文件目录项]形如(文件名,索引结点(i结点)地址,...)。

FCB:文件控制块,用于保存文件的描述信息和控制信息。形如(文件名,逻辑结构,物理结构,索引结点(i结点)地址,...)。

文件逻辑组织方式:无结构的流式文件,有结构的记录式文件。有结构的记录式文件:顺序文件,索引文件,索引顺序文件、散列文件。

文件物理存储方式:连续存储,链式存储,索引存储(把每个文件的所有盘块号都集中放在一起构成索引块)

文件共享:硬链接、软链接。硬链接:用户指向目标文件的索引结点(i结点),索引结点中有一个[链接计数器]count;软链接:用户指向[.link文件]的索引结点(i结点),索引结点中有一个[链接计数器]count,[.link文件]保存目标文件的路径名。软链接的优缺点:文件拥有者将共享文件删除,在其它共享用户通过链接符访问共享文件前,另一个用户创建了一个同名文件,导致错误。网络共享只需要共享[该文件所在机器的网络地址]和[在该机器中的文件路径]。

链接:将多个目标模块链接成一个完整的可装入模块。

    (1)静态链接:在程序运行前,把个目标模块链接成一个完整的目标模块,以后不再拆开。

    (2)载入时动态链接:将程序载入内存时,边载入边链接。

    (3)运行时动态链接:进程执行需要的时候,才对这些模块进行链接。优点是便于修改和更新,便于实现对目标模块的共享。

装入:将程序载入内存运行。

    (1)绝对装入:如果编译时就知道程序驻留在内存中的位置,那么编译时就可以进行物理地址的转化。

    (2)静态可重定位装入:装入程序的时候,一次性把虚地址全部转化为物理地址,这样在程序运行期间就不需要在进行地址转换工作。

    (3)运行时动态重定位装入:程序执行过程中,由[硬件地址转换机制]实现虚地址到物理地址的转换。

https://www.cnblogs.com/scroll/p/3712518.html?utm_source=tuicool 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值