liunx操作系统 进程的基本概念

news2024/11/18 17:11:56

进程的基本概念

  • 计算机结构体系
    • 冯诺依曼
  • 操作系统的管理
  • 进程
    • 进程的特性
      • 标识符
      • 系统的调用 创建新的进程
    • 进程的状态
      • 进程队列
      • 进程的状态
      • 在liunx查看进程状态、

计算机结构体系

冯诺依曼

在这里插入图片描述
在没有存储器之前,所有的信息都是直接进入CPU,这样效率很差,因为读入,写出的速度远远慢于cpu计算的速度。所以中间加入缓存区,让cpu从内存中读取,读取的速度很快。所以冯诺依曼体系,极大层度,弥补了读入和写出速度慢的问题。

操作系统的管理

管理是一个抽象的词,我们可以描述一个管理的场景:
在这里插入图片描述
校长是管理者,督导员是传递消息的,学生是执行者。
回到计算机。 操作系统就是管理者,他是一款管理软件,督导员就是各种驱动,学生则是硬件设备。在操作系统的管理下,操作系统用结构体描述结构体的,该结构体描述了设备的重要特性,通过管理特性数据管理你,比如设置你关机,你就关机。

进程

进程的概念:进程是操作系统最重要的概念,他在书上都是说他是运行起来的程序。
在这里插入图片描述
由操作系统管理进程, 而进程则由两部分组成 进程控制块+运行的程序。运行的程序受到进程控制块pcb的管理。

进程的特性

标识符

进程在win中可以在任务管理器中查看,但是在liunx中只能用命令
在这里插入图片描述
我们也可结合管道
在这里插入图片描述
接下来,我们将看到第一个跑起来的进程
在这里插入图片描述
程序中: 会一直跑接下来我们查看程序的运行情况:

在这里插入图片描述
test是运行起来的程序其pid是其唯一标识符。
我们如何拿到进程的pid号的呢?在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
他的运行代码是:
在这里插入图片描述
重要概念:进程的工作目录
如何查看进程存在的位置呢?
在这里插入图片描述
工作目录
在这里插入图片描述
工作目录是程序写入文件中。比如我们使用程序创建一个文件,那么这个文件就在这里。也就是工作目录。

系统的调用 创建新的进程

首先认识一个函数fork
在这里插入图片描述
fork函数的功能如下:
为什么两个进程的fpid不同呢,这与fork函数的特性有关。fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:
1)在父进程中,fork返回新创建子进程的进程ID;
2)在子进程中,fork返回0;
3)如果出现错误,fork返回一个负值;

此时我们便可以通过返回值的不同:让父子进程干不同的事情。
在这里插入图片描述

进程之间是相互独立的,杀掉子进程,不影响父进程。同样,杀掉父进程,也不影响子进程。

进程的状态

进程队列

在这里插入图片描述
当程序中向硬件读取数据时,进程就会一直等着。当然,cpu并不是一直只为一个进程提供服务,在一个时间片内,cpu只为此进程提供服务。此时,排队就是必要的了。注意,此时排队的是,pcb进程控制块。
在这里插入图片描述小助手: 偏移量的求法:
在这里插入图片描述

进程的状态

进程的一般状态

  1. 运行:运行是程序正在进行的一般状态
  2. 阻塞:阻塞是程序正在等待资源的状态
  3. 挂起:当操作系统内存吃紧,操作系统将阻塞的部分进程拷贝到磁盘中。该进程被暂时挂起。
    等待其实就是排队,也就是pcb代替我进程去排队。

在liunx查看进程状态、

在这里插入图片描述
liunx有以上的几种状态

首选 ,我们写一个运行起来的父子程序。
在这里插入图片描述

在这里插入图片描述
神奇的是 test并不是r状态,而是s状态,s状态是浅度睡眠,浅度睡眠是可以打断的睡眠。D是 深度睡眠,深度睡眠,不可以被杀掉。
接下来,我们看T状态:使用命令kill -19 即可暂停进程

在这里插入图片描述
此时kill -18就可以继续运行

接下来,我们介绍孤儿进程,僵尸进程。
运行下面代码:

#include<iostream>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
using namespace std;

