且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

计算机系统相关面试问题

更新时间:2021-10-26 08:36:28

操作系统相关

1.什么是进程(Process)和线程(Thread)?有何区别?
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。
进程与应用程序的区别在于应用程序作为一个静态文件存储在计算机系统的硬盘等存储空间中,而进程则是处于动态条件下由操作系统维护的系统资源管理实体。
2.Windows下的内存是如何管理的?
3.Windows消息调度机制是?
4.描述实时系统的基本特性.
5.中断和轮询的特点


6.什么是临界区?如何解决冲突?
7.说说分段和分页.
页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。
段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。
页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。
分页的作业地址空间是一维的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。
8.说出你所知道的保持进程同步的方法?
进程间同步的主要方法有原子操作、信号量机制、自旋锁、管程、会合、分布式系统等。
9.什么是缓冲区溢出?有什么危害?其原因是什么?
10.什么是中断?中断时CPU做什么工作?


11.你知道操作系统的内容分为几块吗?什么叫做虚拟内存?他和主存的关系如何?内存管理属于操作系统的内容吗?
12.什么是死锁?其条件是什么?怎样避免死锁?
13.ThreadLocal与其它同步机制的比较。
Threadlocal 和其他所有的同步机制都是为了解决多线程中的对同一变量的访问冲突,在普通的同步机制 中,是通过对对象加锁来实现多个线程对同一变量的安全访问的。这时该变量是多个线程共享的,使用这种同步机制需要很细致的分析在什么时候对变量进行读写, 什么时候需要锁定某个对象,什么时候释放该对象的索等等。所有这些都是因为多个线程共享了该资源造成的。Threadlocal就从另一个角度来解决多线程的并发访问,Threadlocal会为每一个线程维护一个和该线程绑定的变量副本,从而隔离了多个线程的数据共享,每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进ThreadLocal。
14.进程通信方式有哪些?
15.同步的方式有哪些?
线程同步指多个线程同时访问某资源时,采用一系列的机制以保证同时最多只能一个线程访问该资源。线程同步是多线程中必须考虑和解决的问题,因为很可能发生多个线程同时访问(主要是写操作)同一资源,如果不进行线程同步,很可能会引起数据混乱,造成线程死锁等问题;
线程同步的方式:
临界区:通过对多线程的串行化来访问公共资源或者一段代码,速度快,适合控制数据访问
互斥量:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以可以保证公共资源不会同时被多个线程访问
信号量:它允许多个线程同一时刻访问同一资源,但是需要限制同一时刻访问此资源的最大线程数目。信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中PV操作相似。
事件(信号):通过通知操作的方式来保持多线程的同步,还可以方便的实现多线程的优先级比较的操作。

16.使用多进程与多线程有什么区别?
用多进程时,每个进程有自己的地址空间,线程则共享地址空间。所有其他区别都由此而来:
速度:线程产生的速度快,线程间的通信、切换快等,因为他们在同一个地址空间内。
资源利用率: 线程的资源利用率比较好,也是因为它们在同一个地址空间中。
同步问题: 线程使用公共变量/内存时,需要使用同步机制,还是因为他们在同一个地址空间内。
17.CPU中的缓存 和 OS 中的缓存分别是什么?
18.用户态和核心态的区别。
19.用户栈和内核栈的区别。
20.进程的有哪几种状态,状态转换图,及导致转换的事件。


21.线程的实现方式. (也就是用户线程与内核线程的区别)
22.进程调度算法。(周转时间 = 程序结束时间 -- 开始服务时间、带权周转时间= 周转时间 / 要求服务时间)
23.内存连续分配方式采用的几种算法及各自优劣。

24.LRU用程序如何实现?
25.基本分页、请求分页储存管理方式。
26.基本分段、请求分段储存管理方式。
27.分段分页方式的比较/各自优缺点。
28.几种页面置换算法,会算所需换页数。
29.虚拟内存的定义及实现方式。

 


本文转自邴越博客园博客,原文链接:http://www.cnblogs.com/binyue/p/3323407.html,如需转载请自行联系原作者