进程和进程的调度

news2024/11/15 17:44:11

今天,为大家带来进程和进程的调度的学习

1.认识计算机

2.什么是操作系统

3.什么是进程

4.进程管理

5.进程的属性

6.进程的调度

7.进程调度的过程

8.内存分配


1.认识计算机

计算机的组成有五大部分

1.CPU(是计算机的大脑,负责逻辑运算和控制)

2.内存

3.外存

4.输入设备

5.输出设备

由存储空间排序

硬盘>内存>>cpu

数据访问速度

cpu>>内存>硬盘

2.认识操作系统(OS)

操作系统作系统是一组软件集合,管理计算机软硬件资源,并且协调CPU运行

 上述图就是计算机中操作系统所处的位置,可以看出在很关键的位置

对下要管理CPU,内存,外存,以及IO设备,对上要管理各种应用程序

我们所要谈的进程就是基于操作系统来说的,操作系统有一个功能,那就是进程管理


3.什么是进程(process)

进程说的通俗一点就是任务,也就是一个跑起来的程序,可以称为程序

进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程;

在操作系统内部,进程是操作系统进行资源分配的基本单位。

进程就是跑起来的程序

我们先来看看进程

打开电脑的任务资源管理器

这里有很多正在运行的程序,就称为进程

电脑的这些程序在运行时需要向操作系统申请内存,现在有这么多进程,就需要进行进程管理,这样计算机才能有序工作


4进程的管理:

进程管理分为两步

1.描述一个进程

就是用一个结构体或者一个类将进程的信息表示出来

2.组织一个进程

用数据结构将结构体或者对象放在一起


5进程的属性

既然我们要将进程的结构体(PCB   >> process  control  block )进行组织,那么就得了解它的属性,PCB的属性非常多,我们今天就挑几个典型的来说一说

1.进程标识  pid

每一个进程都必须有唯一的一个身份标识

2.内存指针

进程就是跑起来的程序,跑起来的程序需要占用一定的内存资源,那么内存指针可以告诉操作系统哪部分的内存资源被占用了

3.文件描述符表

没有运行的程序并且在硬盘上存储的就称为文件,当一个文件运行时被标记,文件一旦打开就产生了一个文件描述符,当打开的文件很多的时候,就会标记产生很多文件描述符,这个时候把这些文件描述符放到一个表里面,这个表叫做文件描述符表

4.这个属性,不是一个属性,是一组和CPU资源相关的属性,,这组属性辅助操作系统进行进程调度

(1)进程状态

进程有两种状态,一个是就绪状态,一个是阻塞状态

就绪状态:进程已经准备好,随时可以上CPU执行

阻塞状态:进程还没准备好,暂时无法上CPU执行

(2)进程的优先级

进程的调度不一定公平,会遵循优先级,优先级调度

(3.)进程的上下文

就是记录进程运行到哪里的存档,当A进程突然离开CPU,那么B进程进入CPU执行,执行完后进程A回来继续执行,就从进程A的突然中断的地方继续执行

在进程上来说,就是进程运行中,CPU内部的寄存器存储的值,寄存器有很多作用,在这里的作用就是保存当前进程执行的中间结果,包括了执行到哪一条指令

寄存器有一个存档和读档的操作

所谓存档:进程在中途离开CPU的时候,寄存器会记录进程执行到哪一步了,那么CPU把寄存器上的值存到PCB的上下文中

所谓读档:当进程回到CPU中,CPU将PCB上的存档记录读取到寄存器上

(4)进程的记账信息

记录进程在CPU执行的时间长短,便于操作系统进行进程的调度


6进程调度:当CPU空闲时,操作系统从就绪队列上选择一个进程执行

操作系统使用双向链表组织PCB

进程的创建:创建一个链表结点

进程的销毁:删除一个链表节点

进程列表的遍历:遍历该链表


7.进程的调度过程

1.并行:同一时刻,同一个cpu,两个核心,同时执行两个进程,互不干扰

2.并发:同一个CPU,一个核心,先执行进程1,执行一会儿,再去执行进程2,执行一会儿,再去执行进程3,切换的速度非常快,快到几乎感受不到,所以看起来就像同时执行了

所以,进程的执行采用并行+并发的形式来执行.很多时候,把并行和并发统称为并发,这个并发是宏观意义上的并发


8.内存的分配

操作系统对内存资源的分配是空间模式,即不同的进程在执行的时候使用内存的不同区域,不会互相影响

扩展一下.,操作系统对进程执行分配的内存是虚拟地址,看似是一样的内存地址,但是通过映射到真实内存上,就是不一样的地址,不一样的内存区域

每个进程访问的内存地址都不是真正的物理内存地址

画个图理解一下

使用虚拟地址有效避免了野指针问题以及进程之间会相互干扰的问题

所以,进程有稳定性和独立性,每一个进程都有独立的内存地址空间,不会被干扰到

 今天的内容就分享到这里,我们下期再见!!!

 

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

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

相关文章

你了解线程的状态转换吗

本文概述: 讲述线程的六种状态. 你可能已经了解了六种状态, 但是你知道 sleep 被唤醒之后, wait ()被 notify 之后进入了什么状态吗? 本文只是开胃小菜, 你看看下一篇文章对你有没有帮助. 一共有六种状态: New 新建状态Runnable 运行状态Blocked 阻塞状态Waiting 等待状态Tim…

项目实战-瑞吉外卖day02(B站)持续更新

瑞吉外卖-Day02课程内容完善登录功能新增员工员工信息分页查询启用/禁用员工账号编辑员工信息1. 完善登录功能1.1 问题分析前面我们已经完成了后台系统的员工登录功能开发,但是目前还存在一个问题,接下来我们来说明一个这个问题, 以及如何处理…

前端实用技巧,JS压缩、美化、JS混淆加密

作为一名前端开发者,关注JavaScript代码的安全性和隐私性,或者需要对JavaScript代码进行美化、格式化、压缩等操作,帮助你提高开发效率和代码质量,利用一个好的工具非常重要。 如果不想让自己的代码被恶意篡改和盗用,作…

超详细Xshell7免费版安装与连接虚拟机教程

一、下载Xshell 1、首先打开Xshell官网,首页官网地址为: Xshell官网首页地址 官网首页地址有时候会发生变动,若不能通过链接直接进入官网,则在浏览器搜索xshell---->点击下图所示红框处即可 2、进入首页后,点击免…

C++基础了解-22-C++ 重载运算符和重载函数

C 重载运算符和重载函数 一、C 重载运算符和重载函数 C 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义…

计算机网络之HTTP协议

目录 一、HTTP的含义 1.1 理解超文本 1.2 理解应用层协议 1.3 理解HTTP协议的工作过程 二、HTTP协议格式 2.1 抓包工具的使用 2.2 理解协议格式 2.2.1 请求协议格式 2.2.2. 响应格式请求 一、HTTP的含义 HTTP(全称为“超文本传输协议”)&#x…

WAMP搭建靶场

WAMP W:windows A:apache M:mysql,mariadb P:php 1. 下载phpstudy Windows版phpstudy下载 - 小皮面板(phpstudy) 2. 安装phpstudy 默认安装即可 3. 下载DVWA靶场 https://github.com/digininja/DVWA/archive/…

C++回顾(十五)—— 类模板

15.1 为什么要有类模板 类模板用于实现类所需数据的类型参数化类模板在表示如数组、表、图等数据结构显得特别重要,这些数据结构的表示和算法不受所包含的元素类型的影响 15.2 单个类模板语法 注意:类模板的创建对象一定要显示调用(指明类型…

虹科分享 | 网络安全评级 | 突破能够让您变得更加强大

有两种CISO:入侵前和入侵后。入侵前的CISOs过于关注工具,并考虑投资于预防技术。在这样做的时候,他们几乎没有考虑一旦发生了不好的事情,恢复和及时恢复服务的问题。不好的事情会发生;这不是是否的问题,而是…

手把手教你如何做数据报表

数据报表是一种数据可视化形式,它将复杂的数据信息通过图形、表格等形式进行展示和解释,让人们更加直观地理解和分析数据。数据报表已成为现代企业决策的必备工具之一。对企业来说,数据报表有很多用处。首先,数据报表可以帮助企业…

基于BiLSTM+CRF医学病例命名实体识别项目

研究背景 为通过项目实战增加对命名实体识别的认识,本文找到中科院软件所刘焕勇老师在github上的开源项目,中文电子病例命名实体识别项目MedicalNamedEntityRecognition。对其进行详细解读。 原项目地址:https://github.com/liuhuanyong/Med…

一小时轻松掌握Git,看这一篇就足够

文章目录序言:版本控制分类一、Git环境配置下载卸载安装二、常用linux命令三、基本配置四、Git基本操作0.原理图1.项目创建及克隆方式一:本地仓库搭建方式二:克隆远程仓库2.文件操作3.配置ssh公钥4.分支5.push代码参考序言:版本控…

ORB_SLAM2+kinect稠密建图

下载代码:https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map 运行代码: 解压代码后,删掉作者自己编译的build文件夹(下面三个都删除): ~/ORB_SLAM2_modified/build, ~/ORB_SLAM2_modified/T…

【上传项目代码到Git详细步骤】

1.下载安装Git到电脑上(这里我之前已经安装好了,就不细说了)2.进入控制台安装好后右键点击桌面空白部分会多出两个菜单选项,点击第二个Git Bash Here(点击第一个你会爆炸)会弹出一个git控制台,如…

华为OD机试用Python实现 -【分解质因数】 2023Q1A

华为OD机试题 本篇题目:分解质因数题目示例 1输入输出示例 2输入输出Code代码编写思路最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南

从0-1搭建交付型项目管理体系流程(上)【宝芝林2】

很多项目经理在这个阶段,由于经验不足及整个项目管理体系涉及的环节和内容比较庞杂,往往无法有效思考,无从下手。笔者有幸在最近几年的工作实践中,实际搭建并迭代了2-3次项目管理体系流程框架,期间也经历过很多迷茫&am…

C++基础了解-21-C++ 继承

C 继承 一、C 继承 面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,不需要重新编写新的…

mes系统如何管理企业生产

随着市场竞争的日趋激烈,很多企业都开始意识到生产管理的重要性。mes系统如何管理企业生产?下面,我们通过一个实例来说明。 案例简介: 一、客户需求快速增长 随着市场竞争的加剧,越来越多的客户提出了个性化需求。同…

人体存在传感器成品方案,精准感知静止存在,实时智能化感控技术

随着现今智能时代的发展,酒店也越来越趋于智能化,也在不断地推行智慧酒店,这也给人们入住酒店提供了良好的体验。 人体存在感知是智能酒店中极其重要的一项应用技术,只有智能设备通过精准地感知人体存在,才能更好地做…

2023-3-9-一篇简短的文章把C++左右值关系讲的透透彻彻

目录前言C左值和右值二、右值引用二、右值引用前言 对于C的左值和右值相信很多人都没有一个很透彻的了解,之前我也是不懂的时候查阅了好多文章,但是讲完我还是一头雾水,直到我遇到一篇宝藏文章,讲的左值右值的关系以及Move函数的用法是相当的清楚,文章链接在这,话不多说讲解一…