浅谈操作系统和进程

news2024/12/23 23:59:09

前言

操作系统是一个软件,对下要管理硬件设备,对上要给软件运行提供稳定的运行环境。操作系统是软硬件及用户之间交互的媒介。最常见的操作系统有Windows 98,2000,xp,vista,win7,win8,win10,win11,linux,mac,ios(与mac同宗同源)。

操作系统的定位:

 进程:

进程是操作系统资源分配的基本单位,每个进程都对应一些资源。一个跑起来的程序就是一个进程,进程(process)也叫做任务(task)。

       进程是一个重要的“软件资源”,是由操作系统内核负责管理的。操作系统通过“描述+组织”的方式进行管理进程,其中描述就是讲清楚都有哪些特征,组织就是通过一定的数据结构,把多个这样的基本单位串起来。操作系统基本上都是C/C++写的,使用C语言的结构体来描述进程属性,有一个名字叫做PCB(进程控制块)。通过双向链表来把多个PCB串到一起,创建一个进程,本质上就是创建一个PCB这样的结构体对象,把它插入到链表中。销毁一个进程,本质上就是把链表上的PCB节点删除掉。在任务管理器查看到进程列表,本质上就是遍历这个PCB链表。

那么PCB是怎么描述进程的特征的呢?

1.pid进程的身份标识符(唯一的数字)

2.内存指针,指向了自己的内存是哪些

3.文件描述符表,表示硬盘上的文件等资源

其中内存指针和文件描述符表描述了进程持有了哪些硬件资源。

4.进程调度相关的属性

 

 因为CPU是有限的,但是进程数量一般地都是成百上千个,这样一个“狼多肉少”的局面,操作系统就要合理的调度这些进程(并行+并发)。

1.进程状态

就绪状态(随叫随到)、运行状态、阻塞状态(短时间内无法到CPU上执行,比如该进程在进行密集的IO操作)

2.优先级

进程也是需要分优先级的,先调用谁后调用谁,谁分配的资源多谁分配的资源少

3.上下文

操作系统在进行进程切换的时候,就需要把进程执行的“中间状态”记录下来保存,下次这个进程再被执行的时候就可以恢复到上次的状态,继续往下执行。上下文本质上就是存档的内容,进程的上下文就是CPU中各个寄存器的值,保存上下文就是把这些CPU寄存器的值记录保存到内存中,恢复上下文就是把内存中的这些寄存器值给恢复回去。

4.记账信息

操作系统统计每个进程在CPU上占用的时间和执行的指令数量,根据这个来决定下一阶段该如何调度。

进程的虚拟地址空间

程序中所获取到的内存地址,并非是真的物理内存的地址.而是经过了一层抽象,虚拟出来的地址。针对进程使用的内存空间,进行"隔离"引入了虚拟地址空间。代码里不再直接使用真实的物理地址了,而是使用虚拟的地址,由操作系统和专门的硬件设备负责进行虚拟地址到物理地址的转换。

 

虚拟地址空间,主要就是为了避免进程之间相互产生影响。操作系统内核发现当前这里的地址超出进程1的访问范围了,此时就直接会向进程反馈一个错误。(具体来说是发送一个SIGN SEGEMENT FAULT信号,引起进程的崩溃)。谁出了bug,谁崩溃,其他进程不受影响了。

进程间通信

解决了进程间相互影响的问题。虽然进程隔离了,但是又引入了新问题,有些时候,确实进程之间,需要进行数据的交互。需要搞一个多个进程都能访问到“公共空间",基于这个公共空间来进行交互数据即可,在Java中一般会基于文件或网络来进行通信。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

# 智慧社区管理系统-核心业务功能-04保修信息

