Linux应用开发————进程

并行与并发的区别?

并发:宏观上同时进行,微观上是异步执行的

并行:真正意义上的同时运行

计算机运行层面:

以单核CPU为例:它在同时运行多个程序,我们可以认为是并发执行

                            CPU在多个程序间快速切换执行,分配到某个程序的很小时间段,我们称为时间片

多核多线程CPU: 它在同时运行多个程序时,既有并发也有并行

进程简介

 进程的概念首先是在20世纪60年代初期有 MIT Multics 分时系统和IBMTSS/360系统引入的,在40多年的发展中,人们对进程有过各种各样的定义,列举较为著名的几种。

进程是一个独立的可调度的活动(Cohen, Jofferson);

进程是一个抽象的实体,当它执行某个任务时,要分配和释放各种资源。(P.Denning

进程是可以并行执行的计算单位(MadnickDonovan

本质:进程是程序的一次执行的过程,进程是程序执行和资源管理的最小单元。 在Linux环境下,每个正在运行的程序都称为进程

进程控制块(PCB)

 进程是Linux 系统中调度和管理资源的单位,那系统如何描述和表示一个进程的变化呢,答案是通过进程控制块来实现的。

进程控制块内容

进程的描述信(进程ID,进程状态…)

进程控制信息(调度信息,时间片,优先级…)

程的资源信(内存资源,打开的文件,使用的定时器…)

Linux 系统中进程控制块中的每一项都是通过 task_struct 结构体来表示,

定义在   #include  <linux/sched.h >头文件中的。

进程标识

既然进程是Linux 系统中基本的调度和管理资源的单位,那系统就需要能够唯一标识出每一个进程,才能更好的进行调度和管理的工作,Linux 系统是通过进程号(PID)来唯一的标识一个进程

父进程标识号:当前进程的父进程的标识,(PPID

PID PPID 都是非零的正整数。

进程的四大特征

    1.动态性: 进程它具有创建,运行,阻塞,消亡的过程,它是动态的

    2.并发性:  同一时段多个进程同时在执行,

    3.异步性:  多个进程不是齐头并进的(不是并行),而是有执行的先后顺序;对于单核CPU来说,某一刻只能运行一个进程

    4.独立性:  每个进程都运行在自己的内存空间上,进制之间的内存互不影响

进程间通讯:两个独立的进程通过某种手段,让两个进程的数据互通

进程状态及其状态转换:

    三种状态模型

    五种状态模型(重点掌握)

    七种状态模型

五种状态:

    1.创建态

    2.就绪态

    3.运行态

    4.阻塞态

    5.终止态

说明:进程从运行态到终止态的过程中,处于已经运行完毕,但内存资源还没有被回收时称为僵尸态

在代码执行过程中,我们更建议父进程后结束

vfork创建的子进程会共享父进程的数据,并且子进程先于父进程执行;

当子进程执行完毕后,会进入到僵尸态,经过内存回收后,进入到了终止态,此时子进程才执行完毕并退出了

而父进程再想访问内存上的数据,已经被回收了,所以取到的是一个不确定的值

进程基本操作(进程创建)

fork 

函数名:fork 


头文件:#include <unistd.h>

              #include <sys/types.h>


函数原型:pid_t fork(void);
功能:创建子进程


参数说明:1.无


返回值:fork 函数的奇妙之处在于调用一次,返回两次,可能有3种不同的返回值:
                父进程中,fork返回新创建的子进程的PID

                子进程中,fork返回0

                出错:返回 -1,并将错误码存入 errno 中

vfork 

函数名:vfork 


头文件:#include <unistd.h>

              #include <sys/types.h>


函数原型:pid_t vfork(void);
功能:创建子进程


参数说明:1.无


返回值:fork 函数的奇妙之处在于调用一次,返回两次,可能有3种不同的返回值:
                父进程中,fork返回新创建的子进程的PID

                子进程中,fork返回0

                出错:返回 -1,并将错误码存入 errno 中

fork和vfork的区别:

1.  fork  ():子进程拷贝父进程的数据段,代码段

    vfork ( ):子进程与父进程共享数据段

2.  fork ()父子进程的执行次序不确定

    vfork 保证子进程先运行,在调用exec 或exit 之前与父进程数据是共享的,在它调用exec

     或exit 之后父进程才可能被调度运行。

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

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

相关文章

Linux服务器安装mongodb

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…

Qml-TabBar类使用

Qml-TabBar类使用 TabBar的概述 TabBar继承于Container 由TabButton进行填充&#xff0c;可以与提供currentIndex属性的任何容器或布局控件一起使用&#xff0c;如StackLayout 或 SwipeView&#xff1b;contentHeight : real:TabBar的内容高度&#xff0c;用于计算标签栏的隐…

Vue3的通灵之术Teleport

前言 近期Vue3更新了一些新的内容&#xff0c;我都还没有一个一个仔细去看&#xff0c;但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。 官方对 Teleport 的解释是&#xff1a;<Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传…

uniapp echarts tooltip formation 不识别html

需求&#xff1a; echarts 的tooltip 的域名太长&#xff0c;导致超出屏幕 想要让他换行 思路一&#xff1a; 用formation自定义样式实现换行 但是&#xff1a; uniapp 生成微信小程序&#xff0c; echart种的tooltip 的formation 识别不了html &#xff0c;自定义样式没办…

idea2024加载flowable6.8.1.36遇到的问题-idea启动flowable问题flowable源码启动问题

代码下载地址&#xff1a; https://gitee.com/hanpenghu_admin_admin/flowable6.8.1.git 1.首先是通过顶层目录maven clean install 发现很多子模块并不会install本地mavenStore库&#xff0c;这导致了&#xff0c;一堆相互依赖的模块报错找不到&#xff0c;所以需要根据报错…

DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解

目录 引言 伪彩色映射的概念 基本原理 查找表&#xff08;Look-Up Table, LUT&#xff09; 步骤 示例映射方案 实现伪彩色映射的C代码 代码详解 伪彩色处理效果展示 总结 扩展知识 LUT 的基本概念 LUT 在伪彩色映射中的应用 示例 引言 在医学影像处理中&#xff0c…

【JavaEE 初阶】⽹络原理 - 初识

一、⽹络发展史 单机时代》局域网时代》广域网时代》移动互联网时代 1.独⽴模式 独⽴模式&#xff1a;计算机之间相互独⽴ 2.⽹络互连 随着时代的发展&#xff0c;越来越需要计算机之间互相通信&#xff0c;共享软件和数据&#xff0c;即以多个计算机协同⼯作来完成业务&am…

【工具】JS解析XML并且转为json对象

【工具】JS解析XML并且转为json对象 <?xml version1.0 encodingGB2312?> <root><head><transcode>hhhhhhh</transcode></head><body><param>ccccccc</param><param>aaaaaaa</param><param>qqqq<…

vue3+vite使用vite-plugin-electron-renderer插件和script-loader插件有冲突

报错信息&#xff1a;Error: Dynamic require of "path" is not supported 报错问题是在使用vite-plugin-electron-renderer插件不支持import动态引入&#xff0c;该报错信息并不准确&#xff0c;实际原因是vite-plugin-electron-renderer插件和script-loader插件有…

电子应用设计方案-28:智能云饭锅系统方案设计

智能云饭锅系统方案设计 一、系统概述 本智能云饭锅系统旨在为用户提供便捷、智能、个性化的烹饪体验&#xff0c;通过云技术实现远程控制、食谱分享、智能烹饪等功能。 二、系统组成 1. 饭锅主体 - 内胆&#xff1a;采用优质不粘涂层&#xff0c;具有良好的导热性和耐用性。 -…

OminiControl:一个新的FLUX通用控制模型,单个模型实现图像主题控制和深度控制

之前的文章中和大家介绍过Flux团队开源了一系列工具套件&#xff0c;感兴趣的小伙伴可以点击下面链接阅读~ AI图像编辑重大升级&#xff01;FLUX.1 Tools发布&#xff0c;为创作者提供了更强大的控制能力。 OminiControl 也开源了其可控生成模型。OminiControl 是一个最小但功…

小程序 - 本地生活

小程序页面和样式练习 - 本地生活小程序开发笔记 目录 本地生活 准备工作 加载图片素材 页面开发 页面样式开发 功能实现截图 总结 本地生活 本地生活”微信小程序是一个介绍本地美食、装修、工作等信息的微信小程序&#xff0c;该微信小程序的首页包含轮播图区域和九宫…

常见的Web安全漏洞——XSS

概念 跨站脚本攻击(XSS&#xff09;&#xff0c;指攻击者通过篡改网页&#xff0c;嵌入恶意脚本程序&#xff0c;在用户浏览网页时&#xff0c;控制用户浏览器进行恶意操作。 XXS的分类 反射型XSS存储型XSSDOM型XSS 原理 反射型XSS 接收用户提交的访问者的姓名&#xff0…

deepin 安装 chrome 浏览器

deepin 安装 chrome 浏览器 最近好多小伙伴儿和我说 deepin 无法安装最新的谷歌浏览器 其实是因为最新的 谷歌浏览器 其中的一个依赖需要提前安装 提前安装依赖然后再安装谷歌浏览器就可以了 安装 fonts-liberationsudo apt -y install fonts-liberation安装 chrome 浏览器sudo…

洛谷 P2385 [USACO07FEB] Bronze Lilypad Pond B C语言 bfs

题目&#xff1a; https://www.luogu.com.cn/problem/P2385 题目看仔细&#xff0c;是M行N列.八个方向数组依靠M1,M2&#xff0c;所以初始化方向数组要在主函数里面&#xff0c;传入bfs函数里。 #include <iostream> #include<algorithm> #include<queue>…

【61-70期】Java面试题深度解析:从集合框架到线程安全的最佳实践

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Java &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 文章题目&#xff1a;Java面试题深度解析&#xff1a;从集合框架到线程安全的最佳实践 摘要&#xff1a; 本…

简释下oracle的set define的使用场景

我们在使用oracle的时候&#xff0c;有些菜单表存在url字段&#xff0c;url字段中存在这&字符。但我们通过sql语句进行插入表记录的时候&#xff0c;数据库会提示要我们输入变量值。这个时候有些人难免会不知所措&#xff0c;今天告诉大家一个非常简单的办法解决。 一、问…

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

本章讲述数据结构中的六大排序算法 欢迎大佬们踊跃讨论&#xff0c;感谢大家支持&#xff01; 我的博客主页链接 六大排序算法 一.插入排序1.1 直接插入排序1.2 希尔排序 二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序 三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoa…

【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出&#xff0c;万山无阻 目录 &#x1f4d6;一、进程程序替换 1.替换的演示 ❓替换与执行流 ❓程序替换≠进程替换 2.替换的原理 …

python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)

文章目录 1、任务目标2、网站分析3、代码编写1、任务目标 目标网站:猫眼电影(https://www.maoyan.com/films?showType=2) 要求:抓取该网站下,所有即将上映电影的预约人数,保证能够获取到实时更新的内容;如下: 2、网站分析 进入目标网站,打开开发者模式,经过分析,我…