操作系统面试持续总结中。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011366281/article/details/78405202

1、进程和线程的区别?

 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属于一个进程的其他线程共享进程拥有的资源。一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行。

2、进程间的通信如何实现?

进程通信是指进程之间的信息交换。有信号,信号量,消息队列,管道通信,共享内存,管道,套接字。

信号是使用信号处理器来进行的。

信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。

管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同机器间的进程通信。

3、并发和并行?

并发:一个处理器能同时处理多任务,并发性是指能处理多个同时活动的能力,病发时间不一定同时刻发生。

并行:多个处理器或多核处理器同时处理多个不同的任务,指同时发生的两个并发时间。

4、什么是虚拟内存?

虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小为4k,物理内存也被分页,每个页大小也是4k,这样,虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。

5、分段和分页?

用户程序的地址空间被划分为若干固定大小的区域,成为“页”,相应的,内存空间分成若干个块,页和块的大小相等。可将用户程序的任一页放在内存的任一块中,实现了离散分配。分页系统中,允许将进程的每一页离散的存储在内存的任一物理块中,为了能在内存中找到每个页对应的物理块,系统为每个进程建立一张页面映射表,简称页表。页表的作用是实现从页号到物理块号的地址映射。

分段:将用户程序地址空间分成若干个大小不等的段,每段可以定义一组相对完整的逻辑信息。存储分配时,以段为单位,段与段在内存中可以不相邻,也实现了离散分配。

页是信息的物理单位,分页是为实现离散分配方式(非连续分配),以便解决内存碎片问题,提高内存的利用率。分页能够更好的满足系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组意义相对完整的信息。分段的目的是为了能够更好的满足用户的需要。

页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分是由机器硬件实现的。段的长度不固定,决定于用户编写的程序

分页的地址空间是一维的,分段的地址空间是二维的(段号:段内偏移)。

常用的页面置换算法:

先进先出(置换次数比较多)

最近最少使用(LRU)

最近未使用(NUR)

6、windows下内存管理?

(1)虚拟内存:将页文件加载到内存,适用于比较大的对象或结构;

(2)内存映射文件:将磁盘上文件加载到内存,适用于大文件和单机的进程间内存共享;

(3)内存堆栈:动态的分配内存,适用于小对象的创建。

7、死锁?

在两个或多个并发进程中,如果每个进程持有某种资源而又都等待别的进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。通俗的讲,就是两个或多个进程被无限的阻塞、相互等待的一种状态。

原因:系统资源不足,进程推进顺序非法

产生死锁的必要条件:(1)互斥:一个资源每次只能被一个进程使用(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

预防死锁的四个方式:

(1)通过破除死锁的四个必要条件之一,来预防死锁产生,有两种方法,一种是当其申请的资源得不到满足时,也必须放弃其原先占有的资源;另一种是只适用于申请资源的进程优先级比占有该资源的进程优先级高时,如果一个进程申请的资源被其他进程占用,而申请进程的优先级较高,那么它可以强迫占有资源的进程放弃。

仔细的对资源进行动态分配,以避免死锁。

猜你喜欢

转载自blog.csdn.net/u011366281/article/details/78405202