一 后端 1:entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class Repair {private int id;private String comId;private String co…

[附源码]计算机毕业设计springboot医院挂号住院管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

LeetCode 441. 排列硬币

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 441. 排列硬币 ,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 441. …

Java基于springboot+vue的游戏物品销售购物商城系统 前后端分离

随着时代和计算机的发展,出现了越来越多的网络游戏,相对应的也拥有了越来越多的玩家,这些玩家在玩了一段游戏之后,可能会有游戏交易的需求。如果直接在私下个人交易很不安全,容易被骗。为了能够让广大游戏爱好者拥有一…

.net6 web api中使用SqlSugar(MySQL数据库)

其中SqlSugar,也可以是EFcore,或者Dapper,或者其他ORM框架。 其中mysql,也可以是SqlServer,或者oracle,或者其他数据库类型。 1.首先使用vs2022建立.net6 web api 2.增加SqlSugar和MySQL依赖项。 Newton…

17.前端笔记-CSS-定位

1、为什么要定位 先看看以下这些场景是否可以用标准流或浮动实现 (1)某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子 (2)滚动窗口时,某些盒子是可以固定在屏幕某个位置的 以上这种场景使用标准…

# 智慧社区管理系统-核心业务管理-01车位收费

一 后端 1:entity package com.woniu.community.entity;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;Data AllArgsConstructor NoArgsConstructor public class CarCharge {private int id;private String payDate;//开始时间pr…

Vue 官方文档2.x教程学习笔记 1 基础 1.6 Class 与 Style 绑定 1.6.1 绑定HTML Class

Vue 官方文档2.x教程学习笔记 文章目录Vue 官方文档2.x教程学习笔记1 基础1.6 Class 与 Style 绑定1.6.1 绑定HTML Class1 基础 1.6 Class 与 Style 绑定 操作元素的 class 列表和内联样式是数据绑定的一个常见需求。 因为它们都是 attribute,所以我们可以用 v-b…

浅析Vue3动态组件怎么进行异常处理

Vue3动态组件怎么进行异常处理&#xff1f;下面本篇文章带大家聊聊Vue3 动态组件异常处理的方法&#xff0c;希望对大家有所帮助&#xff01; 动态组件有两种常用场景&#xff1a; 一是动态路由&#xff1a; // 动态路由 export const asyncRouterMap: Array<RouteRecordR…

【算法】山东大学人工智能限选课实验一(八数码问题)

实验一 八数码问题 1. 题目介绍 八数码问题描述为&#xff1a;在 33 组成的九宫格棋盘上&#xff0c;摆有 8 张牌&#xff0c;每张牌都刻有 1-8 中的某一个数码。棋盘中留有一个空格&#xff0c;允许其周围的某张牌向空格移动&#xff0c;这样通过移动牌就可以不断改变棋盘布…

【实验报告NO.000001】MIT 6.858 Computer System Security - Lab 1

0x00. 一切开始之前 MIT 6.858 是面向高年级本科生与研究生开设的一门关于计算机系统安全&#xff08;secure computer security&#xff09;的课程&#xff0c;内容包括威胁模型&#xff08;threat models&#xff09;、危害安全的攻击&#xff08;attacks that compromise s…

客快物流大数据项目(九十):ClickHouse的引擎介绍和深入日志引擎讲解

文章目录 ClickHouse的引擎介绍和深入日志引擎讲解 一、引擎介绍 二、日志引擎

【大数据趋势】12月3日纳指大概率反弹到黄金分割附近,然后下跌,之后进入趋势选择期,恒指会跟随。感觉或许有什么大事情要发生,瞎猜中。

行情核心源头分析: 纳斯达克指数 是否会符合大数据规则&#xff0c;走黄金分割线规则 回顾一下上周大数据预测的趋势&#xff0c;虽有波折但最终趋势预测准确 上周11.20日大数据模拟出一个趋势图&#xff0c;大趋势上需要继续上涨尾期&#xff0c;制造一个背离出现&#xff0c…

ZMQ中请求-应答模式的可靠性设计

一、什么是可靠性&#xff1f; 要给可靠性下定义&#xff0c;我们可以先界定它的相反面——故障。如果我们可以处理某些类型的故障&#xff0c;那么我们的模型对于这些故障就是可靠的。下面我们就来列举分布式ZMQ应用程序中可能发生的问题&#xff0c;从可能性高的故障开始&…

[附源码]计算机毕业设计springboot演唱会门票售卖系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

总结:原生servlet请求转发url与请求重定向url的使用区别

总结&#xff1a;原生servlet请求转发url与请求重定向url的使用区别一演示前提&#xff1a;1.演示案例的项目架构如图&#xff1a;2.设置web应用的映射根目录&#xff1a;/lmf&#xff0c;当然也可以不设置。二什么叫请求转发、请求重定向&#xff1f;1.请求转发解释图2. forwa…

Windows 文件共享功能使用方法, 局域网多台电脑之间传送文件

设想一下&#xff0c;家里或者公司有多台电脑&#xff0c;连接同一个Wifi&#xff0c;也就是处于同一个局域网中。 在不能使用微信、网盘的文件传输功能的情况下&#xff0c;这多台电脑之间&#xff0c;就只能用U盘传送数据吗&#xff1f; 不。Windows系统中已经提供了文件共享…

关于DDR协议一些操作的理解1

整体流程: 一些基本概念: 1.p_bank和l_bank 2.rank和bank 3.DIMM和SIMM 4.DLL概念: DDR控制器架构: 时钟频率对比: (1)

(1-线性回归问题)RBF神经网络

直接看公式&#xff0c;本质上就是非线性变换后的线性变化&#xff08;RBF神经网络的思想是将低维空间非线性不可分问题转换成高维空间线性可分问题&#xff09; Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列&#xff0c;在图像识别、语音识别、无人驾驶等技…

wy的leetcode刷题记录_Day56

wy的leetcode刷题记录_Day56 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2022-11-30 前言 目录wy的leetcode刷题记录_Day56声明前言895. 最大频率栈题目介绍思路代码收获236. 二叉树的最近公共祖先题目介绍思路代码收获895. 最大频率…