Linux进程理解(冯诺依曼体系结构,操作系统,进程概念和基本操作)

Linux进程理解[冯诺依曼体系结构,操作系统,进程概念和基本操作]

  • 一.冯诺依曼体系结构
    • 1.冯诺依曼体系结构的说明
    • 2.冯诺依曼体系结构的价值
      • 1.冯诺依曼之前的计算机的局限
      • 2.为什么在计算机体系结构当中要存在内存?
  • 二.操作系统
    • 1.什么是操作系统
    • 2.操作系统如何进行管理
    • 3.为什么要有操作系统
    • 4.系统调用接口和用户操作接口
  • 三.进程理解
    • 1.进程的概念
    • 2.task_struct结构体独特的链接方式
    • 3.task_struct内容分类(粗略的谈一下)
  • 四.进程基础的相关操作
    • 1.查看进程
    • 2.杀死进程
  • 五.进程PID
    • 1.getpid()和getppid()
    • 2.fork()函数创建进程
      • 1.fork()函数
      • 2.演示
      • 3.几点说明
        • 1.进程的独立性
        • 2.关于fork函数返回值的几个问题
            • 1.为何给父子进程的返回值是不同的?
            • 2.fork函数为何会返回2次?
            • 3.为何id作为同一个变量既可以表示父进程id,又可以表示子进程id呢?
      • 4.创建多个子进程(观察进程的创建和退出的全过程)
  • 六.另一种查看进程的方法
    • 1./proc
    • 2.exe链接文件
    • 3.如何改变cwd呢?
  • 七.总结

要了解进程,我们首先要先了解两大知识点:

1.冯诺依曼体系结构(从硬件的角度来谈)
2.操作系统(从软件的角度来谈)

一.冯诺依曼体系结构

1.冯诺依曼体系结构的说明

在这里插入图片描述
在这里插入图片描述

2.冯诺依曼体系结构的价值

要了解冯诺依曼体系结构的价值,首先我们要先明确两点:
在这里插入图片描述

1.冯诺依曼之前的计算机的局限

可是在基于冯诺依曼体系结构设计的计算机出现之前
计算机有两大不足之处:
1.效率低
2.贵
为什么会这样呢?
在这里插入图片描述
这是从网上找的一张计算机的存储金字塔
它详细的说明了一个道理:
在这里插入图片描述
当时的计算机只有CPU和输入设备,输出设备
而且大家可能都听说过木桶原理
在这里插入图片描述
在这里插入图片描述

2.为什么在计算机体系结构当中要存在内存?

在这里插入图片描述
因此内存的引入使得我们的计算机的整体效率还不错,而且还比较便宜,这也就利于计算机的传播
使用计算机的人越来越多,因此才出现了互联网
在这里插入图片描述
在这里插入图片描述
至此,我们就将理解进程前冯诺依曼体系结构相关的前置知识介绍完毕

下面我们来谈一下第二个前置知识:操作系统

二.操作系统

1.什么是操作系统

在这里插入图片描述
在这里插入图片描述
这里的驱动程序是指:
操作系统可以通过调用对应底层硬件对应的驱动程序的接口来实现对底层硬件的访问与控制
因此把操作系统可以通过驱动程序来保证对硬件管理的高效性和成功率

2.操作系统如何进行管理

在这里插入图片描述
在这里插入图片描述
至此,我们就了解了操作系统是如何进行软硬件资源管理的了
那么接下来的问题是:
操作系统跟用户之间是什么关系呢?
下面我们就说明操作系统跟用户之间的关系:

3.为什么要有操作系统

在这里插入图片描述

4.系统调用接口和用户操作接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
至此,大家对于这张图片的理解就会更加深刻了
我们将理解进程前操作系统相关的前置知识介绍完毕了
下面我们正式进入进程的学习当中

三.进程理解

1.进程的概念

我们大家应该都知道我们windows系统当中的任务管理器
在这里插入图片描述
程序被加载到内存变成进程的时候,操作系统会给每一个进程分配一个用来存放该进程的结构体对象的数据,方便操作系统对进程进行管理!

下面这个就是描述进程信息的结构体
在这里插入图片描述
至此操作系统成功将进程的属性用PCB对象描述好了,
因此操作系统对于进程的管理就变成了对PCB对象的管理

因此:

