做网站都是用ps吗,郑州网站设计培训,网站做两个月百度没有录取,做网站竞争者的优势1 select poll epoll的区别基本上select有3个缺点: 连接数受限查找配对速度慢数据由内核拷贝到用户态poll改善了第一个缺点 epoll改了三个缺点. (1#xff09;select#xff0c;poll实现需要自己不断轮询所有fd集合#xff0c;直到设备就绪#xff0c;期间可能要睡眠和唤醒…1 select poll epoll的区别基本上select有3个缺点: 连接数受限查找配对速度慢数据由内核拷贝到用户态poll改善了第一个缺点 epoll改了三个缺点. (1selectpoll实现需要自己不断轮询所有fd集合直到设备就绪期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表期间也可能多次睡眠和唤醒交替但是它是设备就绪时调用回调函数把就绪fd放入就绪链表中并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替但是select和poll在“醒着”的时候要遍历整个fd集合而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了这节省了大量的CPU时间。这就是回调机制带来的性能提升。 (2selectpoll每次调用都要把fd集合从用户态往内核态拷贝一次并且要把current往设备等待队列中挂一次而epoll只要一次拷贝而且把current往等待队列上挂也只挂一次在epoll_wait的开始注意这里的等待队列并不是设备等待队列只是一个epoll内部定义的等待队列。这也能节省不少的开销。 2 调度算法调度算法是指根据系统的资源分配策略所规定的资源分配算法。 先来先服务(FCFS, First Come First Serve)短作业优先(SJF, Shortest Job First)最高优先权调度(Priority Scheduling)时间片轮转(RR, Round Robin)多级反馈队列调度(multilevel feedback queue scheduling)实时调度算法: 最早截至时间优先 EDF最低松弛度优先 LLF一、FCFS——先来先服务和短作业进程优先调度算法 先来先服务调度算法。先来先服务FCFS调度算法是一种最简单的调度算法该算法既可用于作业调度 也可用于进程调度。FCFS算法比较有利于长作业进程而不利于短作业进程。由此可知本算法适合于CPU繁忙型作业 而不利于I/O繁忙型的作业进程。 短作业进程优先调度算法。短作业进程优先调度算法SJ/PF是指对短作业或短进程优先调度的算法该算法既可用于作业调度 也可用于进程调度。但其对长作业不利不能保证紧迫性作业进程被及时处理作业的长短只是被估算出来的。 二、FPF高优先权优先调度算法 优先权调度算法的类型。为了照顾紧迫性作业使之进入系统后便获得优先处理引入了最高优先权优先FPF调度算法。 此算法常被用在批处理系统中作为作业调度算法也作为多种操作系统中的进程调度还可以用于实时系统中。当其用于作业调度 将后备队列中若干个优先权最高的作业装入内存。当其用于进程调度时把处理机分配给就绪队列中优先权最高的进程此时 又可以进一步把该算法分成以下两种 1)非抢占式优先权算法 2)抢占式优先权调度算法高性能计算机操作系统 2.优先权 对于最高优先权优先调度算法其核心在于它是使用静态优先权还是动态优先权 以及如何确定进程的优先权。 3.动态优先权 高响应比优先调度算法为了弥补短作业优先算法的不足我们引入动态优先权使作业的优先等级随着等待时间的增加而以速率a提高。 该优先权变化规律可描述为优先权等待时间要求服务时间/要求服务时间即 响应时间/要求服务时间 三、基于时间片的轮转调度算法 1.时间片轮转法。 时间片轮转法一般用于进程调度每次调度把CPU分配队首进程并令其执行一个时间片。 当执行的时间片用完时由一个记时器发出一个时钟中断请求该进程被停止并被送往就绪队列末尾依次循环。 多级反馈队列调度算法多级反馈队列调度算法多级反馈队列调度算法不必事先知道各种进程所需要执行的时间它是目前被公认的一种较好的进程调度算法。 其实施过程如下 1) 设置多个就绪队列并为各个队列赋予不同的优先级。在优先权越高的队列中 为每个进程所规定的执行时间片就越小。 2) 当一个新进程进入内存后首先放入第一队列的末尾按FCFS原则排队等候调度。 如果他能在一个时间片中完成便可撤离如果未完成就转入第二队列的末尾在同样等待调度…… 如此下去当一个长作业进程从第一队列依次将到第n队列最后队列后便按第n队列时间片轮转运行。 3) 仅当第一队列空闲时调度程序才调度第二队列中的进程运行 仅当第1到第 i-1 队列空时 才会调度第i队列中的进程运行并执行相应的时间片轮转。 4) 如果处理机正在处理第i队列中某进程又有新进程进入优先权较高的队列 则此新队列抢占正在运行的处理机并把正在运行的进程放在第i队列的队尾。 3 死锁在多道程序系统中由于多个进程的并发执行改善了系统资源的利用率并提高了系统的处理能力。然而多个进程的并发执行也带来了新的问题——死锁。所谓死锁是指多个进程因竞争资源而造成的一种僵局若无外力作用这些进程都将无法向前推进。 死锁产生的原因: 1系统资源的竞争 2进程推进顺序非法(程序推进顺序不当) 死锁产生的条件: 互斥条件 不剥夺条件 请求和保持条件 循环等待条件 处理死锁的基本方法: 预防死锁(摒弃除1以外的条件)避免死锁(银行家算法)检测死锁(资源分配图)解除死锁 : 死锁的接触方法 : 剥夺资源 撤销进程 进程回退4 程序的编译与链接Bulid过程可以分解为4个步骤:预处理(Prepressing), 编译(Compilation)、汇编(Assembly)、链接(Linking) 以c语言为例: 1 预处理预编译过程主要处理那些源文件中的以“#”开始的预编译指令主要处理规则有 将所有的“#define”删除并展开所用的宏定义处理所有条件预编译指令比如“#if”、“#ifdef”、 “#elif”、“#endif”处理“#include”预编译指令将被包含的文件插入到该编译指令的位置注此过程是递归进行的删除所有注释添加行号和文件名标识以便于编译时编译器产生调试用的行号信息及用于编译时产生编译错误或警告时可显示行号保留所有的#pragma编译器指令。2 编译编译过程就是把预处理完的文件进行一系列的词法分析、语法分析、语义分析及优化后生成相应的汇编代码文件。这个过程是整个程序构建的核心部分。 3 汇编汇编器是将汇编代码转化成机器可以执行的指令每一条汇编语句几乎都是一条机器指令。经过编译、链接、汇编输出的文件成为目标文件(Object File). 4 链接链接的主要内容就是把各个模块之间相互引用的部分处理好使各个模块可以正确的拼接。 链接的主要过程包块 地址和空间的分配Address and Storage Allocation、符号决议(Symbol Resolution)和重定位(Relocation)等步骤。 5 静态链接与动态链接静态链接方法静态链接的时候载入代码就会把程序会用到的动态代码或动态代码的地址确定下来 静态库的链接可以使用静态链接动态链接库也可以使用这种方法链接导入库 动态链接方法使用这种方式的程序并不在一开始就完成动态链接而是直到真正调用动态库代码时载入程序才计算(被调用的那部分)动态代码的逻辑地址等到某个时候程序又需要调用另外某块动态代码时载入程序又去计算这部分代码的逻辑地址所以这种方式使程序初始化时间较短但运行期间的性能比不上静态链接的程序 6 虚拟内存技术与分页分段虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储系统. 分页: 用户程序的地址空间被划分成若干固定大小的区域称为“页”相应地内存空间分成若干个物理块页和块的大小相等。可将用户程序的任一页放在内存的任一块中实现了离散分配。 分段: 将用户程序地址空间分成若干个大小不等的段每段可以定义一组相对完整的逻辑信息。存储分配时以段为单位段与段在内存中可以不相邻接也实现了离散分配。 分页与分段的主要区别页是信息的物理单位,分页是为了实现非连续分配,以便解决内存碎片问题,或者说分页是由于系统管理的需要.段是信息的逻辑单位,它含有一组意义相对完整的信息,分段的目的是为了更好地实现共享,满足用户的需要.页的大小固定,由系统确定,将逻辑地址划分为页号和页内地址是由机器硬件实现的.而段的长度却不固定,决定于用户所编写的程序,通常由编译程序在对源程序进行编译时根据信息的性质来划分.分页的作业地址空间是一维的.分段的地址空间是二维的.页面置换算法最佳置换算法OPT:不可能实现先进先出FIFOclock算法边沿触发和水平触发 边缘触发是指每当状态变化时发生一个 io 事件条件触发是只要满足条件就发生一个 io 事件转载于:https://www.cnblogs.com/CK85/p/10294562.html