int main()
{
  cout<<"mypid:"<<getpid()<<" "<<"myppid:"<<getppid()<<endl;
pid_t  x=fork();
int i=5;
int k=10;
if(x==0)
{
  while(i)
  {
    i--;
cout<<"我是子"<<endl;
  cout<<"mypid:"<<getpid()<<" "<<"myppid:"<<getppid()<<endl;
sleep(1);
  }
  exit(0);

}
else
{
  while(k)
  {
    k--;
cout<<" 我是父"<<endl;  
  cout<<"mypid:"<<getpid()<<" "<<"myppid:"<<getppid()<<endl;
sleep(2);
}
}
return 0;
}

当5次循环结束后,子进程结束,子进程并不会直接被干掉,而是变为僵尸进程,僵尸进程是等待父进程接受退出数据用的。
僵尸进程的危害:

  1. 僵尸进程的退出状态必须一直维持下去,因为它要告诉其父进程相应的退出信息。可是父进程一直不读取,那么子进程也就一直处于僵尸状态。
  2. 僵尸进程的退出信息被保存在task_struct(PCB)中,僵尸状态一直不退出,那么PCB就一直需要进行维护。
  3. 若是一个父进程创建了很多子进程,但都不进行回收,那么就会造成资源浪费,因为数据结构对象本身就要占用内存。
  4. 僵尸进程申请的资源无法进行回收,那么僵尸进程越多,实际可用的资源就越少,也就是说,僵尸进程会导致内存泄漏。

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

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

相关文章

【Go语言】Go语言中的切片

Go语言中的切片 1.切片的定义 Go语言中&#xff0c;切片是一个新的数据类型数据类型&#xff0c;与数组最大的区别在于&#xff0c;切片的类型中只有数据元素的类型&#xff0c;而没有长度&#xff1a; var slice []string []string{"a", "b", "c…

LabVIEW磁阻自动优化测量系统

LabVIEW磁阻自动优化测量系统 介绍了一种基于LabVIEW开发的磁阻自动优化测量系统&#xff0c;通过自动优化测试分辨率和高度模块化设计&#xff0c;大幅提升磁阻测试的效率和准确性。系统采用功率电源、电磁铁、高分辨率特斯拉计、步进电机转动器、精密电流源与精准电压表等硬…

Zookeeper启动报错排查

前言&#xff1a;生产linux部署的zookeeper&#xff0c;执行启动脚本后&#xff0c;还是无法使用&#xff0c;故进行重启排查 在zookeeper的bin目录下执行 ./zkServer.sh start-foreground 可实时查看启动日志排查问题 根据上面的日志可以看出&#xff0c;是zoo.cfg配置文件里…

Vue3之属性传值的四种情况

文章目录 Vue3之属性传值的四种情况一、引言二、父组件向子组件传值三、子组件向父组件传值四、祖先组件向后代组件传值五、兄弟组件之间传值 Vue3之属性传值的四种情况 一、引言 在vue3中&#xff0c;组件与组件之间是可以传递属性的&#xff0c;包括三种类型&#xff1a; …

【vue】什么是虚拟Dom,怎么实现虚拟DOM,虚拟DOM一定更快吗

什么是虚拟Dom 虚拟 DOM 基于虚拟节点 VNode&#xff0c;VNode 本质上是一个对象&#xff0c;VDOM 就是VNode 组成的 废话&#xff0c;js 中所有的东西都是对象 虚拟DOM 为什么快&#xff0c;做了哪些优化 批量更新 多个DOM合并更新减少浏览器的重排和重绘局部更新 通过新VDO…

2024年腾讯云优惠券领取、使用、常见问题解答

随着云计算技术的日益普及&#xff0c;越来越多的个人和企业选择将业务迁移到云端。腾讯云作为国内领先的云计算服务提供商&#xff0c;经常推出各种优惠活动吸引用户上云&#xff0c;其中就包括发放腾讯云优惠券&#xff0c;本文将为大家详细介绍2024年腾讯云优惠券的领取、使…

【前端入门】设计模式+单多页+React

设计模式是一种解决特定问题的经验总结&#xff0c;它提供了经过验证的解决方案&#xff0c;可以在软件开发过程中使用。设计模式可以帮助前端开发人员更有效地组织和管理代码&#xff0c;并提供一种共享的语言和框架&#xff0c;以便与其他开发人员进行交流。 以下是一些常见…

XXL-JOB调度中心——定时任务

1、在调度中心新增一个执行器 2、在项目工程的service工程添加依赖 <dependency><groupId>com.xuxueli</groupId><artifactId>xxl-job-core</artifactId> </dependency>3、在nacos上配置xxl-job xxl:job:admin: addresses: http://loca…

Rocky Linux 运维工具 mv

