程序员面试宝典16章操作系统整理笔记及补充(个人理解整理版)

来源:互联网 发布:Angelababy演技 知乎 编辑:程序博客网 时间:2024/06/06 19:57
因为找实习,很多公司都要看技术博客,大部分笔记,BUG修复之类的都写在印象笔记上,现在开始往上面搬。
1.进程
作业:作业=用户程序+所需数据+控制命令;是用户在一次阶梯或者一个食物处理过程中要求计算机系统所做的工作。
进程:一个程序在一个数据集合上的一次运算过程,是资源分配的基本单位。
线程:是进程中的一个实体,是被系统独立调度和执行的基本单位
管程:管程=数据结构+并发进程所执行的一组操作(操作实质是同步进程和改变管程中的数据)
2.进程间通信方式(IPC)
@1.信号
@2.信号量
@3.消息队列:一个消息队列可以被多个进程所共享。消息中除了Message还具有一个标志,用来标识由哪个进程或者哪类进程接受。
@4.共享内存
@5.管道,有名管道
@6.套接字socket
3.互斥
mutex(互斥器)用于进程之间互斥
critical section是线程之间的互斥
4.死锁
@1.四个必要条件:互斥条件,请求与保持条件,不剥夺条件,循环等待条件
@2.死锁避免:破坏部分分配条件,破坏不剥夺条件、破坏循环等待条件
*互斥条件无法被破坏
5.fork()
fork的意思是进程分叉,分成两个进程,一个父进程,一个子进程
6.进程三态
@1.Ready(就绪)
@2.Runing(执行)
@3.Blocked(阻塞)
7.静态链接库和动态链接库
@1.静态链接库
.lib中的指令全部被直接包含在最终生成的exe文件中
@2.动态链接库DLL(也称为导入库)
如果使用动态库,dll不比被包含在最终exe中
8.内存管理(三种)
页式管理:页式虚拟地址与内存地址简历一一对应页表,页式管理采用请求调页或者预调页技术来实现内外存存储器的统一管理。
优点:没有外碎片,每个内碎片不超过页的大小
段式管理:把程序按内容或过程函数关系分成段,每段有自己的名字。以段为单位分配内存,然后通过地址映射把段式虚拟地址转换为实际内存地址。
优点,方便编写和变异,缺点会产生碎片
段页式管理:系统为每个作业或进程建立一张段表。每个段又建立一张页表
随着软件增加,负责性和开销就随之增加了,另外需要的硬件以及占用的内存也会增加,执行速度下降。
9.X86
X86:32为IntelCPU
X64是X86_64标示加入64地址扩展的32为CPU
IA64:纯64位
amd64:32位兼容64位
10.Belady现象指:在FIFO算法中,出现分配页面增多,缺页率反而提高的一场现象。
11.Thrashing(内存抖动)
一般存在于内存分配算法不好,内存太小或者程序算法不佳引起的页面频繁调入调出的行为。
12.著名算法银行家算法避免死锁。
13.著名页面置换算法
@1.最佳置换算法(OPT)实际是不可行的
@2.先入先出置换算法(FIFO):只有在按线性顺序访问地址空间时才是理想的,否则效率不高。而且可能存在Belady异常现象。
@3.最近最久未使用(LRU)算法
LRU算法是经常采用的页面置换算法,并被认为是相当好的,但是,LRU算法需要实际硬件的支持,实现方法两种:1.计数器2.栈
@4.Clock置换算法(和LRU算法近似)
@5.最少使用(LFU)置换算法
为内存中的每个页面设置一个移位寄存器,用来记录该页面被访问的频率,用来选择最近时期最少的页面作为淘汰页。因为单位时间访问次数极多,所以无法用计数器来记录访问次数,使用移位寄存器。
需要笔记分享的,可以发邮件到我邮箱,sa515044@mail.ustc.edu.cn,写明需要哪一章,谢谢。
0 0
原创粉丝点击