计算机操作系统

计算机操作系统

1.进程管理

1.1 基础概念

进程&线程
进程是操作系统资源分配的基本单位。一个进程运行时,会获取必要的CPU、内存地址空间,以及运行时必要的IO设备。
线程则是执行调度的最小单位。一个进程会由一个线程或者多个线程执行调度任务。多个线程之前共享进程资源,也有自己的私有资源(程序计数器,方法栈)。

比如一个音乐播放器上,播放器是一个进程,播放器上的听歌和下载音乐就是两个线程

并发&并行
并发是值一段时间内,有多个应用可以一同执行或者发生。看起来每个程序都在进行,但是实际在这段时间内的更小的时间片上,是交替执行的。
并行则是指多个事件可以在同一时刻发生,通过多核CPU可以实现并行,一个时刻一个CPU只有一个程序在运行,强调的是时刻的概念。

内中断&外中断
在操作系统中,主要通过中断来控制不同程序的交互。
当发生中断时,CPU会陷入·核心态,暂停当前运行的进程,由操作系统对中断进行处理
中断一般分为内中断和外中断
内中断:来自CPU内部,和当前的指令有关,也叫异常、陷入
外中断:来自CPU外部,指令无关,外部中断实质是外部设备发起的一些中断请求(键盘、鼠标等)

不同中断之前,存在一定优先级,操作系统优先处理优先级较高的中断
每执行一个指令后,CPU检查是否由中断信号,如果存在中断信号,CPU会保护被中断进程的CPU环境(进程id,寄存器、进程调度信息(进程状态、优先级、事件)等),存在在PCB中

中断

1.2进程管理

为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block)
PCB用于描述和控制进程运行的通用数据结构,记录进程当前状态和进程运行的全部信息,是进程存在的唯一标识。其,主要包括以下信息

  • 进程标识符:pid
  • 处理机状态信息:通用寄存器,指令寄存器,用户栈指针(保存&恢复)
  • 进程调度信息:进程优先级,进程状态,时间信息(等待&执行)

1.2.1进程状态

CPU会更具进程状态进行调度,
进程有以下状态:
就绪态:PCB、内存、堆栈空间等资源分配好,只差CPU的状态
执行态:进程获取CPU正在执行
阻塞态:进程中断放弃CPU的状态
创建状态:拥有PCB,但是其他资源未就绪
中止态:进程结束由系统清理或者归还CPU的状态
在这里插入图片描述

1.2.2进程调度

操作系统通过进程调度决策哪个就绪态的进程可以获取CPU使用权
当进程主动终止、时间片结束、或者中断时,会触发进程调度
进程调度一般分为两种方式:

  • 抢占式:操作系统可以剥夺进程CPU使用权(通用系统,切换频繁,相对公平)
  • 非抢占式:只能由当前进程主动终止(专用系统,进程切换少,不公平)

进程调度主要有以下方法
1.先来先服务算法
不考虑用户体验&吞吐
2.短进程优先调度算法
考虑吞吐&不考虑长进程
3.最短剩余时间优先
考虑吞吐&不考虑长进程
此外,也可能无法预估进程剩余时间
4高优先级调度算法
考虑优先级
5.时间片轮转调度算法
相对公平,但是优先级
6反馈法(高优先级+先来先服务+时间片)
考虑优先级
执行越多,掉优先级
7多级反馈队列调度算法
考虑优先级+吞吐量
执行越多,掉优先级,不同优先级时间片不一致,优先级第时间片高

1.2.3 进程信息同步

临界资源:(哲学家进餐问题)作为共享资源,但是有不能同时被多个进程使用的资源。当有进程在使用临界资源时,其他进程需要根据操作系统同步机制等待资源释放后重新竞争共享资源。
进程同步:主要在于协调临界资源使用次序,保障多个进程并发执行时的资源协调和合作
原则:空闲让进,忙则等待,等待有限,等待让权(CPU)

进程同步

1.fork系统调用创建子进程:此时子进程代码段是与父进程共享以外,其他所有的都是得到父进程的一个副本(内存),但是子进程可以消费父进程的匿名管道,以此通信。管道的本质就是内核在内存中开辟了一个缓冲区,这个缓冲区与管道文件相关联,对管道文件的操作,被内核转换成对这块缓冲区的操作
2.有名管道:内核内存创建有名管道,可以不同进程通信,FIFO,无格式字节流
3.消息队列:消息队列的本质就是存放在内存中的消息的链表,而消息本质上是用户自定义的数据结构。于用户进程写入数据到内存中的消息队列时,会发生从用户态拷贝数据到内核态的过程;同样的,另一个用户进程读取内存中的消息数据时,会发生从内核态拷贝数据到用户态的过程。因此,如果数据量较大,使用消息队列就会造成频繁的系统调用,也就是需要消耗更多的时间以便内核介入。
4.共享内存:允许不相干的进程将同一段物理内存连接到它们各自的地址空间中,使得这些进程可以访问同一个物理内存,最快
5 信号量:共享内存无法保证内存同步,可以借助信号量进行同步。PV操作

