前言
操作系统对于我们理解计算机的运行非常重要,无论是面试还是工作过程中的需要,掌握好操作系统的底层运行原理对于我们学习的提升有重大的帮助,接下来的几章节我将带大家系统的复习一遍操作系统。
提示:以下是本篇文章正文内容,下面案例可供参考
一、中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
1.中断的分类
这里我们主要抓住信号的来源来区分中断的类型
2.硬中断和软中断
这里插入一个知识点,关于硬中断和软中断:
(1) 硬中断由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
(2) 软中断为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
硬中断和软中断的区别软中断是执行中断指令产生的,而硬中断是由外设引发的。硬中断的中断号是由中断控制器提供的,软中断的中断号由指令直接指出,无需使用中断控制器。硬中断是可屏蔽的,软中断不可屏蔽。硬中断处理程序要确保它能快速地完成任务,这样程序执行时才不会等待较长时间,称为上半部。软中断处理硬中断未完成的工作,是一种推后执行的机制,属于下半部。
二、系统调用
1.什么是系统调用
三,进程
1.什么是进程
2. 进程的组织方式
3 .进程的特征
4. 进程的几种状态及其转换
5.进程间的通信
这里引用小林的博客我觉得讲的非常不错的:小林coding 这里概括了它的一些应用场景和优缺点, 面试可以和面试官深入聊聊。
6. 进程的调度
低级调度(重点):
7. 作业调度算法
先到先服务,短作业优先,高响应比算法比较:
重点介绍一下高响应比算法:
8. 进程调度算法
(重点区分哪些调度算法是进程调度哪些是作业调度)
引入了下面这种调度算法:
这里有一个例子可以理解这个算法:多级反馈调度算法
9. 进程的同步与互斥
实现进程互斥的软件实现方法:
实现进程互斥的硬件实现方法:
四. 死锁
1. 管程
就我理解的话:管程相当于封装好的PV操作,就拿生产者和消费者这个例子来说,相当于把共享资源放在一个管程中,每次生产者消费者要访问共享资源都需要通过管程的方法(函数)来访问,类似于一个管家,生产者把东西交给管家,消费者从管家手里拿东西,这个管家每次只能处理一件事情(进程),不能同时拿和取操作。
2. 死锁的必要条件
3. 死锁的预防
把打印机改造成一个共享设备,相当于把每个进程的请求放入到队列中,再依次进行处理。而不用像之前需要阻塞住进程。
假如A进程需要资源1,B进程需要资源2,C进程同时需要资源3,假如有源源不断的A类或者B类资源,那么C类资源会长时间得不到满足,进而发生饥饿。
在介绍银行家算法之前,先提出一个问题,死锁避免和死锁预防有什么区别?
死锁防止是破坏产生死锁的四个条件(互斥条件,占用和等待条件,不剥夺条件,循环等待条件)
死锁避免仅根据当前进程申请资源的情况判断是否会进入不安全状态。当问到银行家算法是破坏哪个死锁必要条件的时候,显然这种提问就是错误的,人家是死锁避免算法,压根就不是死锁预防。
4. 银行家算法
总结下来一句话:当进程请求的资源数大于系统所拥有的资源数,则不给予分配,否则会使系统处于不安全的状态,银行家算法是逐一分析每个进程是否处于安全状态来分配资源的。
五. 内存
1. 内存的基础知识
我们的程序在装入的这个阶段才开始完成逻辑地址到物理地址的映射,结合Java类的加载过程:
类加载器就是寻找类或接口字节码文件进行解析并构造JVM内部对象表示的组件,在java中类装载器把一个类装入JVM,经过以下步骤:
1、加载:查找和导入Class文件
2、链接:其中解析步骤是可以选择的 (a)检查:检查载入的class文件数据的正确性 (b)准备:给类的静态变量分配存储空间 (c)解析:将符号引用转成直接引用
3、初始化:对静态变量,静态代码块执行初始化工作
————————————————
版权声明:本文为CSDN博主「爆米花9958」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuemengrui12/article/details/82707473
我们在链接的解析过程:将符号引用转化为直接引用,其实就是一个逻辑到物理地址的映射。
2. 内存分配
3. 动态分区算法总结
4. 分页管理
5. 分页地址变换过程
总结
没写完 回去补充