面试问题汇总二:操作系统

一、进程和线程

这是基本上都会被问的,我之前其实也没精心准备过,因为感觉自己其实学的还可以,但是被问到就是没办法清晰地说出。

进程是程序运行时的状态,是系统资源调度和分配的基本单位,实现了操作系统级的并发

线程是进程的子任务,是cpu调度的基本单位,保证实时性,实现进程内部的并发

一个程序至少对应一个进程,一个进程至少拥有一个线程

进程拥有独立的内存空间,进程之间内存空间相互独立,同一个进程的线程之间共享内存空间

二、进程的几种状态

三、进程间通信

1.共享内存模型,开辟一块内存可供进程访问使用,需要访问共享内存的 进程需要将这块内存加入自己的地址空间,使用共享内存时需要进行同步互斥操作,防止进程通知访问

2.消息传递模型,分为直接传递和间接传递,直接传递使用send和receive原语即可实现,间接传递借助类似邮箱的结构暂存,这里没有过多介绍

3.管道,连接读写进程,读/写只能在一端进行

四、死锁

死锁是由于进程间争夺资源导致的一种僵局,进程A占用资源a,同时申请资源b,只有申请到资源b之后,执行完才可以释放全部资源,而此时进程B占用资源b,同时申请资源a,只有申请到资源a之后,执行完才能释放全部资源,这时进程A和进程B就进入了一种相互等待的状态

死锁的四个条件:互斥 保持并申请 不可剥夺 环路等待

避免死锁方法:银行家算法参考博客

五、几种进程调度算法

先来先服务算法,短进程优先调度算法,时间片轮转调度算法,多级反馈队列调度

这几个算法原理比较简单,不多说了

六、内存管理

三种存储管理方式:页式,段式,段页式

页式管理:由操作系统规定页大小,由于大小固定,不会造成外部碎片,但是页内可能不会完全分配,造成内部碎片

段式管理:由程序员规定,好处是不会有内部碎片,但是需要寻找一块足够大的内存,同时容易造成外部碎片

段页式管理:结合上述两种特点

虚拟内存:每个进程有自己独立的地址空间,默认内存大小可以支持这些进程的内存需要,实际存储在硬盘中,执行时需要通过地址转换将虚拟地址转换为物理地址

页置换算法:FIFO,LRU,LFU,OPT

发布了63 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/LieberVater/article/details/104930413