进程=内核数据结构(不仅仅是PCB对象)+可执行程序

因此,所有对进程的控制和操作都只和进程的PCB对象有关,和进程的可执行程序无关
只要你愿意,你可以把PCB对象放入任何数据结构中进行管理!

2.task_struct结构体独特的链接方式

请注意:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一个task_struct可以被连入多种数据结构中!!!

这一点很重要,因为我们以后还要介绍运行队列,
这就是在不改变task_struct已经形成的链表结构的同时
还可以将其放入队列当中的原因

3.task_struct内容分类(粗略的谈一下)

那么task_struct里面都是什么呢?
我们先来粗略的谈一下
在这里插入图片描述
关于这里的这个pc指针或者eip寄存器
我们介绍一下它的作用
在这里插入图片描述
这些内容我们以后会详细介绍的
你说了这么多,总得让我们见一见进程吧
下面我们先来看一下进程基础的相关操作

四.进程基础的相关操作

1.查看进程

先生成一个process可执行程序
在这里插入图片描述
在这里插入图片描述

ps ajx | head -1 && ps -ajx | grep 可执行程序名字

在这里插入图片描述
在这里我们先执行了一个可执行程序:process
然后查看这个进程
在这里插入图片描述

ps ajx | head -1 && ps -ajx | grep 可执行程序名字 | grep -v grep

2.杀死进程

刚才我们说了ctrl+c退出一个进程
有些时候ctrl+c并不可行(下面我们就会见到这种情况的)
此时就需要我们去使用

kill -9 进程的PID

来杀死指定的进程
在这里插入图片描述

五.进程PID

1.getpid()和getppid()

在这里插入图片描述
注意:pid_t的值都是正整数或0
在这里插入图片描述
下面我们来在代码当中查看一下process的进程ID和其父进程ID
在这里插入图片描述

while :; do ps ajx | head -1 && ps ajx | grep 可执行程序名字 | grep -v grep; sleep 1;done

这个shell命令可以死循环查看含有指定可执行程序名字的进程
每次while循环都会休眠1秒
按ctrl+c退出
在这里插入图片描述
根据进程ID查看对应进程的信息:

ps ajx | head -1 && ps ajx | grep 进程ID | grep -v grep

下面我们多次执行这个进程,发现:
在这里插入图片描述

2.fork()函数创建进程

1.fork()函数

在这里插入图片描述
在这里插入图片描述

2.演示

下面我们来演示一下

在这里插入图片描述
在这里插入图片描述

3.几点说明

1.进程的独立性

(任意)进程之间是具有独立性的,互相之间不能影响

即使父进程和子进程亲如父子,但是当我们的子进程和父进程都运行起来之后,
子进程挂了,代码也仍会存在,对父进程无影响
父进程挂了,代码也仍会存在,对子进程无影响

杀死父进程,子进程依然运行
在这里插入图片描述
不过此时因为父进程被杀死了,所以子进程无法通过ctrl+c退出
只能使用kill -9杀死子进程
在这里插入图片描述
杀死子进程,父进程依然运行,
右上方的窗口显示了子进程处于defunct(也就是关闭)的状态
说明子进程被杀死了,按ctrl+c后父进程可以正常退出
在这里插入图片描述
关于父子进程的话题,我们以后在介绍僵尸进程和孤儿进程的时候会进行详细说明的
在这里我们只需要知道:进程之间是具有独立性的,互相之间不能影响

2.关于fork函数返回值的几个问题
1.为何给父子进程的返回值是不同的?

通过fork函数的返回值区分父子进程,利用if else判断来让父子进程做不同的事情

2.fork函数为何会返回2次?

在fork函数内部,在执行到return语句之前,子进程已经被创建好了
又因为父子进程的代码是共享的
而且return语句本身也属于代码
所以return语句既会被父进程执行,也会被子进程执行

3.为何id作为同一个变量既可以表示父进程id,又可以表示子进程id呢?

这就涉及到写时拷贝的知识点了,先在这里提一下,以后我们还会提到的:
在这里插入图片描述
因此,我们可以得出:

在Linux中,可以用同一个变量名来表示不同的内存

4.创建多个子进程(观察进程的创建和退出的全过程)

