第二章.1节 进程基本概念

2023-05-16

(PS:个人课下整理的操作系统笔记,OneNote直接拷贝过来的,图片看不了就将就一下,配合张伟老师的PPT看效果更好)

一、进程定义

1.进程是具有某一个功能的程序在某一个数据集合上的执行过程,是资源调度分派的独立单位。

  • 调度:是从就绪队列中选择一个进程,不同的调度算法选择的结果不一样
  • 分派:把CPU的使用权交给选择出来的进程

2.进程也是执行中的程序,它包括 进程堆栈段(临时数据)、数据段(全局变量)、程序计数器

3.进程的两个基本特性:动态性(进程实质是程序的一次运行活动,有生命过程)、并发性(系统中可同时存在多个进程,各自互相独立的向前推进)

4.知道程序与进程的区别

  • 程序是完成所要求的功能时所应采取的顺序步骤,是执行指令的有序集合。
  • 进程是程序的一次运行活动,是一个动态概念
  • 区别:
    1. 程序是一个静止的概念,作为一种资源可以永久存放在磁盘上。进程是程序执行的动态活动过程,随程序执行而诞生,随程序执行结束而消亡。
    2. 静止状态的程序和数据是相互独立的信息集合。进程中的程序和数据是一个不可分割的实体。
    3. 一个程序可以对应多个进程

 

5.进程的组成部分:程序、数据、PCB(进程控制块)

  • PCB进程控制块包含管理特定进程的有关信息:进程状态、程序计数器、CPU寄存器、CPU调度信息、内存管理信息、记账信息、IO状态信息
  • 什么是PCB——PCB是操作系统内核中的数据结构,包含管理特定进程所需的信息(如上)

二、进程状态(新、就、运、等、停)

(记法:ready三个入度一个出度,running三个出度,上被下主)

CPU调度决策发生在以下四个黄色进程切换状态

状态转换的说明

  • 新-就绪(抢占):新进程被允许后进入就绪队列
  • 就绪-运行(抢占):当处理机空闲时,系统按照一定调度算法从就绪状态中选择一个使其占用处理机运行。
  • 运行-就绪(非抢占):分配给进程的时间片用完时,或出现一个更紧急的进程时
  • 运行-等待(非抢占):运行的进程需要等待某一事件发生后,才能继续往下运行
  • 等待-就绪(非抢占):处于等待的进程,如果其等待的事件已经发生,表示阻塞的原因已解除,则该进程从等待转为就绪

注意点:

  1. 等待进程在等待原因解除后,虽然再次具备了运行条件,但不能直接运行,而要先转换成就绪,等待调度
  2. 从运行态到就绪态的转换是被动的
  3. 从运行态到等待的转换是主动的
  4. 从等待到就绪的状态转换是由外部事件引起的

 

三、调度——从就绪队列中选择一个进程,不同的调度算法选择的结果不一样

