进程相关概念

news/2024/11/14 16:50:57/

1 程序和进程

  • 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu、内存、打开的文件、设备、锁…)
  • 进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。(程序运行起来,产生一个进程) 程序 →
    剧本(纸) 进程 → 戏(舞台、演员、灯光、道具…)
  • 同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)
    如:同时开两个终端。各自都有一个bash但彼此ID不同。

2 并发

  • 并发,在操作系统中,一个时间段中有多个进程都处于已启动运行到运行完毕之间的状态。但,任一个时刻点上仍只有一个进程在运行。
  • 例如,当下,我们使用计算机时可以边听音乐边聊天边上网。 若笼统的将他们均看做一个进程的话,为什么可以同时运行呢,因为并发。

3 单道程序设计

  • 所有进程一个一个排对执行。若A阻塞,B只能等待,即使CPU处于空闲状态。而在人机交互时阻塞的出现时必然的。所有这种模型在系统资源利用上及其不合理,在计算机发展历史上存在不久,大部分便被淘汰了。

4 多道程序设计

  • 在计算机内存中同时存放几道相互独立的程序,它们在管理程序控制之下,相互穿插的运行。多道程序设计必须有硬件基础作为保证。
  • 时钟中断即为多道程序设计模型的理论基础。 并发时,任意进程在执行期间都不希望放弃cpu。因此系统需要一种强制让进程让出cpu资源的手段。时钟中断有硬件基础作为保障,对进程而言不可抗拒。
    操作系统中的中断处理函数,来负责调度程序执行。
  • 在多道程序设计模型中,多个进程轮流使用CPU(分时复用CPU资源)。而当下常见CPU为纳秒级,1秒可以执行大约10亿条指令。由于人眼的反应速度是毫秒级,所以看似同时在运行。
  • 1s = 1000ms, 1ms = 1000us, 1us = 1000ns 1000000000
    实质上,并发是宏观并行,微观串行

5 CPU以及MMU

在这里插入图片描述MMU完成两大功能:1.虚拟地址到内存地址的地址变换;2.设置修改CPU对内存的访问级别

6 进程控制块PCB

在这里插入图片描述我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。
/usr/src/linux-headers-3.16.0-30/include/linux/sched.h文件中可以查看struct task_struct 结构体定义。其内部成员有很多,我们重点掌握以下部分即可:

  • 进程id。系统中每个进程有唯一的id,在C语言中用pid_t类型表示,其实就是一个非负整数。
  • 进程的状态,有就绪、运行、挂起、停止等状态。
  • 进程切换时需要保存和恢复的一些CPU寄存器。
  • 描述虚拟地址空间的信息。
  • 描述控制终端的信息。
  • 当前工作目录(Current Working Directory)。
  • umask掩码。
  • 文件描述符表,包含很多指向file结构体的指针。
  • 和信号相关的信息。
  • 用户id和组id。
  • 会话(Session)和进程组。
  • 进程可以使用的资源上限(Resource Limit)。

7 进程状态

进程基本的状态有5种。分别为初始态,就绪态,运行态,挂起态与终止态。其中初始态为进程准备阶段,常与就绪态结合来看。
在这里插入图片描述


http://www.ppmy.cn/news/98305.html

相关文章

【Hadoop】三、数据仓库基础与Apache Hive入门

文章目录 三、数据仓库基础与Apache Hive入门1、数据仓库基本概念1.1、数据仓库概念1.2、场景案例:数据仓库为何而来1.3、数据仓库主要特征1.4、数据仓库主流开发语言--SQL 2、Apache Hive入门2.1、Apache Hive概述2.2、场景设计:如何模拟实现Hive功能2.…

ArduPilot开源代码之H743+BMI270x2+ChibiOS配置适配

ArduPilot开源代码之H743BMI270x2ChibiOS配置适配 1. 源由2. 配置适配2.1 bootloader配置2.2 flight controller配置 3. 4.3.6固件编译Step 1: 获取源代码Step 2: 准备编译环境Step 3: 复制配置文件Step 4: 编译bootloaderStep 5: 编译飞控 4. 基础配置4.1 机型配置4.2 IMU校准…

docker部署文档dockercompose

docker部署文档 docker安装步骤 CentOS-7安装环境 1、更新系统软件包列表 sudo yum update2、添加docker仓库 # 下载阿里光碟源wget https://mirrors.aliyun.com/repo/Centos-7.repo# 下载阿里docker源wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.…

Opencv(图像处理)-基于Python-绘图功能

1.介绍2. line()3.rectangle()4.circle()5. ellipse()6.polylines()7.fillPoly()8. putText()代码示例9.用鼠标在图片上作图 1.介绍 OpenCV为开发者还提供了绘图功能,我们可以通过函数来实现在图片上作图。 2. line() 画线 cv2.line(img,开始点&#x…

Python教程:如何用Python编写FOFA爬虫获取信息?

部分数据来源:ChatGPT 前言 在网络安全领域,信息收集是非常重要的一环。而网上许多公开的信息都是通过搜索引擎、在线查询等方式获取的。其中,FOFA 是一个非常优秀的互联网数据搜索引擎,可以通过搜索特定的关键字来快速获取相关的数据。 虽然 FOFA 有很多强大的搜索功能,…

ICV报告: ADAS SoC市场规模将在2024年迎来较大突破

随着先进驾驶辅助系统(ADAS)的出现和对于自动驾驶的追求,汽车行业正在经历快速转型。这些技术进步的核心是ADAS SoC,它是实现多个功能集成于单一平台的关键组件。ADAS SoC已经成为智能汽车的重要驱动因素,彻底改变了安…

使用TensorFlow构建,绘制和解释人工神经网络

使用 Python 进行深度学习:神经网络(完整教程) 使用TensorFlow构建,绘制和解释人工神经网络 总结 在本文中,我将展示如何使用Python构建神经网络,以及如何使用可视化和创建模型预测解释器向业务解释深度学习…

ZKP加速 GPU/FPGA/ASIC

1. 引言 参考资料有: [1] Figment Capital团队2023年4月博客 Accelerating Zero-Knowledge Proofs [2] Ulvetanna团队2023年5月博客 Poseidon Merkle Trees in Hardware [3] supranational2023年1月博客 Open VDF: Accelerating the Nova SNARK-based VDF 【采用AS…