下面我们创建多个子进程
观察一下进程的创建和退出的全过程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后所有的子进程都退出了,只剩下一个父进程最后休眠了15秒之后才退出
这样我们就能够看到进程从创建到退出的全过程了
这里的子进程处于defunct(也就是关闭)的状态就表示该进程已经退出了

六.另一种查看进程的方法

1./proc

进程的信息可以通过 /proc 系统文件夹查看

ls /proc

在这里插入图片描述
查看具体某一个进程的信息:

ls /proc 进程id

在这里插入图片描述
下面我们用mycmd这个可执行程序来测试一下
在这里插入图片描述
我之前在Linux中的shell外壳与权限(包含目录文件的权限,粘滞位的来龙去脉)这篇博客中提到过链接文件
在这里插入图片描述
接下来我们还会见到链接文件

2.exe链接文件

在这里插入图片描述
在这里插入图片描述
不过这个进程就只能执行这一次了,当这个进程结束之后,就无法再执行了
在这里插入图片描述
当我把mycmd这个可执行程序删除之后,这个进程依旧再运行
但是这个exe执行的那个可执行程序已经显示deleted了
在这里插入图片描述

3.如何改变cwd呢?

我们可以使用chdir函数
在这里插入图片描述
下面我们来实验一下
当前是在这个路径下
在这里插入图片描述
我想让它到

/home/wzs/wzsdir/systemlearndir

这个路径下
在这里插入图片描述
在这里插入图片描述
下面我们来创建一个文件
加深一下对cwd和fopen函数的理解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现test.txt的确被创建在了

/home/wzs/wzsdir/systemlearndir

这个路径下

七.总结

这篇博客我们主要介绍了
1.冯诺依曼体系结构
2.操作系统
3.进程的概念,task_struct结构体
4.进程基础的相关操作:查看进程,杀死进程,改变进程所在工作目录
5.进程PID,fork函数创建进程

以上就是Linux进程理解(冯诺依曼体系结构,操作系统,进程概念和基本操作)的全部内容,希望能对大家有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android修行手册-溢出父布局的按钮实现点击

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

随机微分方程的MATLAB数值求解

