zoukankan      html  css  js  c++  java
  • OS知识点回忆整理

    操作系统
    程序接口:也叫系统调用。在目态下(user-mode)调用核态(kenrel code)提供的功能,用户程序要求使用操作系统提供的功能。图形接口GUI就是用户通过GUI,操作键盘鼠标并通过和GUI接口交互,操作计算机。GUI也是通过调程序接口实现。
    命令接口:
    脱机命令接口,用于批处理系统。比喻就是:雇主把需要做的事列出来一个清单,工人不用脑子,按照清单一步一步来就行。
    联机命令接口:用于分时等要求交互性强的系统,比喻:雇主说一句话,工人做一件事,并给出一个反馈。
     
     
    操作系统几个很重要的特征:
    异步性:多个进程可以以任意的节奏推进自己的进程。但是在同一运行环境下,系统必须保证 多次执行程序的结果是一致的,不然会产生  和时间有关的 错误。
    共享性:资源共享是在实现多道程序并发基础上的。没有并发,资源共享也没有意义。
                资源共享  包括 互斥访问和同时访问。“同时”访问一个资源是在宏观角度上。而在微观上,进程可能分时交替着访问资源。
    并发:在单道程序系统优化,使得多个程序在系统里同时运行,可以满足多个用户的作业需求。
    虚拟:用技术手段,让一个物理的设备在逻辑上被多个设备分用。用户感觉起来就好像是多个cpu,多个存储器为自己专门服务,交互性好,体验好,但实际上自己的资源代价也不高。
            在时间上复用cpu资源。在空间上复用存储器资源---把外存假装可作为内存资源,可以使得用户在内存很少的现状下还能运行消耗很大的程序。
     
    在内存管理上,外存如何虚拟为逻辑上的内存这个应该很重要。印象里似乎是:程序物理上还是放在外存里,在需要调用的时候,用一定的调度策略放入内存里。调度策略是和中央处理机里的作业调度策略有区别吗。作业调度和进程调度有区别吗。
    作业调度就是把多个作业按照一定的调度策略放入后备队列中。
    进程调度是把多个进程根据不同的状态如就绪状态,阻塞状态分成多个队列。比如就绪队列中,cpu需要资源的时候,从就绪队列中拿第一个,该进程就能立刻获得cpu资源。
    为什么会有阻塞状态呢?进程获得一部分的cpu资源,但是因为某些原因比如收到中断请求等就不能让这个进程运行了,就让它变成阻塞状态,当它???后变成就绪状态后,在就绪队列里排队才能重新得到cpu资源而重新运行。
    阻塞,运行,创建,就绪几个状态图可以相互转换。这里的转化会出考题。比如i/o设备输入输出完成后等待cpu资源是怎样的状态?i/o设备传输完成了,但主存资源?不是除了cpu其他的资源一切资源都分配就绪把?内存资源,进程创建了吗?应该不是就绪状态吧?还有几个具体的实际例子怎么理解?
     
    进程调度是低级调度,中级调度是内存调度。作业调度是高级调度。
    内存调度,这个中级调度好像只提了一嘴。并没多说话。我也不太理解实际的。
    进程调度怎么调度的?也是时间片轮转·先来先服务 多级反馈原则似乎都是在作业调度内容中提到的。
     
    背诵了很多调度算法,但是如何在某一个具体实际场景中,比如什么机床控制系统等用上 有某个特定优势的调度算法才是考察点。除了多 百度每个系统场景的需求是什么?真题的场景看不懂啊。
    对各个调度算法优缺点也需要熟练了解。了解之前,需要知道如何从专业角度评价一个调度算法的优劣。
     
    可以从  用户等待时间,响应时间,周转时间,平均周转时间, 都是从时间角度考量效率啊。时间花的越少,这个作业调度算法就是很好的吗?响应时间少,说明系统反应灵敏,交互性很好。
    除了时间,没别的考量角度吗?
     
    多级反馈调度算法是 结合了 优先级 和时间片轮转调度算法,
    优先原则是什么?
    系统程序>用户程序
    前台交互程序优先级> 后台运行程序
    时间花费短的优先于时间花费长的?
     
    多级反馈算法是 综合了很多方面进行考量折中的,希望大多数用户都能满意的。
     
     
    为什么光是时间片轮转或优先级作业调度算法还不是最好的呢?还得挑出来分别组合形成一个新的调度算法?
    优先级调度:根据作业优先级安排下作业的执行顺序。
    时间花的少的 优先级高,花费时间越多,优先级降低。
    系统程序的优先级比用户程序的 优先级高。
    交互性比后台运行程序的优先级更高。
    优先级制定原则是什么?
     
    时间片轮转调度算法是用作业运行在每个时间片中的,每个时间片大小的制定是非常重要的。时间片越大,就近似于先来先服务。时间片太小也不好,近似短作业优先。时间花在进程切换的开销太大,效率下降。时间片设计得适合大多数的作业的运行时间,好像是大一点点。没完成的作业就直接放入就绪队列,重新等待下一次分配。这样,多道作业都能在自己的时间片完成得很好,每个用户终端都感觉是计算机资源专门为自己服务,响应很及时。就是一个计算机资源很好地分时被多个用户利用。分时系统就是用时间片轮转调度算法。
     
    实时系统貌似没见过很多的题目。
                实时系统对具体时刻要求很高。比如飞机起飞系统控制时间上对时间很敏感。
     
     
    硬件上:时间控制对指令执行意义很大。
     
    时间控制是cpu的功能之一。
    cpu功能有:
    指令控制。
    操作控制。
    ....
    时间控制等
     
     
    如何控制时间呢?
     
    时钟(real time clock)
    定时器(timer)
     
    计算机网络里的传输层,三次握手,四次挥手也有超时重传机制。如果没收到确认,就启动定时器,重传确认。
    在数据链路层,数据超时重传。
     
     
     
    让指令序列按照既定的时间一直走下去。
     
     
     
     
    同时为了有限的内存资源被分配地有效率,分配策略很重要。
    内存比cpu容量大,但是运行远比不上cpu,经常会让宝贵的cpu资源浪费。所以cache也是一个伟大的发明。cache如何分配好自己的空间,如何和主存配合好,才能让cpu主存运行速度差别不是特别多呢。
    cache是利用好程序的局部性原理,即在空间和时间上经常访问的代码段和数据段放入cache里,cpu运行数据和代码,先去cache里找,没找到才从主存里找。如果每次一找就找到了,说明cache的命中率很高。
    cache的命中率和块block的大小,和cache地址如何和主存地址映射对应起来的关系也很重要。
    cpu设置了很多个块。
    块大小设置太大,或太小都不好。块太大,cpu任意找一个数据,就没在cache里,就很尴尬了,花了大价钱买的的cache里,但是并没发挥实际的作用。块太大,经常把主存对应的块调入调出 ,换进cache里,也很麻烦,降低效率。块太小,cache就有很多页数了。cache的缺页率就很高,这是个不好的指标,会降低效率吧?似乎有一道考题,我对是否提高或者降低cache效率把握很模糊。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    tolua总结(二)
    convirt管理端离线安装
    c++运用backtrace追踪函数调用的堆栈
    不知道自己适不适合作程序员
    这次六级又没过
    我也有blog了,呵呵!
    代理 XP”组件已作为此服务器安全配置的一部分被关闭。系统管理员可以使用 sp_configure 来启用“代理 XP”。
    SQLServer中的GROUPING,ROLLUP和CUBE
    android studio ndk 环境配置成eclipse模式
    寄存器小记
  • 原文地址:https://www.cnblogs.com/yizhizhangBlog/p/10721607.html
Copyright © 2011-2022 走看看