[计组03]进程详解2

目录

应用程序

系统调用  

驱动  

软件

再看进程

进程管理  

  如何管理  ?

  创建一个进程  

  注意  

PCB  

文件描述表  

进程相关重点

为什么有进程调度  

虚拟空间地址  


这次我们从更加详细全面的角度看一下进程在计算机中体系中的展现

应用程序

应用程序 调动
    系统调用 后  
    操作系统内核  
    响应 驱动  
    硬件  产生反应


系统调用  


系统调用  
    实现操作系统最核心的功能  

比如
    内存管理  
    硬盘管理  
    进程管理  
    设备管理  
    文件管理  
    ……  

一般是
    操作系统提供的原生API  
    通常是C语言编写的  
    应用程序需要调用这里的api才能完成一些具体工作  


驱动  


    由于生产硬件厂商很多,为了让系统能适配每一个系统,就需要靠驱动程序,让操作系统内核认识并管理硬件。  


软件

软件   
    软件是不能直接操作硬件的  
    操作系统给应用程序提供了  
    1.write系统调用,可以用于写入一些数据  
    2.提供stdout特殊文件,对应显示器硬件设备

Java为了能够跨平台,在jvm中就已经对各种常见的系统调用进行了封装。  
不必要直接使用系统调用,直接调用jvm封装好的一些Java方法就行。  
  
应用通过系统调用和操作系统内核产生联系  
操作系统内核通过驱动和硬件产生交互  


再看进程

进程  
    进程也就做  “任务”  
    运行起来的程序就是进程  
    .exe就是可执行文件/可执行程序  
    是存储在硬盘上的文件—静态的  

  
运行这个文件 操作系统就会把这个程序的核心文件数据加载到内存当中,并在操作系统中生成一个进程,并且在任务管理器中可以检测到此进程。  
  
硬盘基本不会影响系统的流畅度,但是如果硬盘空间快满的时候,是极有可能卡顿的
1.因为很多操作系统都在内存空间不够的时候,使用一部分(C盘)硬盘空间作为交换分区,所以硬盘空间快满的时候,是可能会卡的  
2.执行应用程序的时候需要向硬盘CURD的时候,会影响效率。  
3.有些应用程序会默认被设置为开机启动,默认消耗很多内存资源,疯狂的占用你的内存。  
  
在移动端,app 有个权限 ——读取应用程序列表,很可能使得应用程序之间相互启动,导致内存消耗。  


进程管理  


     管理的重要凭证是进程表, 详细的表示进程的属性和信息  
    主要是结构体,结构体中包含进程的各种信息(PCB进程控制块)  


  
如何管理  ?


    通过一定的数据结构,把若干个进程管理到一起。  
    系统一般使用双向链表这样的数据结构,把PCB链接到一起。  


  
创建一个进程  


    本质上是创建一个PCB,并且加入到链表上  
    销毁一个进程  
    本质上就是从链表上删除这个PCB  
    查看任务管理器  
    遍历和打印该链表  


  
注意  


    一个进程可能对应多个PCB  
    系统中管理的链表也可能是多个


PCB  


    1.pid 进程身份标识码,一个主机中,pid是唯一的,通过pid区分进程  
    2.内存指针   
    一个可执行文件运行后,操作系统把文件中的核心数据加载到内存中  
  
进程的创立必然伴随内存空间的分配,内存空间中的区域,有存放指令的,有存放数据的,有来维护运行状态的……  
来表述哪块内存的具体功能 。
进程持有的内存资源。  


文件描述表  

文件描述表  
    每个进程都可以打开一些硬盘文件,  
    文件描述表记录了当前进程打开了哪些文件,可以对这些文件进行CURD。  
      也就是进程持有的文件资源。  
      进程也就可以说操作系统分配资源的基本单位。  
  


进程相关重点


进程调度  
进程属性  
进程上下文  
进程优先级  
进程的记账信息  
  

进程属性

 进程属性是指每个进程的特征和信息,包括进程的唯一标识符(进程ID)、状态(运行、就绪、阻塞)、优先级、程序计数器(PC)的值、寄存器状态、打开的文件描述符列表等。这些属性决定了进程的行为和状态

进程上下文  


    进程在CPU上执行一段时间后,需要切换到别的进程,需要保存前者的结果,下次再轮到前者执行的时候,会恢复上次执行的结果。  
  
对于进程来说,上下文就是CPU中寄存器的值。寄存中包含了运行的中间结果,会把这些信息保存到PCB的上下文信息中。  

进程的优先级

