1、系统调用和库函数的联系区别
区别:
系统调用(system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。
库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静态库或动态库)向程序员提供功能性调用。程序员无需关心平台差异,由库来屏蔽平台差异性。
联系:
跟内核功能与操作系统特性紧密相关的服务,由系统调用提供;具有共通特性的功能一般需要较好的平台移植性,故而由库函数提供。库函数与系统调用在功能上相互补充,如进程间通信资源的管理,进程控制等功能与平台特性和内核息息相关,必须由系统调用来实现。文件 I/O操作等各平台都具有的共通功能一般采用库函数,也便于跨平台移植。某些情况下,库函数与系统调用也有交集,如库函数中的I/O操作的内部实现依然需要调用系统的I/O方能实现。
2、进程与线程的区别
(1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
(2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进程至少包括一个线程。
(3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
(4)线程是轻量级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的。
(5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源
(6)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志
3、n 个进程 m 个同类资源,每个进程 i 需要资源 xi(1<=xi<=m),证明:当所有进程最大需求量之和小于 m+n,死锁无关。
解:设每个进程对共享资源的最大需求量为x(0<x≤m)
由于每个进程最多申请使用x个资源,在最坏的情况下,每个进程都得到了(x-1)个资源i,并且都需申请最后一个资源。
这时系统剩余资源数为:m-n(x-1)
只要系统还有一个资源可用,就可使其中的一个进程获得所需的全部资源。该进程运行结束后释放出它所占用的资源,其他进程的资源需求也可全部得到满足。
因此,当m-m(x-1)≥1时,即x≤(m+n-1)/n时系统不会发生死锁
进而可得系统中所有进程的最大需求量之和n・x≤(m+n-1)时系统不会发生死锁。
该题中,所有进程最大需求量之和小于m+n,所以,该系统是死锁无关的。
4、动态分区算法比较
动态分区算法不会产生内部碎片,但会产生外部碎片。
最先适应算法First-Fit:第一个满足要求的空闲块。-->高地址空间有大块的空闲分区;but外部碎片多,分配大块时慢。
最佳适应算法Best-Fit:满足要求的最小空闲块。-->大部分分配尺寸较小时效果较好,可避免大的空闲分区被拆分;but释放分区较慢,易产生许多无用的小碎片。
下一个适应算法Next-Fit:从上次分配的位置开始,第一个满足的空闲块。-->
最差适应算法Worst-Fit:满足要求的最大空闲块。-->中等大小的分配较多时效果最好,避免出现太多的小碎片;but释放分区较慢,易破坏大的空闲分区,后续难以分配大的分区。
5、spooling 组成
spooling系统的三大组成部分:
<1>输入井和输出井
<2>输入缓冲和输出缓冲
<3>输入进程SPi和输出进程SPo
SPOOLing 技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。
6、操作系统的体系结构
模块组合结构、层次结构、微内核结构。
操作系统分类:批处理操作系统、分时操作系统、实时操作系统、嵌入式操作系统、集群系统、网络操作系统、分布式操作系统
7、并发程序特点
间断性、失去封闭性、不可重现性。