1.三种调度(长期调度、短期调度、中期调度

  • 长期调度——作业调度,决定多道程序的度

choose a job among several ones ready to be brought into memory(into ready queue)

  • 短期调度——CPU调度,

choose a job among several ones ready to run(into cpu)

  • 中期调度medium-term scheduling

将进程从内存或者CPU中移出,降低多道程序的度

作用机制:改善进程组合、释放内存

 

四、上下文切换(context switch)

1.任务——保存CPU当前的运行状态(旧进程状态存在PCB中)并加载新进程的保存状态

2.上下文切换是系统的额外开销,切换时系统不能做其他工作

 

五、创建进程

1.父进程与子进程

父进程可以与子进程并发执行,也可以等待子进程执行完毕,父进程再继续执行

2.fork()创建一个新进程并拷贝父进程的程序和指令,exec()把子进程的内容更新成想要的

3.父进程的返回值=子进程的标号(非0),子进程的返回值=0,作用是防止进程的无限创建

 

六、生产者消费者问题——协作进程的通用范例

Bounded buffer (有限缓冲)问题

1.初始化一个有限缓冲空间,in=0,out=0;

2.当in==out,缓冲区空

当(in+1)%buffersize==out,缓冲区满

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第二章.1节 进程基本概念 的相关文章

  • ORB-SLAM2的稠密重建实战(1) — 流程与函数功能说明

    目录 0 系统整体流程 1 输出信息 2 初始化文件 3 初始化并运行追踪线程Tracking Step1 xff1a 地图初始化 Step2 xff1a 初始化成功 xff08 mbOnlyTracking xff09 Step3 xff
  • SLAM面试笔记(5) — ROS面试

    目录 1 ROS概述 2 ROS通信机制 问题 xff1a 服务通信概念 问题 xff1a 服务通信理论模型 问题 xff1a 参数服务器概念 问题 xff1a 参数服务器理论模型 问题 xff1a 参数服务器实现函数 3 ROS常用命令
  • 多线程常见的面试题

    多线程常见的面试题 xff1a 1 什么是线程和进程 线程与进程的关系 区别及优缺点 xff1f 进程是程序的一次执行过程 xff0c 是系统运行程序的基本单位 xff0c 因此进程是动态的 系统运行一个程序即是一个进程从创建 xff0c
  • docker 错误 WARNING: IPv4 forwarding is disabled. Networking will not work.

    这个错误出现在使用 docker 的服务器上 xff0c 当你进入 docker 容器时 xff0c 如果出现这样的 WARNING 提示 xff0c 则表示服务器没有开启 IPv4 转发 xff0c 按照本文的方法配置开启转发即可 错误提
  • 嵌入式中异常/中断/事件的区别

    嵌入式中异常 xff0f 中断 xff0f 事件的区别 Cortex M3在内核水平上搭载了一个异常响应系统 xff0c 支持为数众多的系统异常和外部中断 其中 xff0c 编号1 15的对应系统异常 xff0c 大于等于16的则都是外部中
  • 【起航】OpenHarmony远征02

    OpenHarmony内核 目前OpenHarmony针对不同量级的系统 xff0c 可以使用不同形态的内核 xff0c 轻量和小型的系统可以使用Liteos xff0c 小型和标准系统可以使用Linux Liteos系统是面向IOT领域的
  • momenta面经总结

    一 C 43 43 01 堆和栈的区别 xff0c 栈的静态分配和动态分配 xff1f 栈由操作系统分配释放 xff0c 用于存放函数的参数值 局部变量等 xff0c 栈中存储的数据的生命周期随着函数的执行完成而结束 堆由开发人员分配和释放
  • Orbslam2使用opencv4解决cv_bridge冲突问题

    在研究orbslam2在opencv4下使用会和cv bridge4冲突 解决方法 xff1a 1条消息 ROS学习 xff1a cv bridge与opencv版本冲突三种解决方案 Mr Qin 的博客 CSDN博客 cv bridge
  • 智能车浅谈——方向控制篇

    文章目录 前言自动控制理论人工控制系统自动控制 方向控制典型环节对应典型环节分析给定环节与给定量比较环节与偏差量控制环节与控制量执行机构舵机PWM技术舵机中值及限幅转向控制 被控对象与被控量反馈对象与反馈量 控制思路结束语智能车系列文章汇总
  • 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言GPIO相关的寄存器GPIO 端口模式寄存器 GPIOx MODER x 61 A I 位操作 GPIO 端口输出类型寄存器 GPIOx OTYPER x 61 A I GPIO 端口输出速度寄存器 GPIO
  • 2021-基于卷积和LSTM神经网络的视频分类时间融合方法在暴力检测中的应用

    A Temporal Fusion Approach for Video Classification with Convolutional and LSTM Neural Networks Applied to Violence Dete
  • uni-app(Vue)直播拉流

    html span class token tag span class token tag span class token punctuation lt span div span span class token attr name
  • Docker 容器常见故障排查及处理

    Docker 容器常见故障排查及处理 本文来源于公司论坛发表的帖子 Docker是一种相对使用较简单的容器 xff0c 我们可以通过以下几种方式获取信息 xff1a 1 通过docker run执行命令 xff0c 或许返回信息 2 通过d
  • CMake教程

    本文参考 xff1a 1 https blog csdn net whahu1989 article details 82078563 2 https blog csdn net kai zone article details 82656
  • docker / containerd 错误 panic: invalid freelist page: 162, page type is leaf

    错误描述 containerd 服务启动失败 xff0c 使用命令 journalctl xe u containerd 查看日志如下所示 xff1a span class token punctuation span root 64 k8
  • 制作自己的rosgo

    制作自己的rosgo 首先 xff0c 什么是rosgo xff1f ROS2GO xff08 ROS To Go xff09 是一款随时可用的高速USB闪存驱动器 xff0c 已安装Ubuntu ROS和常用软件包 xff0c 可以从外部
  • 解决libssl.so.1.0.0 => not found以及libcrypto.so.1.0.0 => not found

    现在的apt源中 xff0c libssl1 0的版本一般是libssl1 0 2 xff0c libcrypto1 0的版本一般是libcrypto1 0 2 但是很多应用要使用libssl so 1 0 0和libcrypto so 1
  • cmake设置默认CMAKE_BUILD_TYPE

    原文 xff1a https cmake org pipermail cmake 2009 June 030311 html 在CMakeLists txt里写入 IF NOT CMAKE BUILD TYPE set CMAKE BUIL
  • 进程:fork的使用

    1 用fork函数创建一个进程 pid t fork void fork函数调用成功 xff0c 返回两次 返回值为0 xff0c 代表当前进程是子进程 返回值非负数 xff08 子进程的进程ID xff09 xff0c 代表当前进程为父进
  • 8.15美团笔试和奇葩赛码网的输入坑

    第一次用赛码网 xff0c 两个小时的笔试居然有一个半小时在查如何正确输入 xff0c 最要命的是在本地IDE上可以的输入到了网页上就GG了 看来是leetcode刷多了 xff0c 文件流那块学的也很糟糕 总结一下下次避免跳坑吧 一行的就

随机推荐

  • 大小端与字节序转换

    大端小端 不同机器内部对变量的字节存储顺序不同 xff0c 有的采用大端模式 big endian xff0c 有的采用小端模式 little endian 大端模式是指高字节数据存放在低地址处 xff0c 低字节数据放在高地址处 小端模式
  • 解决ubuntu安装后只有一个800x600的分辨率,且系统设置显示里也只有这个分辨

    1 修改 etc default grub 打开终端用命令 xff1a sudo gedit etc default grub 会出现下面的代码 xff1a If you change this file run update grub a
  • DRV8833直流电机驱动模块代替 TB6612FNG电机驱动

    江科大自化协TB6612使用DRV8833代替 xff0c 以及使用方法 文章目录 前言一 两种模块对比二 HAL库驱动的使用步骤1 配置CubeMX 前言 购买了国产DRV8833模块驱动直流电机 xff0c 单片机3 3V的GPIO口无
  • Spring boot Json字符串传输 " 转义问题解决

    在接收前端返回过来的json字符串时 xff0c 发现出现 34 被转义的情况 xff0c 这里记录下解决方式 xff0c 获取到json字符串的时候我们可以使用工具类去进行转就可以了 xff0c 使用 org apache commons
  • 计算机三级Linux应用与开发技术

    第1章 计算机体系结构与操作系统 一 选择题 1 操作系统负责管理计算机系统的 xff08 C xff09 xff0c 其中包括处理器 储存器 设备和文件 A 程序 B 文件 C 资源 D 进程 2 操作系统是一种 xff08 B xff0
  • Linux 命令 cp mv 花括号用法

    Linux 命令行使用 mv 重命名文件时 xff0c 巧妙的使用 可以很方便 xff0c 最常见的就是把一个文件加个后缀临时备份 例如 xff1a span class token function mv span files local
  • FreeRTOS的调度器源码分析及系统滴答SysTick

    1 PendSV系统调用 查遍了C站上所有关于FreeRTOS调度器的分析 xff0c 发现大家分析完vTaskStartScheduler 之后就戛然而止了 xff0c 我就会比较迷糊 xff0c 这个仅开启了调度器的调度 xff0c 而
  • 从零适配IMX6ULL开发板Linux系统——uboot移植

    串口驱动搜 CP210 下载 目的 xff1a 当拿到一块儿完全没有系统的开发板 xff0c 厂家并没有提供给我们对应的Linux系统 xff0c 从芯片厂家提供的原厂资料中 xff0c 修改并适配自己的开发板 我们需要做的步骤如下 xff
  • NXP IMX6ULL芯片时钟系统全概况

    本文主要针对IMX6ULL芯片的时钟系统进行分析 xff0c 并没有针对哪款开发板 xff0c 毕竟是芯片的问题 一 硬件原理图分析 对于IMX6ULL芯片有两个时钟源 xff0c 我使用的开发板是百问网IMX6ULL xff0c 其他IM
  • 【FreeRTOS】FreeRTOS内存管理的五种方式

    内存管理 1 FreeRTOS为什么要实现自己的内存管理 内存的动态管理是C语言程序的知识范围 xff0c 并不属于FreeRTOS的知识范畴 xff0c 但是它跟FreeRTOS关系是如此紧密 在C语言的库函数中 xff0c 有mallc
  • 【存储】存储特性

    存储特性 精简配置技术 xff08 SmartThin xff09 SmartThin主要功能容量虚拟化存储空间写时分配 xff1a Capacity on Write读写重定向 xff1a Direct on Time应用场景及配置流程
  • 【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50

    存储 RAID基本概念RAID数据组织形式RAID数据保护方式常用RAID级别与分类标准创建RAID组成员盘要求 热备盘 xff08 Hot Spare xff09 RAID 0的工作原理RAID 0的数据写入RAID 0的数据读取 RAI
  • 【存储】RAID2.0+、多路径技术、磁盘可靠性技术

    RAID2 0 43 RAID 2 0 43 技术RAID技术发展RAID 2 0 43 软件逻辑对象RAID 2 0 43 基本原理硬盘域Storage Pool amp TierDisk Group xff08 DG xff09 LD
  • http请求digest auth认证

    1 post请求 public static String postMethod String url String query String host throws IOException String content 61 null 认
  • npm install 报错? fs 不能被resolve ?

    先看一下报错信息 然后我按照他的提示去 node modules 里面找到对应文件 xff0c 注释掉 fs 相关就ok了 可是这样毕竟不雅 经过苦苦寻找 xff0c 终于找到原因了 在 webpack config js 中添加如下 与
  • 树莓派3B+安装Ubuntu16.04系统(64位)

    目录 系统下载 Ubuntu16 04系统 补丁 刷系统 换源 改DNS网关 无线 U盘挂载 原文 系统下载 感谢公众号 xff1a 树莓派爱好者基地 更多系资源请关注公众号 Ubuntu16 04系统 链接 xff1a https pan
  • 将浏览器请求直接导入到 Postman Apifox 中

    方法就是如下图所示 xff0c 好像不需要过多文字来赘述了 应用场景就是浏览器 F12 debug 到的请求 xff0c 可以直接拷贝为 cURL 请求 xff0c 拷贝的内容 xff0c 包含了 请求头 参数 请求体所有内容 xff0c
  • SMPL-论文解读

    文章目录 创新点算法shape blend shape xff1a pose blend shapeJoint locationSMPL model 训练过程Pose Parameter Trainingjoint regressorSha
  • Jetson Xavier NX 刷机烧录及备份还原

    文章目录 前言一 准备二 详细流程1 准备OS升级包2 主机和Jetson产品连接3 系统安装4 载入镜像5 提取 Jeston Xavier NX 母板镜像5 1 在PC端搭建烧录环境5 2 提取镜像 6 镜像还原 xff08 批量复制烧
  • 第二章.1节 进程基本概念

    xff08 PS xff1a 个人课下整理的操作系统笔记 xff0c OneNote直接拷贝过来的 xff0c 图片看不了就将就一下 xff0c 配合张伟老师的PPT看效果更好 xff09 一 进程定义 1 进程是具有某一个功能的程序 在某