进程优先级是一个数值,用于表示进程相对于其他进程的重要性。操作系统可以使用进程优先级来调度进程,高优先级的进程可能会在低优先级的进程之前执行


  
进程记账信息  


    每个进程在CPU上执行了多久,统计信息  
    具有辅助调度的效果  
    防止一些进程完全无法执行



为什么有进程调度  


    CPU资源有限,需要合理安排,进程有很多,一般CPU处理器都是6/8核,需要通过进程调度同时处理这些进程。  
      

多核CPU  
    CPU的运算能力,和集成程度是密切相关的  
    (密度)也就是制程。  
    单核计算能力有限,于是增加核心提升进程运行效率。  
  

并行执行  
    多个CPU核心运行多个进程  
  

并发执行  
    一个核心运行多个进程  
    运行一下进程1,运行进程2,再运行进程3,只要微观上切换的足够快,宏观上就是3个进程同时运行。  

**现在基本上都是并行和并发同时执行。**


 


虚拟空间地址  


给每一个进程分配内存资源  
为了防止进程之间的相互影响  
给每个进程划分的内存空间,都叫做  
“虚拟的内存空间”  
通过专门的设备MMU来完成,虚拟地址到物理地址之间的映射  
  
mmu可以避免进程超出划分的虚拟内存,避免在真是物理地址中影响进程
 
  
有点类似于审核员  
  
使用虚拟地址空间,就认为进程之间存在“隔离性”,一个进程无法干扰另一个进程的内存数据。提高了进程和系统的稳定性。  
  
有些需求场景,需要多个进程互相配合  
进程隔离了,进程间很难交互了  
这时候 进程间通信就起作用了
 
  


进程间通信  
    核心原则是找一个 公共资源,多个进程都能访问到的,然后基于公共资源交换数据。  
    公共资源可以基于文件,可以基于socket,可以基于内存……具体方式在篇幅1有说明


哈,谢谢各位同志的阅读,然后呢如果觉得本文对您有所帮助的话,还给个免费的赞捏
Thanks♪(・ω・)ノ

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

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

相关文章

VR古迹复原——数字化复原圆明园,开创文化遗产保护新方式

圆明园是中国历史上一处重要的文化遗产,曾经被誉为“万园之园”,但在1860年的英法联军侵华战争中被毁。近年来,虚拟现实技术不断发展,广州华锐互动利用VR全景技术复原了圆明园,通过VR设备,人们可以在家中就…

CRM与chatGPT结合的效果

2023年ChatGPT是当之无愧的行业热词,从诞生到爆红短短5天,注册用户数就超过100万,截止到2023年1月底已经有超过1亿用户。在这样的背景下,Zoho CRM系统在业内较早推出集成ChatGPT的相关功能,接下来我们就来分享CRM接入C…

MySQL实现单个字段根据特定字符拆分

