版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统学问点梳理什么是操作系统操作系统由什么组成selectpollepoll的区分什么是轮询进程的调度算法有哪些什么是死锁程序编译与链接的过程是怎样的静态链接和动态链接的区分分页存储和分段存储有什么区分进程和线程的区分怎么理解线程安全多线程如何同步堆和栈有什么区分进程间通讯的方式有哪些各有什么优缺点进程的状态有哪些什么是虚拟内存技术关于虚拟内存虚拟内存地址物理内存物理内存地址1、什么是操作系统?操作系统由什么组成?时,避开了对计算机系统硬件的直接操作。操作系统的主要组成局部:进程和线程的治理,存储治理,设备治理,文件治理。2、select、pollepollselect、poll、epollselect、poll、epollIOFD:socket描述符IO多路复用适用如下场合:当客户处理多个描述符时〔一般是交互式输入和网络套接口,必需使用O复用当一个客户同时处理多个套接口时,而这种状况是可能的,但很少消灭假设一个TCPI/O复用TCPUDPI/O假设一个效劳器要处理多个效劳或多个协议,一般要使用I/O复用。与多进程和多线程技术相比,I/O与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创立进程/线程,也不必维护这些进程/线程,从而大大减小了系统的开销。I/Oselect,pselect,poll,epollI/O机制,一个进程可以监视多个描述符,一旦某个描述符就绪〔一般是读就绪或者写就绪,能够通知程序进展相应的读写操作。但select、pselect、poll、epoll本质上都是同步I/O,异步I/O则无需自己负责进展读写,异步I/O的实现会负责把数据从内核拷贝到用户空间。一、selectselect目前几乎在全部的平台上支持,良好跨平台支持是它的一个优点,select的一个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,它由FD_SETSIZE1024。一般来说这个数目和系统内存关系很大,具体数目可以cat/proc/sys/fs/file-max查看。321024642048。对socket进展扫描时是线性扫描,即承受轮询的方法,效率较低。select都要通过遍历FD_SETSIZE个socket哪个socket是活泼的还是不活泼的,通通都遍历一遍,这会铺张很多CPU〔epoll做了改进,只轮询活泼的〕需要维护一个用来存放大量FD的数据构造,这样会使得用户空间和内核空间在传递该构造时复制开销大。二、poll根本原理:poll本质上和select没有区分,它将用户传入的数组拷贝到内核空间,然后查询每个FD对应的设备状态,假设设备就绪则在设备等待队列中参与一项并连续遍历,假设遍历完全部FD后没有觉察就绪设备,则挂起当前进程,直到设备就绪或者主动超时,被唤醒FD,这个过程经受了屡次无谓的遍历〔跟select一样不管socket活泼不活泼,均会遍历〕与select的区分:它没有最大连接数的限制,缘由是它是基于链表来存储的缺点:大量的FD数组被整体复制于用户态和内核地址空间之间,而不管这样的复制是不是有意义。poll还有一个特点是“水平触发”,假设报告了FD后,没有被处理,那么下次poll时FD总结:select和poll都需要在返回后,通过遍历文件描述符来猎取已经就绪的socket。事实符数量的增长,其效率也会线性下降。三、epollepoll相对于select和poll来说,epoll更加灵敏,没有描述符限制。epoll使用一个文件描copyepollFD刚刚变为就绪态,并且只会通知一次。还有一个特点是,epoll使用“大事”的就绪通知方式,通过epoll_ctl注册fd,一旦该fd就绪,内核就会承受类似callback的回调机制来激活该fd,epoll_waitepoll的优点:FD1024〔1G10万个端口〕效率提升,不是轮询的方式,不会随着FD数目的增加效率下降。只有活泼可用的FD才会调用callback函数。即epoll最大的优点就在于它只管“活泼”的连接,而根连接总数无关,因此在实际的网络环境中,Epollselectpollmmapepoll使用mmap削减复制开销。在select/poll中,进程只有在调用确定的方法后,内核才对全部监视的文件描述符进展扫描,而epoll事先通过epoll_ctl来注册一个文件描述符,一旦某个文件描述符就绪时,callbackepoll_wait时便得到通知〔epoll的魅力所在〕留意:假设没有大量的idle-connection或者dead-connection〔即不活泼或者空闲的线程〕时,epoll的效率并不会比select/poll高很多,但是当遇到大量的idle-connection,就会觉察epollselect/poll。直观的比较:select 单个进程所能翻开的最大连接数有select 单个进程所能翻开的最大连接数有FD_SETSIZE32个整数的大小〔在32位的机器上,大小就是32*32,同理64位机器上FD_SETSIZE为这需要进一步的测试poll poll本质上和select没有区分,但是它没有最大连接数的限制,缘由是它是基于链表来存储的epollepoll虽然连接数有上限,但是很大,1G内存的机器上可以翻开10万左右的连接,select 内核需要将消息传递到用户空间,都需要内核拷贝动作select 内核需要将消息传递到用户空间,都需要内核拷贝动作poll 同上epoll epoll通过内核和用户空间共享一块内存来实现的综上,在选择select,poll,epoll时要依据具体的使用场合以及这三种方式的自身特点:外表上看epoll的性能最好,但是在连接少并且连接都格外活泼的状况下,select和pollepollepollselect计改善。epollltetTl〕〔是标准模式〕当被监控的文件描述符上有可读写大事发生时,epoll_wait会通知处理程序去读写。假设这次没有把数据一次性全部度写完〔如读写缓冲区大小,那么下次调用时,它还会通知你在上次没读写完的文件描述文件描述符的效率。ed〕〔也称高效模式〕当被监控的文件描述符上有可读写时间发生时,epoll_wait会通知处理程序去读写,假设这次没有把数据全部度写完〔如读写缓冲区大小,那么下次调用时,它不会通知你,也就是它只会通知你一次,直会布满大量你不关心的就绪文件描述符。使用Linuxepollsocketsocket可写的大事,如何处理?第一种最一般的方式:需要向socketsocket参与epoll,等待可写大事writesendsocket移出epoll这种方式的缺点是,即使发送很少的数据,也要把socket参与epoll,写完后再移出epoll,有确定操作代价一种改进的方式:socketepollsocketwritesend据。假设返回EAGAIN,把socket参与epoll,在epoll的驱动下写数据,全部数据发送完毕epoll这种方式的优点是:数据不多的时候可以避开epoll的大事处理,提高效率。EAGAIN:假设你连续做read绪返回,readEAGAIN,提示你的应用程序现在没有数据可读请稍后再试。3、什么是轮询?轮询法的概念是由CPU定时发出询问,依序询问每一个周边设备是否需要其效劳,有即给予效劳,效劳完毕后再问下一个周边,接着不断周而复始。轮询法的概念是由CPU定时发出询问,依序询问每一个周边设备是否需要其效劳,有即给予效劳,效劳完毕后再问下一个周边,接着不断周而复始。4、进程的调度算法有哪些?先来先效劳〔FCFS,firstcomefirstserve〕短作业优先〔SJF,shortestjobfirst〕最高优先权调度〔PriorityScheduling〕时间片轮转〔RR,roundrobin〕多级反响队列调度〔multilevelfeedbackqueue〕实时调度算法:最高截止时间优先EDF最低松弛度优先LLF5、什么是死锁?四个必要条件:互斥条件:系统存在着临界资源,资源不能被共享,只能由一个进程使用。恳求与保持条件:进程已获得了一些资源,但因恳求其他资源被堵塞时,对已获得的资源保持不放。不行抢占条件:有些系统资源是不行抢占的,当某个进程已获得这种资源后,系统不能强行收回,只能由进程使用完时自己释放。循环等待条件:假设干进程之间行为一种头尾相接的循环等待资源关系。以上四个条件是死锁的,而只要上述条件之一不满足,就不会发生死锁。解决死锁的根本方法:预防死锁:〔即破坏恳求和保持条件〕可剥夺资源:即当某进程的资源未满足时,释放已占有的资源〔破坏不行剥夺条件〕资源有序安排法:系统给每类资源赐予一个编号,每一个进程按编号递增的挨次恳求资源,释放则相反〔破坏循环等待条件〕避开死锁:最具有代表性的避开死锁算法是银行家算法解除死锁:当觉察有进程死锁后,便应马上把它从死锁状态中解脱出来,常用的方法有:剥夺资源:从其他进程剥夺足够数量的资源给死锁进程,以解除死锁状态撤销进程:可以直接撤销死锁进程或撤销代价最小的进程,直至有足够的资源可用,死锁状态消退为止;所谓代价是指优先级、运行代价、进程的重要性和价值等。6、程序编译与链接的过程是怎样的?cbuild过程可以分解为4个步骤:预处理,编译,汇编,链接编译预处理预处理过程主要处理那些源文件中的以”#”开头的预编译指令,主要处理规章有:将全部的”#define”删除,并开放所用的宏定义处理全部条件预编译指令,比方”#if”、”#ifndef”、”#elif”、”#endif”。处理”#include”预编译指令,将所包含的文件插入到该编译指令的位置,注:此过程是递归进展的。删除全部注释6. 保存全部的#pragma编译器指令。6. 保存全部的#pragma编译器指令。编译相应的汇编代码文件。这个过程是整个程序构建的核心局部。词法分析->语法分析->语义分析->中间代码生成->代码优化->目标代码生成->符号表治理->…汇编汇编器是将汇编代码转化为机器可以执行的指令,每一条汇编语句几乎都是一条机器执行。经过编译、链接、汇编输出的文件称为目标文件。链接链接的主要内容就是把各个模块之间相互引用的局部处理好,使各个模块可以正确的拼接。链接的主要过程包括地址和空间的安排、符号决议和重定位等步骤。7、静态链接和动态链接的区分静态库里的代码在编译期就会嵌入可执行文件。动态库在程序运行时,动态加载到内存,或者依据需要,随时被加载到内存。后续的更。文件会远远大于动态链接的。动态库:共享:动态库:共享:多个应用程序可以使用同一个动态库,启动多个应用程序的时候,只需要将动态库加载到内存一次即可。开发模块好:要求设计者对功能划分的比较好进去,应用程序相比照较大。但是假设多个应用程序使用的话,会被装载屡次,铺张内存。进去,应用程序相比照较大。但是假设多个应用程序使用的话,会被装载屡次,铺张内存。8、分页存储和分段存储有什么区分?定义分页:用户程序的地址空间被划分成假设干固定大小的区域,称为“页”,相应地,内存空间分离散安排。息。存储安排时,以段为单位,段与段在内存中可以不相邻接,也实现了离散安排。分页和分段的主要区分页式内容的页式内容的物理单位由于系统治理的需要。段是信息的规律单位满足用户的需要。息的性质来划分。分页的作业地址空间是一维的。分段的地址空间是二维的。Windows内存治理方式:段存储,页存储,段页存储。分页存储治理根本思想:用户程序的规律地址空间被划分成假设干固定大小的区域,称为“页”或者“页面”,相应地,内内存的任一块中,实现了离散安排。分段存储治理根本思想:储安排时,以段为单位,段与段在内存中可以不相邻接,也实现了离散安排。每段分成假设干个大小相等的页9、进程和线程的区分?个进程中的全部线程共享该进程所拥有的全部资源。线程是进程中的一个实体,线程是CPU调度和分派的最小单位。线程自己根本上不拥有系统资源,只拥有一点运行时必不行少的资源〔比方程序计数器、一组存放器和栈。一个进程中的全部线程共享该进程所拥有的全部资源。线程是属于进程的,当进程退出后,该进程中所产生的线程都会被强制退出并去除。线程占用的资源要少于进程所占用的资源。进程和线程都可以有优先级。进程间可以通过IPC通信,但线程不行以。一个线程可以创立和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。同一个进程中的两段代码不能够同时执行,除非引入线程。10、怎么理解线程安全?线程安全是指多线程访问同一代码,不会产生不确定的结果〔即不会存在二义性。编写线程安全的代码时依靠线程同步。线程安全问题都是由全局变量及静态变量引起的。线程安全问题都是由全局变量及静态变量引起的。安全。11、多线程如何同步?安全。它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒。等待,直到占用资源者释放该资源。线程互斥可以看成是一种特别的线程同步。线程间的同步方法大体可分为两类:用户模式和内核模式内核模式:指利用系统内核对象的单一性来进展同步,使用时需要切换内核态和用户态。用户模式:就是不要切换到内核态,只在用户态完成操作。用户模式下的方法有:原子操作〔例如一个单一的全局变量用户模式下的方法有:原子操作〔例如一个单一的全局变量,临界区内核模式下的方法有:大事,信号量,互斥量临界区保证在某一时刻只有一个线程能访问数据的简便方法访问此临界区的线程将被挂起,并始终持续到进入临界区的线程离开。临界区在被释放后,其他线程可以连续抢占,并以此到达用原子方式操作共享资源的目的。大事大事对象也可以通过通知操作的方式来保持线程的同步步操作。互斥量共享,而且可以在不同应用程序的线程之间实现对资源的完全共享。共享,而且可以在不同应用程序的线程之间实现对资源的完全共享。信号量信号允很多个线程同时使用共享资源,这与操作系统中的PV操作一样。它指出了同时访问时刻访问此资源的最大线程数目。总结:总结:临界区是效率最高的信号量可以设置允许访问资源的线程或进程个数,而不仅仅是只允许单个线程或进程访问资源。12、堆和栈有什么区分?栈区:由编译器自动安排释放,存放函数的参数值,局部变量的值等。堆区:一般由程序员安排释放,假设程序员不释放,程序完毕时可能由OS栈区:由编译器自动安排释放,存放函数的参数值,局部变量的值等。堆区:一般由程序员安排释放,假设程序员不释放,程序完毕时可能由OS回收。比方new,malloc全局区〔静态区:全局变量和静态变量的存储是放在一块的。文字常量区:常量字符串就是放在这里的。程序完毕后由系统释放。程序代码区:存放函数体的二进制代码。举个栗子:#include<iostream>#include<iostream>usingnamespacestd;inta=0;char*p1;main{intb;//全局初始化区//全局未初始化区//栈chars[“abc“; //栈char*p2; //栈char*p3=“123456“; //123456在常量区,p3在栈上staticintc=0; //全局〔静态〕初始化区*)malloc(10);*)malloc(20);//安排得来的10和20字节的区域就在堆区strcpy(p1,“123456“); //123456放在常量区,编译器可能会将它与p3所指向的“123456“优化成一个地方“123456“优化成一个地方}12345678910111213141516申请大小的限制:在windows下,栈是向低地址扩展的数据构造,是一块连续的内存的区域。所以栈顶的地址和栈的最大容量是系统预先规定好的。在windows下,栈的大下是2M〔也有的说是1M,总之是一个编译时就确定的常数〕overflow。因此,能从栈获得的空间较小。于计算机系统中有效的虚拟内存。堆是向高地址扩展的数据构造,是不连续的内存区域。这是由于系统是用链表来存储于计算机系统中有效的虚拟内存。因此,堆获得的空间比较灵敏,也比较大申请效率的比较:栈是由系统自动安排,速度较快。但程序员是无法把握的。堆是由new安排的内存,一般速度比较慢,而且简洁产生内存碎片,不过用起来最便利。13、进程间通讯的方式有哪些?各有什么优缺点?进程间通信又称进程间通信又称s方法。依据通信时信息量大小的不同,可以将进程通信划分为两个类型。低级通信:把握信息的通信〔主要用于进程间的同步、互斥、终止和挂起等把握信息的传递〕高级通信:大批数据信息的通信〔主要用于进程间数据块数据的交换和共享,常见的高级通信有管道,消息队列,共享内存等〕通讯的方式有:管道:是一种半双工的通信方式,数据只能单向流淌,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。知名管道:也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信。信号量:信号量是一个计数器,可以用来把握多个进程对共享资源的访问。不是用来他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。信号:是一种比较简洁的通信方式,用于通知接收进程某个大事已经发生。消息队列:是由消息的链表存放在内核中并由消息队列标识符表示。消息队列抑制了信号传递信息少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。,但多个进程都可以访问。共享内存是最快的通信方式,它是针对其他进程间通信。套接字:也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。优缺点总结:管道简洁便利,但局限于单向通信的工作方式,并且只能在创立它的进程及其子孙进程之间实现管道的共享。知名管道虽然可以供给应任意关系的进程使用,但是由于其长期存在于系统之中,使用不当简洁出错,所以一般用户一般不建议使用。通信时不再需要考虑同步问题,使用便利。但是消息队列中信息的复制需要额外消耗CPU的时间,不适宜于信息量大或操作频繁的场合。通信时不再需要考虑同步问题,使用便利。但是消息队列中信息的复制需要额外消耗CPU的时间,不适宜于信息量大或操作频繁的场合。共享内存针对消息缓冲的缺点改而利用内存缓冲区直接交换信息。14、进程的状态有哪些?〕〔进程把握块,向其中填写把握和治理运行,把此时进程所处状态称为创立状态。运行状态:进程处于就绪状态被调度后,进程进入运行状态。〔I/O恳求,申请缓存区失败运行状态:进程处于就绪状态被调度后,进程进入运行状态。〔I/O恳求,申请缓存区失败而临时无法运行。进程受到堵塞。在满足恳求时进入就绪状态等待系统调用。〔5〕终止状态:进程完毕,或消灭错误,或被系统终止,进入终止状态,无法再执行。状态转换分为六种状况:运行->就绪:1、主要是进程占用CPU的时间过长,而系统安排给该进程占用CPU的时间是有限的。2、在承受抢先式优先级调度算法的系统中,当有更高优先级的进程要运CPU,该进程便由运行状态转变为就绪状态。CPU。进程所等待的大事已经发生,就进入就绪队列。为I/O进程所等待的大事已经发生,就进入就绪队列。堵塞->就绪:以下两种状态是不行能发生的:堵塞->运行:即使给堵塞进程安排CPU,也无法执行,操作系统在进展调度时不会从堵塞队列进展选择,而是从就绪队列中选取。就绪->堵塞:就绪态根本就没有执行,谈不上进入堵塞态。15、什么是虚拟内存技术?系统。虚拟存储器是指具有恳求调入功能和置换功能系统。16、关于虚拟内存、虚拟内存地址、物理内存、物理内存地址关于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GA 2326-2025警用服饰移民管理警察国旗臂章及辅章
- 提升养老院安宁护理服务质量
- 妊娠巨吐的孕期护理论坛
- 牵引患者的护理伦理
- 婴儿早期音乐启蒙与培养
- 环保行业环境监测与治理技术集成方案
- 2026年软件代码辅助编写高效能新型研发设计模式
- 护理呼吸系统疾病护理
- 2026年全超导托卡马克EAST装置1亿摄氏度1066秒稳态运行刷新世界纪录技术解析
- 发电行业2025年度排放报告报送(3月31日前)指南
- 2025年中级社会工作师考试真题+答案
- 钇-90经动脉放射栓塞微球等核药研发与产业化项目(中试研发平台一期)报告书
- 酒吧股东合作协议范本
- 8 池子与河流【新课标版 教学课件】
- 六年级心理健康-尊重好朋友
- DB31∕T 1598-2025 城市轨道交通车辆寿命评估通 用要求
- 埋石混凝土挡墙监理实施细则
- 耕地保护和粮食安全责任工作总结
- 2025年新版新疆事业单位考试真题及答案
- 2025年广东省高职院校三二分段转段考试文化课测试(语文)
- 2026年西安医学高等专科学校单招职业倾向性测试题库必考题
评论
0/150
提交评论