一、mv的简介 ​​mv​是Linux系统中的命令&#xff0c;用于移动文件或重命名文件。它可以在同一文件系统内将文件从一个目录移动到另一个目录&#xff0c;也可以修改文件的名称。 二、mv的参数说明 1、 三、mv的实战示例 1、重命名 ###查看目录/root/下的文件列表 [rootloc…

matlab批量替换txt文本文件的特定行的内容

1.下图所示&#xff0c;我想要替换第14行。 2.运行代码后&#xff0c;第14行已经更改为需要的内容。 clc,clear; %%----------------------需要更改的地方------------------------------------ % 设置要操作的文本文件路径&#xff0c;替换为你自己的文件路径 path D:\paper_…

如何在windows系统部署Lychee网站,并结合内网穿透打造个人云图床

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

STM32实现webserver显示数据及配置参数

之前已经在STM32中移植好了FREERTOSLWIP&#xff0c;要实现webserver配置参数及显示数据&#xff0c;需要使用到httpdcgissi cubeMx中配置以及代码实现参考&#xff1a;ECE471/571 (RTOS) STM32 FreeRTOSLwIP Example - Interactive Web Site 其实提到的将fsdata.c重命名为fs…

ruoyi框架学习

RBAC模型 数据字典 拦截器 token没有&#xff0c;submit&#xff0c;request.js中&#xff0c;前端前置拦截器&#xff0c;响应拦截器 后台 注解

强化学习Agent系列(二)——PyGame虚拟环境创建与Python 贪吃蛇Agent制作实战教学

文章目录 一、前言二、gymnasium 简单虚拟环境创建1、gymnasium介绍2、gymnasium 贪吃蛇简单示例 三、基于gymnasium创建的虚拟环境训练贪吃蛇Agent1、虚拟环境2、虚拟环境注册3、训练程序4、模型测试 三、卷积虚拟环境1、卷积神经网络虚拟环境2、训练代码 一、前言 大家好&am…

【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)

目录 1、锁的策略 1.1、乐观锁和悲观锁 1.2、轻量级锁和重量级锁 1.3、自旋锁和挂起等待锁 1.4、普通互斥锁和读写锁 1.5、公平锁和非公平锁 1.6、可重入锁和不可重入锁 2、synchronized 内部的升级与优化过程 2.1、锁的升级/膨胀 2.1.1、偏向锁阶段 2.1.2、轻量级锁…

如何调用GLM-4 API实现智能问答

诸神缄默不语-个人CSDN博文目录 GLM系列大模型是智谱AI提供的系列语言模型&#xff0c;GLM-4没有开源&#xff0c;只提供了API。本文介绍如何用Python语言调用GLM-4 API实现智能问答。 智谱AI为所有用户提供了18元免费额度&#xff0c;可以试用。 文章目录 1. 获得API key2. …

探索AI视频模型的无限可能:OpenAI的Sora引领创新浪潮

文章目录 &#x1f4d1;前言一、技术解析二、应用场景三、未来展望四、伦理与创意五、用户体验与互动&#x1f324;️总结 &#x1f4d1;前言 随着人工智能技术的蓬勃发展&#xff0c;AI视频模型正逐渐成为科技领域的新宠。在这个变革的浪潮中&#xff0c;OpenAI推出的首个AI视…

嵌入式C语言(四)

零长度数组 零长度数组、变长数组都是GNU C编译器支持的数组类型。 什么是零长度数组&#xff1f; 首先肯定长度是为0的数组 ANSI C规定定义一个数组长度必须为一个常数&#xff0c;那么就是这个数组的长度在编译的时候就确定了。 int a[10];但是在C99标准中规定可以定义一…

华为数通方向HCIP-DataCom H12-821题库(单选题:501-520)

第501题 三台交换机运行RSTP协议,拓扑和配置情况如图所示。那么以下关于根桥的描述,正确的是哪一项? A、根桥是SWA B、根桥是SWB C、根桥是SWC D、根桥无法确定 参考答案:A 第502题 在华为设备中,以下哪一个命令可以实现BFD与静态默认路由联动? A、ip route-static 0.…

加盟户用光伏赚钱吗?

光伏发电是一个新兴的投资领域,其中所蕴含的财富商机是非常多的,并且大多可靠效益显著,让无数创业投资者看到了生财的希望。 一、什么是户用光伏&#xff1f; 户用光伏&#xff0c;顾名思义&#xff0c;是在居民区安装的光伏发电系统。它利用太阳能电池板将光能转化为电能&…