dt0.01; tout200; %总时间为2 xzeros(1,tout); x(1)0.5; %初始位置 mu0.2; sigma1; Wtsqrt(dt)*randn(1,tout); %产生随机序列Wt for t1:tout-1x(t1)x(t)mu*x(t)*dtsigma*x(t)*Wt(t); end t11:10:tout; %对原时间序列进行抽样 xtzeros(1,length(t1)); i1; for tt1xt(i)0.5*exp(…

2023年11月25日(星期六)骑行三家村

2023年11月25日 (星期六) 骑行三家村(赏红杉林),早8:30到9:00, 大观公园门囗集合,9:30准时出发 【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:大观公园门口集合 ,家住东,南…

【算法萌新闯力扣】:两句话中的不常见单词

力扣热题:两句话中的不常见单词 开篇 今天是备战蓝桥杯的第19天,今天到目前刷了4道力扣算法题。其中,这道题是对我来说收获最大的一道,让我更熟练地掌握了一些算法题中方法,于是来与大家分享一下。 题目链接: 884.两…

web自动化测试-Selenium语法入门到精通

前言 说到自动化测试,就不得不提大名鼎鼎的Selenium。Selenium 是如今最常用的自动化测试工具之一,支持快速开发自动化测试框架,且支持在多种浏览器上执行测试。 Selenium学习难度小,开发周期短。对测试人员来说,如果…

vue中列表渲染

列表渲染 实际开发中,使用每条数据的唯一标识作为key,也就是对于数组列表,对象中的属性如:id、手机号、身份证号、学号等唯一值,对象列表同理 只要不对列表的逆序添加,逆序删除等破坏顺序的操作,仅用于渲染…

微信小程序:This Mini Program cannot be opened as your Weixin version is out-of-date.

项目场景: 问题描述 升级基础库3.2.0,然后PC端整个小程序都打不开了,点击小程序提示”This Mini Program cannot be opened as your Weixin version is out-of-date. Update Weixin to the latest version.“,并且点击Update Wei…

新手怎样快速上手接口测试?掌握这几个知识点直接起飞!

接口测试是测试系统组件间接口的一种方式,接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的增删改查操作,以及系统之间的逻辑关系等。 接口的几种类型 接口的类型包括:post ,get&…

最新AIGC创作系统ChatGPT网站源码,Midjourney绘画系统,支持最新GPT-4-Turbo模型,支持DALL-E3文生图

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…

自动化发展趋势以及自动化测试常见问题解析

前言 ⾃动化接⼝测试会越来越受到重视 在移动互联⽹时代,对于质量的要求⽐PC时代⾼的多,⽽投⼊产出⽐最⾼的⾃动化接⼝测试,将会是⼤部分公司的⾸选⽅向,但需要严格掌握⼀门语⾔ 持续集成是⽬前⾮常流⾏的开发⽅式,…

《向量数据库指南》——向量数据库Milvus Cloud搭建Excel公式编辑器助手

引言 在日常工作中,Excel是我们经常使用的办公工具,而熟练应用Excel公式对于提高工作效率非常重要。然而,有时候我们会遇到一些复杂的需求,需要用到较为专业的Excel公式,而这正是Excel公式编辑器助手的用武之地。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和…

铸就匠心,打造西部最具权威的行业商会组织

中国商报陕西报道(记者 朱清平)西安市五金机电商会(以下简称商会)第二届一次会员代表大会暨新任理事、监事就职典礼于11月17日在西安经开洲际酒店召开。 商会于2018年10月成立,在5年的发展中,依托“一带一路”发展的“快车道”,通过新丝路国际工业品数字…

Threejs_12 物体阴影的实现

所以在Threejs的画布世界之中,一个物体有自己的影子呢? 阴影效果的实现 你需要先知道在threejs世界中,有哪些灯光或者材质是可以产生阴影效果的 环境光没有阴影 平行光有阴影(太阳) 点光源有阴影(灯泡) 聚光灯有阴影(手电筒) 平面光源没有…

自主创新操作系统KeyarchOS的崛起

自主创新操作系统KeyarchOS的崛起 写在前面 在计算机中,操作系统是其最基本也是最为重要的基础性系统软件。从计算机用户的角度来说,计算机操作系统体现为其提供的各项服务;从程序员的角度来说,其主要是指用户登录的界面或者接口…

qlik为app添加定时调度

1,进入qmc/Apps 2,搜索需要添加调度的APP 3,搜索到后双击点开Tasks 4,新增Tasks---点击Create New 5,添加调度器 6,设置调度,双击新增的调度,注意选择时区

从mysql源码编译出相应的库和可执行文件及搭建mysql服务端

目录 1. 问题的提出 2. 源码下载 3. 升级或安装某些前置软件 3.1. 升级CMake 3.2. 升级gcc、g 4. 安装依赖库 4.1. 安装OpenSSL 4.2. 安装Curses 4.3. 安装pkg-config 5. 编译、安装 6. 编译结果、配置 7. 编译错误处理 7.1. 错误1 7.2. 错误2 8. 搭建mysql数…

解决vue中引入天地图显示不全问题,设置setTimeout即可解决!

index.html中引入天地图api <script type"text/javascript" src"https://api.tianditu.gov.cn/api?v4.0&tk你的key"></script>map.vue中初始化天地图 //初始化天地图 initTMap() {const T window.T;// 3.初始化地图对象this.tMap new…

【Linux】历史发展及安装

目录 1. 前言2. Linux历史背景2.1 发展史2.1.1 UNIX发展的历史2.1.2 Linux发展历史 3. 开源4.Linux系统安装4.1 Linux系统选择4.2 登陆 1. 前言 从今天开始学习一门新课程Linux&#xff0c;会以博客的形式分享自己的学习笔记。如有问题请指出&#xff0c;大家共同进步。 2. L…

wvp-gb28181-pro打包

生成可执行jar cd wvp-GB28181-pro mvn package复制错误已复制 生成war cd wvp-GB28181-pro mvn package -P war 生成的包的路径 wvp-GB28181-pro\target

双12电视盒子推荐:测评员解析目前电视盒子哪个最好

电视盒子不需要每月缴费&#xff0c;只需联网就可以收看海量视频资源&#xff0c;游戏、网课、投屏等功能让电视盒子的使用场景更丰富&#xff0c;我每年都会进行数十次电视盒子测评&#xff0c;本期要分享的是双十二电视盒子推荐&#xff0c;全面解析目前电视盒子哪个最好。 一…