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

进程的基本概念

  • 计算机结构体系
    • 冯诺依曼
  • 操作系统的管理
  • 进程
    • 进程的特性
      • 标识符
      • 系统的调用 创建新的进程
    • 进程的状态
      • 进程队列
      • 进程的状态
      • 在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.hqwc.cn/news/497159.html

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

相关文章

【Python笔记-设计模式】观察者模式

一、说明 观察者模式是一种行为设计模式&#xff0c;允许你定义一种订阅机制&#xff0c;可在对象事件发生时通知“监控”该对象的其他对象。 (一) 解决问题 主要解决一个对象的状态变化时&#xff0c;需要通知其他对象&#xff0c;并且这些被通知的对象可能是多个且不确定的…

【Dubbo】什么是Dubbo?它的架构和负载均衡策略,以及zookeeper宕机与dubbo直连的情况

目录 一 重要的概念 1.1 什么是 Dubbo? 1.2 什么是 RPC?RPC原理是什么? 1.3 为什么要用 Dubbo? 1.4 什么是分布式? 1.5 为什么要分布式? 二 Dubbo 的架构 2.1 Dubbo 的架构图解 2.2 Dubbo 工作原理 三 Dubbo 的负载均衡策略 3.1 先来解释一下什么是负载均衡 3…

yolov5v7v8目标检测增加计数功能--免费源码

在yolo系列中&#xff0c;很多网友都反馈过想要在目标检测的图片上&#xff0c;显示计数功能。其实官方已经实现了这个功能&#xff0c;只不过没有把相关的参数写到图片上。所以微智启软件工作室出一篇教程&#xff0c;教大家如何把计数的参数打印到图片上。 一、yolov5目标检测…

德人合科技 | 天锐绿盾终端安全管理系统

德人合科技提到的“天锐绿盾终端安全管理系统”是一款专业的信息安全防泄密软件。这款软件基于核心驱动层&#xff0c;为企业提供信息化防泄密一体化方案。 www.drhchina.com 其主要特点包括&#xff1a; 数据防泄密管理&#xff1a;天锐绿盾终端安全管理系统能够确保数据在创…

HUAWEI 华为交换机 配置基于VLAN的MAC地址学习限制接入用户数量 配置示例

组网需求 如 图 2-15 所示&#xff0c;用户网络 1 通过 LSW1 与 Switch 相连&#xff0c; Switch 的接口为 GE0/0/1 。用户网络2通过 LSW2 与 Switch 相连&#xff0c; Switch 的接口为 GE0/0/2 。 GE0/0/1 、 GE0/0/2 同属于 VLAN2。为控制接入用户数&#xff0c;对 VLAN2 进…

【MySQL】主从同步原理、分库分表

主从同步原理 1. 主从同步原理 MySQL 经常先把命令拷入硬盘的日志&#xff0c;再执行日志的命令&#xff0c;这样的好处&#xff1a; 日志的位置固定&#xff0c;拷入硬盘的开销不大&#xff1b;将命令先准备好&#xff0c;而不是边读边执行&#xff0c;性能更好&#xff0c;…

Android 9.0 系统开启和关闭黑白模式主题功能实现

1. 概述 在9.0的rom系统开发定制化中,在系统SystemUI的下拉状态栏中,产品开发功能需求要求添加黑白模式功能开关的功能,就是打开黑白模式,系统颜色就会变成黑白颜色, 关闭黑白模式开关系统就会变成彩色模式,所以就需要了解下系统是怎么设置黑白模式和彩色模式的,然后添…

基于频率增强的数据增广的视觉语言导航方法(VLN论文阅读)

基于频率增强的数据增广的视觉语言导航方法&#xff08;VLN论文阅读&#xff09; 本文提出的方法很简单&#xff0c;将原始图像增加其他随机图像的高频信息&#xff0c;得到增强的图像作为新的样本&#xff0c;与原始的样本交替训练。背后的动机是&#xff0c;vln模型对高频信息…

nginx之重写功能 模块指令 防盗链

一 重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求&#xff0c; 此功能依靠 PCRE(perl compatible regular expression)&#xff0c;因此编译之前要安装PCRE库&#xff0c;rewrite是 nginx服务器的重要功能之一&#xff0c;重写功…

【重要公告】BSV区块链协会全新推出“网络访问规则NAR”

​​发表时间&#xff1a;2024年2月15日 BSV区块链协会正式宣布已为BSV区块链推出一套全新的网络访问规则&#xff08;Network Access Rules&#xff0c;以下简称“NAR”&#xff09;。 NAR是一整套规则&#xff0c;用于规范BSV协会与BSV网络节点之间的关系。它基于比特币最初…

云计算与大数据课程笔记(一)云计算背景与介绍

如何实现一个简易搜索引擎&#xff1f; 实现一个简易的搜索引擎可以分为几个基本步骤&#xff1a;数据收集&#xff08;爬虫&#xff09;、数据处理&#xff08;索引&#xff09;、查询处理和结果呈现。下面是一个概括的实现流程&#xff1a; 1. 数据收集&#xff08;爬虫&am…

SpringCloud Eureka(注册中心)

一、spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具&#xff0c;包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单&#xff0c;可以在开发人员的电脑上跑。另外说明spring cloud是基…