6.套接字:不同机器间通信
进程同步

1.2.4 进程死锁

死锁&饥饿
死锁:指多个进程在竞争资源或者由于彼此通信造成永久等待的阻塞现象。
饥饿:长期得不到资源导致进程无法推进
当资源不足或者进程顺序调度不当就会产生死锁
死锁的4个必要条件
1.互斥使用资源
2.资源不可抢占
3.请求保持条件:保持一个资源不释放,有请求新资源
4.环路等待,资源环路

接触死锁就需要破坏上面4个条件之一即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/105978.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5分钟生成10条短视频,AI重构电商营销

点击关注 文|姚 悦,编|王一粟 “我们将正式告别过去单一渠道投放的时代,走向一站式跨渠道品效联合经营的全新时代。”9月6日,在2023年其最重要的营销峰会上,淘天集团阿里妈妈市场部总经理穆尔说道。 当天…

在自定义数据集上实现OpenAI CLIP

在2021年1月,OpenAI宣布了两个新模型:DALL-E和CLIP,它们都是以某种方式连接文本和图像的多模态模型。CLIP全称是Contrastive Language–Image Pre-training,一种基于对比文本-图像对的预训练方法。为什么要介绍CLIP呢?因为现在大火…

【Word】页眉编辑小技巧

页眉编辑小技巧 1 奇偶页不同2 仅设置正文有页眉3 页眉设置信息为章节内容参考 1 奇偶页不同 2 仅设置正文有页眉 1、定位到目录页之后,点击“布局——分隔符——分节符中的下一页”,在目录页和正文之间插入一个分节符,使得目录页和正文成为…

迷你无人车 Navigation 导航(3)

迷你无人车 Navigation 导航&#xff08;3&#xff09; 自己实现了对于迷你无人车关节的控制&#xff0c;由于原本的关节布置仅支持阿克曼转向&#xff0c;因此先进行阿克曼转向的控制 修改 URDF 文件 添加 transmission 标签&#xff0c;定义关节的驱动 <transmission …

Java“牵手”ebay商品详情数据,ebay商品详情API接口,ebayAPI接口申请指南

天猫平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

python关闭指定进程以excel为例

先说下环境&#xff1a; Excel版本&#xff1a; Python2.7.13和Python3.10.4并存。 2、打开两个excel工作簿 看进程是这样的&#xff1a; 3、用python编程kill进程 # -*- coding: utf-8 -*- import os proc_nameEXCEL.EXE if __name__ __main__:os.system(taskkill /im {} /…

SSM - Springboot - MyBatis-Plus 全栈体系(六)

第二章 SpringFramework 四、SpringIoC 实践和应用 3. 基于 注解 方式管理 Bean 3.1 实验一&#xff1a;Bean 注解标记和扫描 (IoC) 3.1.1 注解理解 和 XML 配置文件一样&#xff0c;注解本身并不能执行&#xff0c;注解本身仅仅只是做一个标记&#xff0c;具体的功能是框…

Kafka3.0.0版本——消费者(消费者组初始化流程图解)

一、消费者组初始化流程图解 每个consumer都发送JoinGroup请求&#xff0c;如下图所示&#xff1a; 选出一个consumer作为leader&#xff0c;如下图所示&#xff1a; 把要消费的topic情况发送给leader 消费者&#xff0c;如下图所示&#xff1a; leader会负责制定消费方案…

jupyter 格式化与快捷键

1、标题&#xff1a; # 一级标题 ## 二级标题 ### 三级标题 2、 加粗文本&#xff1a; **加粗文本** 3、斜体文本&#xff1a; _斜体_ 4、删除线 ~删除线~ 5、高亮文本 高亮文本 6、区块引用 > 我是引用文字 >> 我是第二层 >&g…

自然语言处理-词向量模型-Word2Vec

通常数据的维度越高&#xff0c;能提供的信息也就越多&#xff0c;从而计算结果的可靠性就更值得信赖 如何来描述语言的特征呢&#xff0c;通常都在词的层面上构建特征&#xff0c;Word2Vec就是要把词转换成向量 假设现在已经拿到一份训练好的词向量&#xff0c;其中每一个词都…

cmake构建和编译

什么是CMake&#xff1f; CMake本身是一个工具集&#xff0c;由五个可执行的程序组成&#xff1a;cmake、ctest、cpack、cmake-gui和ccmake&#xff0c;其中cmake可以说是出镜率最高的明星级别程序了&#xff0c;它用于在构建项目的第一步&#xff0c;进行项目的配置、生成和构…

NLP(1)--NLP基础与自注意力机制

目录 一、词向量 1、概述 2、向量表示 二、词向量离散表示 1、one-hot 2、Bag of words 3、TF-IDF表示 4、Bi-gram和N-gram 三、词向量分布式表示 1、Skip-Gram表示 2、CBOW表示 四、RNN 五、Seq2Seq 六、自注意力机制 1、注意力机制和自注意力机制 2、单个输出…