1.字段内容 2.想得到的效果 步骤1中,每一条记录的FJ字段,根据分号,拆分成多条,如下图所示: 3.具体实现 说明: SELECT DISTINCTsubstring_index(substring_index(a.要拆分的字段, 分隔字符, b.help_top…

【视觉检测】电源线圈上的导线弯直与否视觉检测系统软硬件方案

 检测内容 线圈上的导线弯直与否检测系统。  检测要求 检测线圈上的导线有无弯曲,弯曲度由客户自己设定。检测速度5K/8H625PCS/H。  视觉可行性分析 对样品进行了光学实验,并进行图像处理,原则上可以使用机器视觉进行测试测量…

基于springboot+vue的企业面试预约管理系统

基于springbootvue的企业面试预约管理系统 预约面试管理系统,可以通过学生,企业角色进行登录 登录后可以查看发布的岗位,发布人,发布时间,面试时间,招聘时间,招聘单位简介等 查看用户管理信息

第十三章总结

一.泛型 1.定义泛型类 泛型机制语法&#xff1a; 类名<T> 其中&#xff0c;T是泛型的名称&#xff0c;代表某一种类型。 【例13.6】创建带泛型的图书类 代码&#xff1a; 结果&#xff1a; 2.泛型的常规用法 (1)定义泛型类时声明多个变量 class MyCla…

9.14 C++作业

仿照vector手动实现自己的myVector&#xff0c;最主要实现二倍扩容功能 #include <iostream>using namespace std;template <typename T> class Myvector {T *data; //存储数据的数组int len; //当前数组的长度int mycapa; //容纳数据的总容量public://…

[春秋云境] CVE-2022-32991

CVE-2022-32991 靶标介绍 该CMS的welcome.php中存在SQL注入攻击。 解题过程 进入主界面&#xff0c;没有明显可以注入的地方&#xff0c;先注册登录。 登录之后的界面 此处有个?q1但是多次测试后&#xff0c;感觉不是注入点。 点击这个按钮&#xff0c;进入新的界面。 多…

完全保密的以太坊交易:Aztec网络的隐私架构

1. 引言 Aztec为隐私优先的以太坊zkRollup&#xff1a;即其为具有完全隐私保护的L2。 为了理解私有交易的范式变化性质&#xff0c;以及为什么将隐私直接构建到网络架构中很重要&#xff0c;必须首先讨论为什么以太坊不是私有的。 2. 以太坊&#xff1a;公有链 以太坊为具有…

elasticsearch1

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

翻牌闯关游戏

翻牌闯关游戏 3关&#xff1a;关卡由少至多12格、20格、30格图案&#xff1a;12个玩法&#xff1a;点击两张卡牌&#xff0c;图案一到即可消除掉 记忆时长(毫秒)&#xff1a;memoryDurationTime:5000 可配置&#xff0c;默认5000 提示游戏玩法&#xff1a;showTipsFlag:1 可…

【Redis7】--3.Redis持久化

Redis持久化 Redis持久化(Redis persistence)是指将数据写入持久化存储&#xff0c;如固态硬盘(SSD) Redis提供了一系列持久化选项&#xff0c;这些包括&#xff1a; RDB(redis数据库)&#xff1a;RDB持久化方式能够在指定的时间间隔对数据进行快照存储AOF(追加文件)&#x…

MongoDB-1入门介绍

NoSQL NoSQL(NoSQL Not Only SQL)&#xff0c;意即反SQL运动&#xff0c;指的是非关系型的数据库 优点 1、对数据库高并发读写。 2、对海量数据的高效率存储和访问。 3、对数据库的高可扩展性和高可用性。 弱点&#xff1a; 1、数据库事务一致性需求 2、数据库的写实时性…

性能测试知多少---性能分析与调优的原理

最近一直纠结性能分析与调优如何下手&#xff0c;先从硬件开始&#xff0c;还是先从代码或数据库。从操作系统&#xff08;CPU调度&#xff0c;内存管理&#xff0c;进程调度&#xff0c;磁盘I/O&#xff09;、网络、协议&#xff08;HTTP&#xff0c; TCP/IP &#xff09;&…

webpack:css-loader和style-loader关系

测试 当我们webpack 的 rules 啥都没配置的时候 const path require(path);module.exports {entry: ./src/index.js,output: {filename: index.js,path: path.resolve(__dirname, dist)},module: {rules: []} };我们在 js 中导入了 css&#xff0c;发现报错&#xff0c;因为…

软件测试的基础知识

目录 前言 软件测试的生命周期 如何描述一个bug 如何定位bug的级别 bug的生命周期 和开发人员产生争执怎么办 设计一个测试用例 前言 上篇文章主要写了软件测试的一些基本概念以及软件测试的前置知识,这篇文章主要带大家了解在进行软件测试之前要准备的工作. 软件测试…

Trino HTTPS 与密码认证介绍与实战操作

文章目录 一、概述二、安装 Trino三、配置 HTTPS1&#xff09;生成证书2&#xff09;配置 Trino3&#xff09;修改 Trino docker-compose yaml 文件4&#xff09;开始部署 Trino5&#xff09;测试验证 四、密码认证1&#xff09;开启密码认证2&#xff09;创建密码认证配置文件…

编辑器的缩略图实现原理

一、背景 部分 Web 版的 IDE 编辑器未曾实现缩略图功能&#xff0c;探寻一下缩略图的实现逻辑。以 VSCode 为例。 VSCode 的编辑器是monaco实现的&#xff0c;编辑器的编辑区都是采用的虚拟渲染&#xff0c;即仅渲染可视区的代码&#xff0c;可视区之外的动态去除 DOM 节点。…

SpringBoot结合MyBatis实现多数据源配置

SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作&#xff0c;首先需要搭建Mybatis的运行环境。 由于是多数据源&#xff0c;也就是要有多个数据库&#xff0c;所以&#xff0c;我们创建两个测试数据库&#xff0c;分别是…

6. 装饰器

UML 聚合(Aggregation)关系&#xff1a;大雁和雁群&#xff0c;上图中空心菱形箭头表示聚合关系组合(Composition)关系&#xff1a;大雁和翅膀 &#xff0c;实心菱形箭头表示组合(Composition)关系 测试代码 #include <iostream> #include <stdio.h> #include &l…