linux高级编程(进程)(1)

news2024/11/20 20:43:30

进程:

进程的含义?

进程是一个程序执行的过程,会去分配内存资源,cpu的调度

进程分类:
        1、交互式进程
        2、批处理进程   shell脚本 
        3、 守护进程 

进程与程序的区别:

    1)程序是永存,进程是暂时的
    2)进程有程序状态的变化,程序没有
    3)进程可以并发,程序无并发
    4)进程与进程会存在竞争计算机的资源
    5)一个程序可以运行多次,变成多个进程

一个进程可以运行一个或多个程序

进程的作用:

并发并行(各执行各的)

进程的状态:

4.进程的状态:
    3个状态,就绪→执行态→阻塞(等待,睡眠)基本操作系统
    linux中的状态,运行态,睡眠态,僵尸态,暂停态。

使用了一个结构体pcb(进程控制块),用于存储进程的数据,实现控制进程

(1)运行态(running):进程占有处理器正在运行。

(2)就绪态(ready):进程具备运行条件,等待系统分配处理器以便运行。

(3)阻塞态(blocked):又称为或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。

(4)僵尸态(zombie):子运行完,父没运行完,子进程会以终止状态保持在进程表中,并且会一直在等待父进程读取才能退出。

(5)孤儿态:父运行完,子没运行完,子处于托管状态,加重系统负担

进程的调度,进程上下文切换

内核主要功能之一就是完成进程调度, 硬件,bios,io,文件系统,驱动
    调度算法, other,idle
                rr,fifo
    宏观并行(从人的视角,程序是多个运行)
    微观串行(从计算机的视角,一次只能运行一行代码,也就是说这一时刻只能运行一个进程)

查询进程相关命令

    1.ps aux

    查看进程相关信息

        1.就绪态、运行态    R
        2.睡眠态、等待态    
            可唤醒等待态    S
            不可唤醒等待态    D
        3.停止态    T
        4.僵尸态    Z
        5.结束态    

    2.top
    根据CPU占用率查看进程相关信息
    
    3.killall -9 进程名
    发送信号 进程名对应的所有进程
    killall a.out

内存分布:

0-3G,是进程的空间,3G-4G是内核的空间

虚拟地址:
    在逻辑上不存在,即无法成为可供硬件读取的电信号,但实际占有内存空间,保护了程序运行

fork():

    父进程从文件头开始走,子进程从fork的位置开始走

    pid_t fork(); 叉子
    一次调用,会返回两次。
    子进程先运行和是父进程先进程,顺序不确定。
    变量不共享。
    子进程复制父进程的0到3g空间(物理内存)和父进程内核中的PCB,但id号不同。
    功能:通过该函数可以从当前进程中克隆一个同名新进程。
          克隆的进程称为子进程,原有的进程称为 父进程。
          子进程是父进程的完全拷贝。
          子进程的执行过程是从fork函数之后执行。
          
          子进程与父进程具有相同的代码逻辑。

    返回值:int 类型的数字。
            在父进程中:成功 返回值是子进程的pid号 >0
                        失败 返回-1;
            在子进程中:成功 返回值 0
                        失败 无

fork()&&fork()||fork();
    生成几个子进程?5个

首先,fork看做一个变两个,一个父一个子,并且,根据其子进程只会从生成该子节点的fork()开始运行,可以理解为从该节点处开始分叉

这里还要知道逻辑运算符的截断特性(短路特性),(即已经确定结果的值时,不会继续往后运行),给fork加上编号(1&&2||3),

在父进程中运行时:此时1返回值为1,在最上层展开分支;判断2,返回值也为1,在第二层的1后展开分支,||运算的结果此时已经能确定,不会去运行3

注意:此时相当于这个父节点有两个子节点

父进程运行完:

在子进程中运行时:此时1返回值为0,不会去判断2,只会执行3,也就是所有子节点分叉一次

最终结果:

2.getpid

pid_t getpid(void);
    功能:
        获得调用该函数进程的pid
    参数:
        缺省
    返回值:
        进程的pid

3.getppid

pid_t getppid(void);
    功能:
        获得调用该函数进程的父进程pid号
    参数:
        缺省
    返回值:
        返回父进程id号

父子进程的关系:

子进程是父进程的副本。子进程获得父进程数据段,堆,栈,正文段共享。
    
    在fork之后,一般情况那个会先运行,是不确定的。如果非要确定那个要先运行,需要IPC机制。
    
    区别:
    1)fork的返回值
    2)pid不同

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

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

相关文章

古文字识别笔记

前置知识 部件:大部分的汉字是由若干组笔画结构拼合而成的,这些相对独立的笔画结构称为「部件」。 部件是大于基本笔画(例如:点、横、撇、捺等)而小于或等同于 偏旁 的结构单位。 例如「测」字有三个部件:…

Qt开发 | Qt控件 | QTabWidget基本用法 | QListWidget应用详解 | QScrollArea应用详解

文章目录 一、QTabWidget基本用法二、QListWidget应用详解1.列表模式1.1 基本操作1.2 添加自定义item1.3 如何添加右键菜单1.4 QListWidget如何删除item 2.图标模式 三、QScrollArea应用详解 一、QTabWidget基本用法 QTabWidget 是 Qt 框架中的一个类,它提供了一个选…

微深节能 堆取料机动作综合检测系统 格雷母线

系统描述: 格雷母线高精度位移测量系统,包括格雷母线、天线箱、地址解码器、地址编码器四个部分组成。 格雷母线类似一把有刻度的尺子,沿着移动机车运行轨道方向上铺设,格雷母线长度可以根据工程需要长度来定制。天线箱类似指针&a…

企智汇软件:机电工程项目管理系统智能化管理,洞悉项目全貌!

