目录
3. 什么是虚拟继承?他是如何解决菱形继承数据冗余和二义性问题的?
1.静态库和动态库如何制作及使用,区别是什么
静态库和动态库是用于代码重用和共享的两种常见的库文件格式。
静态库是一组预编译的目标文件的归档文件,其中包含了函数和数据的实现。制作静态库需要先将源代码编译成目标文件,然后使用静态库管理工具(如ar)将这些目标文件打包成一个归档文件(通常以.a为后缀)。使用静态库时,链接器会将整个静态库的代码和数据复制到最终可执行文件中,因此最终可执行文件会变得较大。每次使用静态库时,都会将其完整复制到可执行文件中,因此多个可执行文件共享同一个静态库时会造成冗余。
动态库是在运行时加载的共享目标文件,其中包含了函数和数据的实现。制作动态库需要将源代码编译成共享目标文件(通常以.so为后缀),并生成一个描述该动态库的链接器脚本。使用动态库时,链接器不会将整个动态库的代码和数据复制到最终可执行文件中,而只是在运行时动态加载所需函数和数据。这样可以减小最终可执行文件的大小,并且多个可执行文件可以共享同一个动态库,减少冗余。
区别:
1. 静态库在链接时被完整地复制到最终可执行文件中,而动态库在运行时被动态加载。
2. 静态库使得最终可执行文件变大,而动态库使得最终可执行文件变小。
3. 静态库每次使用都会复制到可执行文件中,可能造成冗余,而动态库可以被多个可执行文件共享,减少冗余。
2.说一说进程调度算法有哪些?
1. 先来先服务(FCFS)调度算法 先来先去服务调度算法是一种最简单的调度算法,也称为先进先出或严格排队方案。每次调度都是从后备作业(进程)队列中选择一个或多个最先进入该队列的作业(进程),将它们调入内存,为它们分配资源、创建进程,当每个进程就绪后,它加入就绪队列。当前正运行的进程停止执行,选择在就绪队列中存在时间最长的进程运行。
2. 短作业优先(SJF)调度算法 短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业(进程),将它们调入内存运行,短进程优先(SPF)调度算法从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或者发生某件事而阻塞时,才释放处理机。
3. 优先级调度算法 优先级调度算法又称优先权调度算法,该算法既可以用于作业调度,也可以用于进程调度,该算法中的优先级用于描述作业运行的紧迫程度。在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最髙的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列;在进程调度中&#