该【IT综合面试题大全 】是由【百里登峰】上传分享,文档一共【10】页,该文档可以免费在线阅读,需要了解更多关于【IT综合面试题大全 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更
,只拥有一点
在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同
属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间
。
管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而
且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程
关系。
有名管道(namedpipe):有名管道也是半双工的通信方式,但是它允
许无亲缘关系进程间的通信。
信号量(emophore):信号量是一个计数器,可以用来控制多个进程对
共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,
其他进程也访问资源。该因此,主
要作为进程间以及同一进程内不同线程之间的同步手段。
消息队列(meagequeue):消息队列是由消息的链表,存放在内核中并
由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载
无格式字节流以及缓冲区大小受限等缺点。
信号(inal):信号是一种比较复杂的通信方式,用于通知接收进程某
个事件已经发生。共享内存(haredmemory):共享内存就是映射一段能被
其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可
以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行
被称为“线程包”,用户线程是不能被操作系统所感知的。引入用户线程,
具体而言,有以下四个方面的优势:(1)可以在不支持线程的操作系统
中实现。
(2)创建和销毁线程、线程切换代价等线程管理的代价比内核线程
少得多。(3)允许每个进程定制自己的调度算法,线程管理比较灵活。
(4)线程能够利用的表空间和堆栈空间比内核级线程多。用户线程的缺
点主要有以下两点:
(1)同一进程中只能同时有一个线程在运行,如果有一个线程使用
了系统调用而阻塞,那么整个进程都会被挂起。
(2)页面失效也会产生类似的问题。
内核线程的优缺点刚好跟用户线程相。实反际上,操作系统可以使用
混合的方式来实现线程。
、。
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就
称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高
的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使
用当前进程的内核栈。每个进程都有自己的内核栈。当进
程在执行用户自己的代码时,则称其处于用户运行态(用户态)。即
此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程
序而突然被中断程序中断时,此时用户程序也可以象征性地称为处于进程
的内核态。因为中断处理程序将使用当前进程的内核栈。这与处于内核态
的进程的状态有些类似。
用户态切换到内核态的3种方式:系统调用、异常、外围设备中断。
、进程池、线程池。(c++程序员必须掌握)自定义内存池的思想
通过这个\池\字表露无疑,应用程序可以通过系统的内存分配调用预先一
次性申请适当大小的内存作为一个内存池,之后应用程序自己对内存的分
配和释放则可以通过这个内存池来完成。只有当内存池大小需要动态扩展
时,才需要再调用系统的内存分配函数,其他时间对内存的一切操作都在
应用程序的掌控之中。应用程序自定义的内存池根据不同的适用场景又有
不同的类型。从线程安全的角度来分,内存池可以分为单线程内存池和多
线程内存池。单线程内存池整个生命周期只被一个线程使用,因而不需要
考虑互斥访问的问题;多线程内存池有可能被多个线程共享,因此则需要
在每次分配和释放内存时加锁。相对而言,单线程内存池性能更高,而多
线程内存池适用范围更广。
从内存池可分配内存单元大小来分,可以分为固定内存池和可变内存
池。所谓固定内存池是指应用程序每次从内存池中分配出来的内存单元大
小事先已经确定,是固定不变的;而可变内存池则每次分配的内存单元大
小可以按需变化,应用范围更广,而性能比固定内存池要低。
,导致死锁的原因.
死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的
一种互相等待的现象,若无外力作用,
处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进
程.
原因:系统资源不足、进程运行推进的顺序不合适、资源分配不当等。
。
(1)互斥条件:一个资源每次只能被一个进程使用。
(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的
资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,
不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的循
环等待资源关系。。
1)忽略该问题。例如鸵鸟算法,该算法可以应用在极少发生死锁的
的情况下。为什么叫鸵鸟算法呢,(鸵鸟策略)2)检测死锁并且恢复。
(检测与解除策略)3)仔细地对资源进行动态分配,以避免死锁。(避
免策略)4)通过破除死锁四个必要条件之一,来防止死锁产生。(预防
策略)、避免死锁的方法。
通过破除死锁四个必要条件之一,来预防死锁产生,有两种方法,一
种是当其申请的资源得不到满时,足也必须放弃其原先占有的资源;另一
种方法是只适用于申请资源的进程优先级比占有该资源的进程优先级高时,
如果一个进程申请的资源被其它进程占用,而申请进程的优先级较高,那
么它可以强迫占有资源的进程放弃。仔细地对资源进行动态分配,以避免
死锁。
。(周转时间=程序结束时间--开始服务时间、带权
周转时间=周转时间/要求服务时间)???
(块式、页式、段式、段页式).内存管理
是操作系统中的重要部分,两三句话恐怕谁也说不清楚吧~~我先说个大
概,希望能够抛砖引玉吧当程序运行时需要从内存中读出这段程序的代码。
代码的位置必须在物理内存中才能被运行,由于现在的操作系统中有非常
多的程序运行着,内存中不能够完全放下,所以引出了虚拟内存的概念。
把哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load
入主存(物理内存)中。这个就是内存管理所要做的事。内存管理还有另
外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。内
存管理有块式管理,页式管理,段式和段页式管理。现在常用段页式管理。
块式管理:把主存分为一大块、一大块的,当所需的程序片断不在主
存时就分配一块主存空间,把程序片断load入主存,就算所需的程序片
度只有几个字节也只能把这一块分配给它。这样会造成很大的浪费,平均
浪费了50%的内存空间,但是易于管理。
页式管理:把主存分为一页一页的,每一页的空间要比一块一块的空
间小很多,显然这种方法的空间利用率要比块式管理高很多。
段式管理:把主存分为一段一段的,每一段的空间又要比一页一页的
空间小很多,这种方法在空间利用率上又比页式管理高很多,但是也有另
外一个缺点。一个程序片断可能会被分为几十段,这样很多时间就会被浪
费在计算每一段的物理地址上(计算机最耗时间的大家都知道是I/O吧)。
段页式管理:结合了段式管理和页式管理的优点。把主存分为若干页,
每一页又分为若干段。
。
1)单一连续分配是一种最简单的存储管理方式,其优点是软件理简处
单,最大缺点是存储器不能充分利用。多用于单用户微机操作系统中。
2)动态分区分配是多道程序环境下各种存储管理方式中最简单的一种。
它将内存划分成若干个分区,在每个分区中按照连续分配方式分配给一个
作业。分区形式:a)固定分区分配:指内存在理处作业前已被划分成若干
个大小不等的分区,存储管理程序根据每个作业步的最大存储量分配一个
足够大的分区给它。当找不到一个足够大的分区时,则通知作业调度挑选
另一作业,这种方式分配和回收内存简单,但内存利用不充分,会产生―
碎片‖空间。b)可变分区分配:指内存事先并未被分区,只有当作业进入
内存时,才根据作业的大小建立分区。其特点是分区的个数和大小都是可
变的,但需要建立分配区表和空白区表,且表的长度是不固定的。
3)可重定位分区分配为使各分区中的用户程序能移到内存的一端,使
碎片集中于另一端成为一个大分区,在程序执行过程中,需对作业移动过
程中的与地址有关项进行调整。这种分配方法的优点是清除碎片,更大程
度地利用内存空间,但必须硬件的支持,且要花费时间。
静态链接.
静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,
则无论你愿不愿意,lib中的指令都全部被接直包含在最终生成的E某E
文件中了。但是若使用DLL,该DLL不必被包含在最终E某E文件中,E
某E文件执行时可以“动态”地引用和卸载这个与E某E独立的DLL文件。
静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其
他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态
或静态链接库。静态链接库与静态链接库调用规则总体比较如下。
本分页、请求分页储存管理方式。?
、请求分段储存管理方式。?
。
a)页是信息的物理单位,分页是为实现离散分配方式,以消减内存的
外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,
而不是用户的需要(也是对用户透明的)。段是信息的逻辑单位,它含有
一组其意义相对完整的信息(比如数据段、代码段和堆栈段等)。分段的
目的是为了能更好的满足用户的需要(用户也是可以使用的)。
页面置换算法,会算所需换页数。(LRU用程序如何实现?)?
。
虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的―
后备力量‖而存在的,也就是说,只有在物理内存已经不够使用的时候,
它才会发挥作用。
改变页面文件位置的方法是:用鼠标右键点击―我的电脑‖,选择―
属性→高级→性能设置→高级→更改虚拟内存‖,在驱动器栏里选择想要
。并发性(concurrency):指在
计算机系统中存在着许多并发执行的活动。对计算机系统而言,并发是指
宏观上看系统内有多道程序同时运行,微观上看是串行运行。因为在大多
数计算机系统中一般只有一个CPU,在任意时刻只能有一道程序占用CPU。
共享性(haring):系统中各个并发活动要共享计算机系统中的各种软、
硬件资源,因此操作系统必须解决在多道程序间合理地分配和使用资源问
题。虚拟性(virtual):虚拟是操作系统中的重要特征,所谓虚拟是指
把物理上的一台设备变成逻辑上的多台设备。例如,在操作系统中采用了
pooling技术,可以利用快速、大容量可共享的磁盘作为中介,模拟多个
非共享的低速的输入输出设备,这样的设备称为虚拟设备。异步性:在多
道程序环境下允许多个进程并发执行,但只有进程在获得所需的资源后方
能执行。在单处理机环境下,由于系统中只有一台处理机,因而每次只允
许一个进程执行,其余进程只能等待。。
DMA方式,DirectMemoryAcce,也称为成组数据传送方式,有时也称
。
脱机输入和脱机输出
在多道环境下,可以用OS的一道管理程序实现从I/O设备输入数据
并存放到磁盘上,模拟脱机输入;用OS的另一道管理程序将磁盘上的数
据输出到I/O设备上,模拟脱机输出;这种假脱机I/O操作称为
Spooling技术。
Spooling是一种虚拟设备技术、一种资源转换技术。
几种方式,及各种优劣。
连续分配:为每一个文件分配一组相邻接的盘块;物理上形成了顺序
文件结构;外存上会出现―碎片‖,用―紧凑‖的方法解决。优缺点:顺
序(批量)访问容易、速度快;要求有连续的存储空间(有时需要作紧凑
处理)、必须事先知道文件的长度。
链接分配:离散分配方式。优缺点:消除了―碎片‖,有利于文件的
增/删/改。隐式链接在文件的每个目录项中,都含有指向链接文件第一盘
块和最后一个盘块的指针,只适合于顺序访;显式链接,把用于链接文件
各物理块的指针,显式地存放在内存的一张―链接表‖中。索引分配:单
级索引分配每个文件一个索引块(表);多级索引分配当文件较大,需要
很多个索引块时,可以为各索引块建立一个索引表(块);混合索引分配
方式。
IT综合面试题大全 来自淘豆网m.daumloan.com转载请标明出处.