在机电工程领域,项目管理的复杂性要求系统不仅要能够处理大量的数据和信息,还要能够提供实时的洞察和分析,以支持快速而明智的决策。企智汇机电工程项目管理系统正是为了满足这些需求而设计的,它通过一系列先进的功能,…

Vue-Ci搭建项目

项目创建 vue-cli 官方提供的一个脚手架,用于快速生成一个vue的项目模板;预先定义 好的目录结构及基础代码,就好比咱们在创建Maven项目时可以选择创建一个 骨架项目,这个骨架项目就是脚手架,我们的开发更加的快速; 主要的功能 ● 统一的目录结构 ● 本地调试 热部署 ● 单元…

教师资格证考试笔试报名流程

文章目录 前言笔试报名流程一、登录官网二、选择报考省份三、注册报名账号四、确认考试承诺五、填报个人信息六、上传个人照片七、查看个人信息八、笔试报名九、等待审核十、考试缴费最后(必看)附录1. 中小学教师资格考试网2. 广东省教资笔试报名通知&am…

ChatGPT在程序开发中的应用:提升生产力的秘密武器

在当今飞速发展的科技时代,程序开发已经成为许多企业和个人必不可少的技能。然而,编写代码并非总是顺风顺水,面对复杂的算法、繁琐的调试、持续不断的需求变更,程序员们常常感到压力山大。在这种情况下,ChatGPT应运而生…

像素流送技术,潜力巨大还是功能不足?

像素流送技术作为UE引擎自带的一款扩展性模块,尽管这项技术拥有一定的潜力,但与市场上成熟的云推流产品相比,它在配套功能方面仍显薄弱。 都有哪些具体表现呢? 一、维护和更新成本高 像素流送云推流需要开发团队在研发阶段投入…

五子棋纯python手写,需要的拿去

import pygame,sys from pygame import * pygame.init()game pygame.display.set_mode((600,600)) gameover False circlebox [] # 棋盘坐标点存储 box [] def xy():for x in range(0,800//40): for y in range(0,800//40): box.append((x*40,y*40)) xy() defaultColor wh…

周转车配料拣货方案

根据周转车安装的电子标签,被悬挂的扫码器扫到墨水屏显示的二维码,投屏发送配料拣货的数据。 方便快捷分拣物料

未来出行新选择——加油宝APP,让您的每一次加油都充满智慧与便捷!

一、前言 随着科技的飞速发展,智能手机已经成为我们生活中不可或缺的一部分。为了满足广大车主对便捷、高效加油服务的需求,我们倾力打造了全新的加油宝APP。这款APP不仅为您提供一站式的加油服务,还融合了多项创新功能,让您的出…

低碳短视频:成都柏煜文化传媒有限公司

低碳短视频:绿色传播的新风尚 随着全球气候变化和环境问题日益严峻,低碳生活已经成为人们追求的新风尚。在这个背景下,低碳短视频应运而生,以其独特的方式传播绿色理念,推动低碳生活方式的普及。成都柏煜文化传媒有限…

nextjs-创建layouts共用UI和独立pages页面

原文链接:https://nextjs.org/learn/dashboard-app/creating-layouts-and-pages 01-nextjs起步02-css样式03-处理字体和图片05-页面之间的导航跳转更多 到目前为止,您的应用程序只有一个主页。让我们学习如何使用布局和页面创建更多路由。 本章目标 …

智慧芯片,点亮未来——免费可视化大屏模板

一、什么是智慧芯片可视化大屏? 智慧芯片可视化大屏,集成了先进芯片技术和可视化技术。它不仅能够实时处理海量数据,还能以直观、生动的图像形式展示给用户,让复杂的数据变得一目了然。如图: 山海鲸可视化智慧芯片大屏…

实战|记一次java协同办公OA系统源码审计

前言 因为笔者也是代码审计初学者,写得不好的地方请见谅。该文章是以项目实战角度出发,希望能给大家带来启发。 审计过程 审计思路 1、拿到一个项目首先要看它使用了什么技术框架,是使用了ssh框架,还是使用了ssm框架&#xff…

阿里提出MS-Diffusion:一键合成你喜爱的所有图像元素,个性化生成新思路!

文本到图像生成模型的最新进展极大地增强了从文本提示生成照片级逼真图像的能力,从而增加了人们对个性化文本到图像应用的兴趣,尤其是在多主题场景中。然而,这些进步受到两个主要挑战的阻碍: 需要根据文本描述准确维护每个参考主题…

黑马程序员Java基础学习,涉及精细知识点复习【持续更新】

文章目录 01java基础java基础面向对象1.类:2.成员变量:类中方法外的变量,不能赋值3.成员方法:4.java内存分配:5.成员变量有初始值,局部变量没有初始值。6.this关键字:7.封装:8.构造方…

软硬链接 以及 动静态链接

目录 1 软硬链接 2 动静态库 1 软硬链接 不知道大家也没有仔细看过我们的 windows 中的快捷方式的内容,我们右键点开一个快捷方式然后查看其属性,我们发现有一个 目标 的内容 这个目标是一串路径,这也就是我们的程序的安装路径中的一个.exe…

AWS在国内的持续受欢迎:探究背后的原因

亚马逊云(AWS)作为全球领先的云计算服务提供商,在国内市场仍然保持着强劲的竞争力和广泛的用户群。尽管国内也有一些本土云计算服务提供商的崛起,但AWS在国内仍然有大量的用户在使用。我们九河云,一直致力AWS云相关服务…

mapstruct实现各个实体间的类型转换(DTO转BO、BO转Entity)的实践

一、引入 在没有遇见mapstruct的时候,实现各个实体之间的转换,都是手动转换实现的,属性少一带你还好,当属性一多,代码就会变得很冗余,没必要的非逻辑的代码就会加多。。。。 比如: public cl…