当前位置: 首页 > news >正文

操作系统基础知识

一. 进程

进程是正在运行中的程序,是动态的

进程是资源分配的最小单位

进程的基本特征:动态性,并发性,独立性,异步性

二. 线程

线程在执行过程中的每一个任务就是一个线程

进程是由一个或多个线程组成,线程之间共享进程的资源

线程时CPU调度的最小单位

三. 处理机管理

进程的三种基本状态:运行,就绪,阻塞

(1) 运行:进程占有处理器正在运行

(2) 就绪:进程已经具备运行条件,等待系统分配处理器以便运行

(3) 阻塞:又称睡眠态,是指进程不具备运行条件,正在等待某个事件的完成

进程的三种状态的相互转换

运行→阻塞:等待使用资源或某事件发生。例如等待外设传输、等待人工干预。

阻塞→就绪:资源得到满足或某事件已经发生。例如外设传输结束、或是人工干预完成

就绪→运行:当CPU空闲时,被调度算法选中的一个进程,被CPU分配资源,开始运行。

运行→就绪:CPU分配的运行时间片用完,或出现有更高优先权进程。

四. 进程的4个重要概念

1. 进程同步

同步是指多个相互合作的进程在某些确定点上协调工作顺序的过程。是进程之间的直接制约关系。

例如进程B需要得到进程A的数据才能进行后续工作,没有数据时被阻塞,有数据时才被唤醒。

2. 进程互斥

宏观上互斥也是一种同步。各种进程可以共享系统的资源,但有些资源一次只能供一个进程使用(例如打印机),也称为临界资源。是进程之间的间接制约关系。

当一个进程使用临界资源时,另一个进程必须等待,只有资源被释放,进程才会解除阻塞状态

临界资源:一次仅允许一个进程使用的共享资源称为临界资源,这样进程间就要采取互斥方式来对这种资源进行共享

临界区:人们把进程中访问临界资源的那段代码称为临界区

3. 信号量机制

信号量是解决进程同步与互斥的工具,信号量可以分为两类:

一类是公用信号量,用于实现进程间的互斥,初值等于1或资源数量

另一类是私有信号量,用于实现进程间的同步,初值等于0或正整数

信号量S>=0时,表示某资源的可用数量,当S<0时,表示阻塞队列中等待资源的进程数量

4. PV操作

PV操作用来实现进程同步与互斥。P操作时申请一个资源,V操作表示释放一个资源

实现互斥的方法:信号量设置为1,当进程使用资源时执行P操作,释放资源时执行V操作

实现同步的方法:将信号量S与消息关联,当S等于0表示没有消息,当S不等于0表示有消息。进程B调用P操作信息是否到达,进程A调用V操作通知消息   已经准备好。

五. 进程死锁

当多个进程竞争使用资源时,可能每个进程要求的资源都已经被另一个进程占用。于是,也就没有任何一个进程能继续运行,这种情况称为死锁。

产生死锁的情况主要有:
进程推进顺序不当引起的死锁、同类资源分配不当、PV操作使用不当

死锁的预防方法:

打破互斥条件、打破不可抢占条件、打破占有且申请条件。(保证至少有1个进程获取足够的资源)

设m是资源数量,n是进程数量,w是每个进程需要的资源数量
不死锁公式: m>=n(w-1)+1 [ 资源数量>= 进程数量(每个进程需要的资源数量-1)+1]情况1:m=4,n=3,w=2,不死锁公式m>=n(w-1)+1 代入公式 4>=3(2-1)+1 结果 4>=4,不死锁情况2:m=4,n=3,w=3,不死锁公式m>=n(w-1)+1 代入公式 4>=3(3-1)+1 结果 4>=7,死锁!

六. 进程调度算法

先来先服务算法:进程按照进入就绪队列的顺序占用处理器的资源,
优先数算法:对每个进程设置一个优先数,优先数高的进程先使用处理器资源。
时间片轮转算法:进程使用一次处理器的最长时间称为“时间片”,队列中的进程按时间片轮流使用处理器资源。
分级算法:系统设置多个就绪队列,每个就绪队列中的进程按时间片轮流占用处理器资

七. 存储管理


八. 设备管理

 九. 文件管理

 十. 作业管理

进到内存之后被进程调度算法 

相关文章:

  • C语言面试题11至20题
  • 冶金比例换向阀放大器
  • 【TB作品】msp430f5529单片机,dht22,烟雾传感器
  • JVM之【GC-可达性分析算法】
  • redis面试知识点
  • oracle 还原被覆盖的视图
  • 算法每日一题(python,2024.05.29) day.11
  • 【Java基础-注解】Java中注解的分类有哪些,如何自定义一个注解,并使用举例
  • String常用操作
  • HashMap与Hashtable的异同
  • C语言:学生成绩管理系统(含源代码)
  • 【机器学习】机器学习与AI大数据的融合:开启智能新时代
  • Redis教程(十九):Redis的Redisson布隆过滤器
  • 定义类并创建类的实例
  • 【EFK日志系统】在kibana操作索引模板、生命周期、管道等
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • AngularJS指令开发(1)——参数详解
  • canvas 五子棋游戏
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • KMP算法及优化
  • LeetCode29.两数相除 JavaScript
  • MySQL主从复制读写分离及奇怪的问题
  • Redis在Web项目中的应用与实践
  • swift基础之_对象 实例方法 对象方法。
  • Vue实战(四)登录/注册页的实现
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 收藏好这篇,别再只说“数据劫持”了
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 推荐一个React的管理后台框架
  • 网页视频流m3u8/ts视频下载
  • 小程序 setData 学问多
  • 学习HTTP相关知识笔记
  • 由插件封装引出的一丢丢思考
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​渐进式Web应用PWA的未来
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #宝哥教你#查看jquery绑定的事件函数
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #微信小程序:微信小程序常见的配置传旨
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (Oracle)SQL优化基础(三):看懂执行计划顺序
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)菜鸟学数据库(三)——存储过程
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • ..回顾17,展望18
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET和.COM和.CN域名区别
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc