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

操作系统之进程的初步认识(1)

进程

    • 1. 进程的相关概念
      • 1.1 进程的定义
      • 1.2 进程的概念(1)
      • 1.3 进程的概念(2)
    • 2. 进程和程序的区别
    • 3. 进程管理:
      • 3.1 进程的结构体有哪些属性
        • (1) Pid(操作系统里指进程识别号)
        • (2) 内存指针
        • (3) 文件描述符表
      • 4. 进程调度:
        • (1) 并行
        • (2) 并发
      • 5. 进程调度需要的属性
        • (1) 进程状态
        • (2) 进程优先级
        • (3) 进程上下文
        • (4) 进程的记账信息
      • 6.操作系统的常用数据结构

1. 进程的相关概念

进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。

1.1 进程的定义

狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)

广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。

1.2 进程的概念(1)

进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。

1.3 进程的概念(2)

进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行时),它才能成为一个活动的实体,我们称其为 进程(下面讲到为什么进程是活动的实体)。

通俗一点理解,我们可以将 运行中的程序 看做是 进程,比如我们平时经常使用到的QQ,当我们打开qq这个app时就相当于启动了一个进程,操作系统就会为该进程分配内存空间.

我们看下图:

在这里插入图片描述

2. 进程和程序的区别

首先我们要明白程序是什么?程序是我们写下来的一段代码,而进程的产生是因为代码开始执行了。

就像下图:
在这里插入图片描述

此时我们便可以通过这个图片来理解程序和进程的区别:

一、 进程是动态的,程序是静态的:程序是有序代码的集合,进程是程序的执行。进程有核心态/用户态。
程序是静态的很好理解,那自己写的代码当然是静态的。进程是动态的也好理解,代码开始执行,那肯定会执行完毕,执行完毕了,进程也就消亡了,所以进程是动态的。

二、 进程是暂时的,程序是永久的;进程是一个状态变化的过程,程序可以长久保存
基于一的解释,二这个也是相同的理解。

三、进程和程序的组成不同,进程的组成包括程序、数据和进程控制块(即进程状态信息)
由于进程是动态的,并且需要间断的执行,那么就需要保存进程的状态信息。

3. 进程管理:

操作系统本身是一个大话题,是一个非常发杂的软件.它本身的功能有很多,其中有一个和咱们密切相关的功能模块, 进程管理!

为什么我们需要进程管理呢?

大家看图:

在这里插入图片描述
可以看到,由于我们的进程很多,才需要管理,如果进程只有几个的话当然涉及不到进程管理.

如何进行进程管理呢?

  1. 描述一个进程,使用结构体/类,把一个进程有那些信息表示出来.
  2. 组织这个进程,使用一定的数据结构,把这些结构体对象放到一起,(通常是使用双链表这个数据结构)

3.1 进程的结构体有哪些属性

关于进程的结构体我们还有一个别称,就是 PCB(进程控制块)

(1) Pid(操作系统里指进程识别号)

PID(Process Identification)操作系统里指进程识别号,也就是进程标识符。操作系统里每打开一个程序都会创建一个进程ID,即PID。

只要运行一程序,系统会自动分配一个标识

是暂时唯一:进程中止后,这个号码就会被回收,并可能被分配给另一个新进程。

只要没有成功运行其他程序,这个PID会继续分配给当前要运行的程序。

如果成功运行一个程序,然后再运行别的程序时,系统会自动分配另一个PID

(2) 内存指针

当前这个进程使用的内存是哪一部分.(进程运行的时候,使用了哪些内存上的资源)

(3) 文件描述符表

如下图:

在这里插入图片描述
上图红色框中的都是文件,

文件: 比如硬盘上存储的数据,往往就是以文件为单位进行整理的.

进程每打开一个文件就会产生一个 ‘文件描述符’(标识这个文件被打开) .由于一个进程可能会打开很多文件,自然对应了一组文件描述符,把这些文件描述符放到了类似于顺序表这样的一个数据结构中,就构成了文件描述符表!

文件描述符表描述了:你这个进程使用了那些文件,或者是使用了哪些硬盘资源.

此时:我们结合内存指针和文件描述符表可以知道,进程的运行需要从操作系统这里申请资源,此时也可以理解为进程是操作系统进行资源分配的基本单位!

下面的属性都是描述个cpu资源相关的属性.这些属性都是辅助进行.

4. 进程调度:

咱们的程序能够运行,全依仗cpu,每个程序相当于一组’二进制指令’的集合,这些指令靠cpu运行.

cpu有一个概念(核心数)

以小鱼这个电脑举例:

在这里插入图片描述

我的电脑只有8个核心,其中每个核心相当于一个员工,并且每个员工可以同时进行两个人的工作,也就可以理解为我的这八个核心可以同时运行16个进程,当时大家刚才已经看到了,我们的任务管理器里面有不小于100个进程正在运行,那我这个小小的8个核心就是累屁了也不能同时运行100多个进程啊.

那么下面就涉及到了计算机为什么可以同时运行这么多的进程了.

(1) 并行

并行性是指系统具有同时进行运算或操作的特性,在同一时刻能完成两种或两种以上担任工作,并行性需要相关硬件的支持,例如流水线或多处理硬件环境。

举个例子:

假设我是一个长的好看,有才华的女生,我有一个择偶标准,就是需要(1)有钱(2)长得帅(3)会舔我(会哄我开心,帮我排解压力).

但是呢,放眼望去,并没有找到符合这三种条件的男生(我们称为ABC),有钱的不帅( A ),帅的没钱( B ),会舔的不帅也没钱( C ).但是我呢,是一个追求完美的女生,我就是想要找到符合我择偶标准的男生,此时呢~我就打算,同时和三个男生交往,因为是同时和他们一起交往,此时就是并行.

(2) 并发

并发指两个或多个事件在同一时间间隔内发生。操作系统的并发性是指计算机系统中’同时’存在多个运行的程序,因此具有处理和调度多个程序同时执行的能力。在操作系统中引进程序的目的是使程序能够并发执行。在多道程序环境下,一段时间内,宏观上有多道程序在"同时"执行,而在每一个时刻,单处理机环境下 实际仅能有一道程序执行,因此 微观上这些程序是分时交替执行的。操作系统的并发性是通过分时得以实现的。

依旧是通过上面的例子举例:

因为我是在同时和三个男生交往,那么对于我的名誉来说,我一定是不想让他们碰见的.

所以呢,我就规划了一个时间表:

周一,周三,周五周二,周四周六周日
有钱的( A )帅的( B )会舔的( C )给自己放个假

为什么有钱的可以一礼拜陪他三天,当然是因为金钱的力量啦!!!

于是呢,我就按照上述的表来进行每周的时间分配,当我们把时间的长度调整为1周时,会发现我在不同的时间陪着他们不同的人,但是当我把时间的长度调为1年,2年时,我们就可以认为,我是在"同时"和ABC在一起.此时涉及到的性质就是我们所讲到的"并发"

5. 进程调度需要的属性

(1) 进程状态

简单的认为进程的状态主要是这两个:

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

阻塞态:该进程暂时无法上cpu执行

我们依旧通过上述的例子演示:

有一天呢,A说我需要出差一个月,那么在他出差的这一个月期间,我都无法跟他在一起,此时A就是"阻塞态",但是虽然A出差了,但是我还有B,C,此时我可以随时去找这两个男友,陪他们在一起,此时这两位男友就是"就绪态".

(2) 进程优先级

进程之间的调度不一定是公平的,有的需要优先调度~~

例如:

为什么我会给A分配更多的时间来陪我,是因为A有钱,有钱就体现了他的重要性,当然要A优先了,那么为什么只让C一礼拜陪我一次,当然是因为,他除了能把我舔的开心,没有其他用途了,一没钱二不帅,优先级自然就是最后的了.

(3) 进程上下文

上下文就是描述当前的进程执行到了哪里,这样的一个"存档记录".

进程在离开ccpu的时候要把当前运行的中间结果进行"存档",等下次进程回来cpu上,再回复之前的"存档",从上次的结果继续往后执行.

所谓上下文具体指的就是进程运行过程中,cpu内部的一系列寄存器的值.

寄存器:

寄存器有很多种,其中最典型的作用就是保存当前进程执行的中间结果,包括执行到了哪一条指令.

存档: 进程离开cpu就需要将寄存器的值保存在PCB上下文字段中~~

读档: 进程下次回来,cpu再把PCB中的值恢复到寄存器中.

举例:

有一天A跟我说,你准备准备咱们下个月去三亚旅游,那么此时我需要准备的就是性感泳衣啦!之后,在我陪着B的时候,他对我说下个月我妈妈过生日,你记得准备下生日礼物啊!那么我就想,阿姨的生日礼物就买个手机吧.

后来A问我东西准备好了吗,但是由于我一时间记不清,便说了手机已经买好了,B问我准备好了吗?我又回答说性感泳衣已经买好了.此时不就是穿帮了嘛,所以我们需要进程的上下文来记录我们的事情进行到了哪里!

(4) 进程的记账信息

统计了每个进程在cpu上执行了多久~~
可以作为调度的参考依据.

例如: 我一礼拜只陪C一天,导致C舔我舔的不是那么用心了,此时我一看陪伴C的天数,发现是陪伴他的次数太少了,于是我需要一礼拜多抽出几天陪他,这样他就会又很用心的舔我了~当然,这样的情况也只是暂时的,等他又用心舔我之后,我依旧是一礼拜只陪他一天…

6.操作系统的常用数据结构

操作系统往往使用双向链表这样的结构来组织PCB~~

1.创建一个进程就是创建一个链表的结点
2.销毁一个进程就是把链表中的结点给删除了
3.遍历进程就是遍历双向链表

相关文章:

操作系统之进程的初步认识(1)

进程1. 进程的相关概念1.1 进程的定义1.2 进程的概念(1)1.3 进程的概念(2)2. 进程和程序的区别3. 进程管理:3.1 进程的结构体有哪些属性(1) Pid(操作系统里指进程识别号)(2) 内存指针(3) 文件描述符表4. 进程调度:(1) 并行(2) 并发5. 进程调度需要的属性(1) 进程状态(2) 进程优…...

【Java】你真的懂封装吗?一文读懂封装-----建议收藏

博主简介:努力学习的预备程序媛一枚~博主主页: 是瑶瑶子啦所属专栏: Java岛冒险记【从小白到大佬之路】 前言 write in the front: 如何理解封装? 试想:我们使用微波炉的时候,只用设置好时间,按下“开始”…...

使用MobaXterm ssh远程登录Ubuntu 20.04

使用MobaXterm 远程登录Ubuntu 20.04 首先需要到官网下载一个MobaXterm 准备一台Ubuntu20.04的虚拟机。使用ifconfig查看IP 我这里的虚拟机是新安装的,所以会提示命令不存在,只要按照提示输入: sudo apt install net-tools接着等待安装完成…...

蓝桥杯历年真题训练

2012年第四届全国电子专业人才设计与技能大赛“自动售水机”设计任务书1. 系统框图接下来我们将任务分块: 1. 按键控制单元 设定按键 S7 为出水控制按键,当 S7 按下后,售水机持续出水(继电器接通,指示 灯 L10 点亮&…...

Spring事务报错: org.springframework.transaction.UnexpectedRollbackException

异常信息:支持当前事务,如果不存在则抛出异常。事务被回滚,因为它被标记为仅回滚 org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-onlyat org.springframe…...

Spring:IOC和AOP

Spring:IOC和AOP一. IOC(1) 引入(2) 定义(3) 作用(4) 实现(5) DI依赖注入二. AOP(1) 概念(2) Spring中的AOP(3) 入门案例0. 准备:1. 定义通知类和通知方法;2. 在通知类中描述和定义切入点 pointcut3. 用注释绑定切入点和通知方法4. 通知类&am…...

【笔记】效率之门——Python中的函数式编程技巧

文章目录Python函数式编程1. 数据2. 推导式3. 函数式编程3.1. Lambda函数3.2. python内置函数3.3. 高阶函数4. 函数式编程的应用Python函数式编程 我的AI Studio项目:【笔记】LearnDL第三课:Python高级编程——抽象与封装 - 飞桨AI Studio (baidu.com) p…...

Java【多线程基础2】 Thread类 及其常用方法

文章目录前言一、Thread类1, 构造方法2, 常用成员属性3, 常用成员方法3.1, start 启动线程3.2, interrupt 中断线程 (重点)3.2.1, 手动设置标记位3.2.2, 使用内置标记位3.3.3, interrupt 方法 的作用3.3 sleep 休眠线程3.4, jion 等待线程3.5 获取当前线程的引用总结前言 各位读…...

JVM调优实战及常量池详解

目录 阿里巴巴Arthas详解 Arthas使用场景 Arthas使用 GC日志详解 如何分析GC日志 CMS G1...

ChatGPT研究分析:GPT-4做了什么

前脚刚研究了一轮GPT3.5,OpenAI很快就升级了GPT-4,整体表现有进一步提升。追赶一下潮流,研究研究GPT-4干了啥。本文内容全部源于对OpenAI公开的技术报告的解读,通篇以PR效果为主,实际内容不多。主要强调的工作&#xf…...

我为什么要写博客,写博客的意义是什么??

曾经何时我也不知道,怎样才能变成我自己所羡慕的大佬!!在一次次的CSDN阅读的过程中,结实了许多志同道合的人!!包过凉哥,擦姐……大佬,但是,很遗憾,与这些人只…...

ssm框架之spring:浅聊AOP

AOP(Aspect Oriented Programming),是一种设计思想。先看一下百度百科的解释: 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态…...

k8s详解

一、k8s中的yaml文件 JSON格式:主要用于api接口之间信息的传递YAML格式:主要用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化 YAML格式: 大小写敏感使用缩进代表层级关系,不支持TAB制表符缩…...

计算机操作系统(第四版)第一章操作系统引论 1.1操作系统的目标和作用

第一章操作系统引论 1.1操作系统的目标和作用 什么是操作系统OS? 配置在计算机硬件上的第一层软件是对硬件的首次扩充。 是最重要的系统软件,其他系统软件应用软件都依赖于操作系统的支持。 操作系统主要作用? 管理计算机系统所有硬件设…...

git push解决办法: ! [remote rejected] master -> master (pre-receive hook declined)

项目经理远程创建了一个空项目,无任何内容,给我赋予的developer账号权限,本地改为后提交代码试了很多次都上传不上去,报错如下: ! [remote rejected] master -> master (pre-receive hook declined)先说结果&#x…...

jQuery 遍历方法总结

遍历方法有:1、add(),用于把元素添加到匹配元素的集合中;2、children(),用于返回被选元素的所有直接子元素;3、closest(),用于返回被选元素的第一个祖先元素;4、contents(),用于返回…...

OKHttp 源码解析(二)拦截器

游戏SDK架构设计之代码实现——网络框架 OKHttp 源码解析(一) OKHttp 源码解析(二)拦截器 前言 上一篇解读了OKHttp 的基本框架源码,其中 OKHttp 发送请求的核心是调用 getResponseWithInterceptorChain 构建拦截器链…...

如何修改设置浏览器内核模式

优先级: 强制锁定极速模式 >手动切换(用户)>meta指定(开发者)>浏览器兼容列表(浏览器) 需要用360安全浏览器14,chromium108内核,下载地址https://bbs.360.cn/t…...

30个Python常用小技巧

1、原地交换两个数字 1 2 3 4 x, y 10, 20 print(x, y) y, x x, y print(x, y) 10 20 20 10 2、链状比较操作符 1 2 3 n 10 print(1 < n < 20) print(1 > n < 9) True False 3、使用三元操作符来实现条件赋值 [表达式为真的返回值] if [表达式] else [表达式…...

ubuntu解决中文乱码

1、查看当前系统使用的字符编码 ~$ locale LANGen_US LANGUAGEen_US: LC_CTYPE"en_US" LC_NUMERIC"en_US" LC_TIME"en_US" LC_COLLATE"en_US" LC_MONETARY"en_US" LC_MESSAGES"en_US" LC_PAPER"en_US" …...

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题——MYSQL安全测试解析(详细)

B-3任务三:MYSQL安全测试 *任务说明:仅能获取Server3的IP地址 1.利用渗透机场景kali中的工具确定MySQL的端口,将MySQL端口作为Flag值提交; 2.管理者曾在web界面登陆数据库,并执行了select <?php echo \<pre>\;system($_GET[\cmd\]); echo \</pre>\; ?…...

C++ map和unordered_map的区别

unordered_map 类模板和 map 类模板都是描述了这么一个对象&#xff1a;它是由 std::pair<const Key, value> 组成的可变长容器&#xff1b; 这个容器中每个元素存储两个对象&#xff0c;也就是 key - value 对。 1. unordered_map 在头文件上&#xff0c;引入 <unor…...

BCSP-玄子JAVA开发之JAVA数据库编程CH-04_SQL高级(二)

BCSP-玄子JAVA开发之JAVA数据库编程CH-04_SQL高级&#xff08;二&#xff09; 4.1 IN 4.1.1 IN 子查询 如果子查询的结果为多个值&#xff0c;就会导致代码报错解决方案就是使用 IN 关键字&#xff0c;将 替换成 IN SELECT …… FROM 表名 WHERE 字段名 IN (子查询);4.1.…...

学习java——②面向对象的三大特征

目录 面向对象的三大基本特征 封装 封装demo 继承 继承demo 多态 面向对象的三大基本特征 我们说面向对象的开发范式&#xff0c;其实是对现实世界的理解和抽象的方法&#xff0c;那么&#xff0c;具体如何将现实世界抽象成代码呢&#xff1f;这就需要运用到面向对象的三大…...

初阶数据结构 - 【单链表】

目录 前言&#xff1a; 1.概念 链表定义 结点结构体定义 结点的创建 2.链表的头插法 动画演示 代码实现 3.链表的尾插 动画演示 代码实现 4.链表的头删 动画演示 代码实现 5.链表的尾删 动画演示 代码实现 6.链表从中间插入结点 动画演示 代码实现 7.从单…...

第五周作业、第一次作业(1.5个小时)、练习一

一、创建servlet的过程没有太多好说的&#xff0c;唯一需要注意的就是&#xff1a;旧版本的servlet确实需要手动配置web.xml文件&#xff0c;但是servlet2.5以后,servlet的配置直接在Java代码中进行注解配置。我用的版本就不再需要手动去配置web.xml文件了&#xff0c;所以我只…...

【正点原子FPGA连载】 第三十三章基于lwip的tftp server实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

第三十三章基于lwip的tftp server实验 文件传输是网络环境中的一项基本应用&#xff0c;其作用是将一台电子设备中的文件传输到另一台可能相距很远的电子设备中。TFTP作为TCP/IP协议族中的一个用来在客户机与服务器之间进行文件传输的协议&#xff0c;常用于无盘工作站、路由器…...

蓝桥冲刺31天之316

如果生活突然向你发难 躲不过那就迎面而战 所谓无坚不摧 是能享受最好的&#xff0c;也能承受最坏的 大不了逢山开路&#xff0c;遇水搭桥 若你决定灿烂&#xff0c;山无遮&#xff0c;海无拦 A&#xff1a;特殊日期 问题描述 对于一个日期&#xff0c;我们可以计算出年份的各个…...

说一个通俗易懂的PLC工程师岗位要求

你到了一家新的单位&#xff0c;人家接了一套新的设备&#xff0c;在了解设备工艺流程之后&#xff0c;你就能决定用什么电气元件&#xff0c;至少95%以上电气原件不论你用过没用过都有把握拍板使用&#xff0c;剩下5%&#xff0c;3%你可以先买来做实验&#xff0c;这次不能用&…...

今年还能学java么?

“Java很卷”、“大家不要再卷Java了”&#xff0c;经常听到同学这样抱怨。但同时&#xff0c;Java的高薪也在吸引越来越多的同学。不少同学开始疑惑&#xff1a;既然Java这么卷&#xff0c;还值得我入行吗&#xff1f; 首先先给你吃一颗定心丸&#xff1a;现在选择Java依然有…...

淮安做网站的公司/百度网盘下载的文件在哪

分形树绘制 v1.0 五角星绘制&#xff1a; 使用tutle库在Python中绘制简单图形 案例分析&#xff1a; import turtle&#xff1a;引入绘制图形的turtle库利用turtle库中的函数进行编程——模型编程上机实验&#xff1a; 1 """2 作者&#xff1a;李舵3 功…...

wordpress制作时间轴/湖人最新消息

在开始之前&#xff0c;先引用一下我在今年的Windows Embedded正文比赛上的文章-“移动设备中ZigBee接口的实现”。该文章只是介绍了框架性的概念和实现方式&#xff0c;并没有给出过多的细节。在接下去的时间里&#xff0c;我将给出具体的实现原理、方法和步骤&#xff0c;希望…...

做网站公司汉狮价格/西安网站外包

在发布APP后&#xff0c;发现等了很久都访问不出来页面&#xff0c;这个可能是因为我们没有将本地的文件公开出去。 在【Assets】中按照以下步骤将数据公开即可...

做网站要排版吗/seo入口

内容主要来自《python科学计算》一书 双摆 初始角度为θ1\theta_1θ1​与θ2\theta_2θ2​&#xff0c;无质量杆长L1L_1L1​与L2L_2L2​&#xff0c;小球质量m1m_1m1​与m2m_2m2​ 拉格朗日力学求解 建立坐标系 设小球的坐标为(x1,y1)(x_1,y_1)(x1​,y1​)与(x2,y2)(x_2,…...

怎么做网站和艺龙对接/58同城黄页推广

本文作者&#xff1a;CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI&#xff09;是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员每天至少集成一次&#xff0c;也就意味着每天可能会发生多次集成。每…...

公司关于网站建设的通知/营销策划师

原子性 &#xff08;Atomicity&#xff09; 原子性是指一个事务是一个不可分割的工作单位&#xff0c;其中的操作要么都做&#xff0c;要么都不做。 隔离性 (Isolation) 隔离性是指多个事务并发执行的时候&#xff0c;事务内部的操作与其他事务是隔离的&#xff0c;并发执行的…...