Linux基础内容(10)—— 进程概念

news2025/4/17 18:36:19

目录

1.冯诺依曼体系结构

​编辑1.冯诺依曼体系特点

2.cpu运算原理

3.数据传输

2.操作系统

1.操作系统管理的真相

2.操作系统与硬件的交互方式 

3.操作系统与用户的交互方式

1.系统调用接口

2.用户对系统调用的使用

3.进程

1.进程的概念

2.Linux中的进程

3.与进程有关的系统调用

1.子进程

2.父进程 

3.子进程创建


1.冯诺依曼体系结构

1.冯诺依曼体系特点

1.存储器指的是内存,失电易失;

2.外存是刨去内存的一切存储结构,他们是属于外设的;

3.外设是输入设备和输出设备总和,磁盘和网课既是输入又是输出设备;

4.运算器+控制器+寄存器+其他 组成了中央处理器;

2.cpu运算原理

首先我们得明白,cpu所提供的功能是计算。那么当我们将代码给cpu时,cpu看不懂编程语言,它只看得懂机器语言,当代码翻译为机械语言后,进行运算。cpu内部设计就有对应的指令集,我们做的代码无非就是被划分为指令集上对应的指令依次执行而已。

3.数据传输

1.cpu的读取数据速度最快,内存的读取速度较快,外设的磁盘读取速度较慢;

2.cpu在读取和写入时,在数据层面上只和内存打交道,其目的是为了加快效率;

3.内存的数据并非天生就有,它无电易失,内存想要存在数据就必须在磁盘的读取得到;

内存提前找磁盘中需要的数据载入,等cpu读取内存数据时就可用直接用;这样运行效率高;即cpu不与外设直接沟通,只与内存打交道。


2.操作系统

操作系统是一个进行软硬件管理的软件

1.操作系统管理的真相

管理的原因:

通过对软硬件的管理为用户提供安全高效稳定的执行环境

如何管理?

计算机体系的各部分以冯诺依曼体系结构作为依据,相互链接

操作系统不需要和软硬件直接交互,通过管理软硬件的数据,并且对数据进行决策

2.操作系统与硬件的交互方式 

那么便有了些问题,既然硬件不与操作系统直接交互,操作系统怎么拿到数据呢?又是怎么对数据进行改变,使得硬件执行呢?

答案是:驱动,驱动在操作系统和硬件之间起到“桥梁作用”,操作系统通过驱动收集硬件的数据,硬件又是根据驱动传达的操作系统的指令进行执行命令。

硬件中的数据非常多,海量信息对于操作系统的处理和存放都是非常困难的。虽然数据很多,但是我们发现数据中的种类都是差不多的,那么操作系统可以定义并且描述数据变出一个类,抽象出类型,所有数据都一样的数据类型,使得我们管理数据本身只需要管理数据对应的结构体即可。那么访问结构体也非常方便,我们只要对结构体中存放对应的指针,我们可以通过指针得到数据具体存放在哪。此外,软件(操作系统)不仅仅管理硬件,也管理软件,即对自己内的功能模块进行管理。

此时我们会发现:管理数据的操作分为两步1.描述数据变为抽象的类以便管理2.描述类使得得到数据的管理。

3.操作系统与用户的交互方式

1.系统调用接口

用户想和操作系统交互不能直接访问,这是因为系统本身结构决定的,操作系统本身需要被保护起来。但是如果完全封闭那用户不能交互,所以操作系统还需要对用户提供调用接口使得用户访问操作系统而不可以做出非法操作。

这样的接口调用被叫做:系统调用;它是操作系统本身提供给用户的。

2.用户对系统调用的使用

用户操作界面:不过上面的系统调用是不够的,因为调用的函数也需要从二进制语言转化为人能看得懂的语言进行使用,所以用户为了利用系统需要shell、c/c++的库函数等进行执行,也有更加直观的可视化界面通过点击就可调用的工具。


3.进程

1.进程的概念

定义:一个加载到内存的程序叫做进程;进程是具有动态属性的,但是程序是代码是静态的。

那么我们知道,程序都是先存储在磁盘里的,想要变成进程必须进入到内存中。那么内存也有很多的进程需要加载,这时就需要操作系统进行组织管理,所以操作系统又需要对所谓的硬盘中的数据进行描述再组织。那么操作系统为了描述进程引出PCB的概念。

PCB:进程控制块;是一种结构体,用来描述进程的数据的类型。 

PCB是对进程的优先级别和具体操作的规定。操作系统对进程描述为PCB后,传回PCB的指针,通过对进程的属性进行对应的操作。

操作系统从对进程管理变为了对PCB管理(即指定链表的增删查改)

本质:进程=内核数据结构+对应的磁盘代码

2.Linux中的进程

ps ajx:显示当前用户的进程

1.首先我们创造了一个一直在while循环的myproc代码,执行该文件后,myproc变成了进程,我们通过管道过滤需要显示的进程:ps ajx | grep “myproc”找到对应进程名字。

2.过滤其他进程名,我们得到两个关于该程序的进程,上面的是执行myproc的代码,下面的是grep找myproc的执行代码。

3. 为了更加直观,我们把头部也打印出来,观察对应的属性:ps ajx | head -1

 4.kill -9 对应的PID:杀掉正在运行的进程

我们会发现,所谓进程具有动态属性就是进程在被执行,表现的形式就是不断的刷新着自己的任务代码。

另外一种显示

ls /proc/:显示进程

 进程存在时,会出现一个pid对应的文件夹放在/proc中

进入到对应的文件夹;此时会发现该进程的属性都在之中。

此外,如果此时删除进程对应的文件代码,会发现进程还在进行。意味着当程序加载到进程中时,进程已经独立于文件,在内存中进行执行。删除进程,proc中对应的pid文件也会消失

3.与进程有关的系统调用

1.子进程

getpid():得到该进程对应PID。

man手册的getpid说明

1.为了直观调用,写了一个代码用来显示PID

 

2.显示pid

 

3.杀死进程

4.进程停止了

2.父进程 

getppid():得到该进程的父进程对应的PID。

man手册对getppid的说明

运行文件变为进程,我们发现:该进程的pid每次执行都会变为不同的值,而对应的父进程的pid却不变

 搜索19011对应的文件

 我们发现父进程对应文件是bash(命令行解释器):该进程就是shell

至于为什么shell要设立子进程来调用代码的原因是:因为shell如果执行错误的代码会对shell有威胁,为了避免这种威胁,放设子进程来执行,就算错误了,也不会对shell有影响。shell在登陆时就带有这个进程,所以ppid只会在退出后又进来才会变化。

3.子进程创建

fork():创造一个子进程

man手册对fork的说明 

fork()在函数执行前,其实优先执行了对应的父进程,然后开始执行子进程。

演示:

 

上一个进程信息是该文件的,下一个进程信息是fork出来的。fork的父进程是该文件的子进程,该文件的父进程是bash进程。 

fork的返回值又两个,调用成功返回pid给父进程,0给子进程

言外之意,fork()函数调用时同时会有两个进程:父进程和子进程。fork()后父子进程共用代码,执行代码的其中一部分。

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

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

相关文章

基于DJYOS的SPI驱动编写指导手册

1.贡献者列表 深圳市秦简计算机系统有限公司DJYOS驱动开发团队。 2.概述 DJYOS的DjyBus总线模型为IIC、SPI之类的器件提供统一的访问接口,SPIBUS模块是DjyBus模块的一个子模块,为SPI器件提供统一的编程接口,实现通信协议层与器件层的分离。…

Python 考试练习题 2

一、选择题 1、下列是 python 合法标识符的是( B)。 A. 2variable B. variable2 C. $anothervar D. if 2、在 python 中字符串的表示方式是(D )。 A.采用单引号包裹 B.采用双引号包裹 C.采用三重单引号包裹 D.ABC 都是 3、设有…

【浅学Linux】动态库与静态库的封装与使用

朋友们好,这里简单介绍一下LINUX学习中关于动态库与静态库的理解,以及站在封装和使用的角度去介绍是如何封装的?如何使用的? 文章目录一:动态库与静态库的理解二:静态库2.1:静态库的使用2.2&…

Sprite Editor

1、SpriteEditor SpriteEditor是精灵图片编辑器 它主要用于编辑2D游戏开发中使用的Sprite精灵图片 它可以用于编辑 图集中提取元素,设置精灵边框,设置九宫格,设置轴心(中心)点等等功能 2、Single图片编辑 Sprite Ed…

Docker原生网络、自定义网络、Docker容器通信、跨主机容器网络

Docker原生网络、自定义网络、Docker容器通信、跨主机容器网络Docker原生网络bridgeHostnoneDocker自定义网络自定义bridgeoverlaymacviandocker network所有基本命令Docker容器通信双冗余机制跨主机容器网络一些遗留错误解决错误1错误2错误3错误4Docker原生网络 docker安装时…

如何搭建node_exporter

如何搭建node_exporter 1.观看条件 1.假设你已经看过上一篇文章 《如何搭建普罗米修斯 Prometheus》 2.假设你已经会搭建普罗米修斯(promethus) 3.上面两个假设,只要满足一个。那你看这篇文章就没什么压力了 2.node_exporter是啥 node_…

UI自动化测试之selenium工具(浏览器窗口的切换)

目录 前言 方法 实例 ①示例1 ②示例2 附加知识 结语 前言 1、在浏览网页的时候,有时点击一个链接或者按钮,会弹出一个新的窗口。这类窗口也被称之为句柄(一个浏览器窗口的唯一标识符,通过句柄实现不同浏览器窗口之间的切…

C++Qt开发——文件操作

简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同。IO操作的本质是连续存储空间的数据读写。 1. IO设备的类型 顺序存取设备:只能从头开始顺序读写数据&#…

python游戏库pygame经典教程

目录 一.Pygame程序基本搭建过程 1.初始化化程序 2.创建Surface对象 3.事件监听 4.游戏循环 二.Pygame Display显示模块详解 1.将Surface对象粘贴至主窗口上 2.设置窗口主窗口 3.填充主窗口背景,参数值RGB 4.设置窗口标题 5.更新屏幕内容 6.pygame.display其他方…

C# VS2022 EF6 + Mysql8.0.31 CodeFirsts使用配置

文章目录环境安装Mysql8.0.31下载Mysql连接器Net版本安装VS2022创建工程添加Nuget包修改配置文件如下准备工作,创建一个Dbcontext类,代码如下打开程序包控制台输入命令第一步第二步第三步第四步简要介绍一下如何添加一个表思路添加User实体类修改dbconte…

NodeMcu arduino ESP8266 搭建mqtt服务(然也物联)以及使用

NodeMcu arduino ESP8266 搭建mqtt服务以及使用 本文章学习借鉴于太极创客团队,以表感谢。官网http://www.taichi-maker.com/ 操作步骤:我们注册然也物联平台,申请社区版本,进行测试。 文章目录NodeMcu arduino ESP8266 搭建mqtt…

【Python基础篇021】黏包现象丨udp的socket服务

🌠前言 基于udp的socket服务有什么特点?黏包现象是什么?又是如何产生的?udp和tcp哪种会有黏包现象?看完这篇文章相信你会有所收获。 目录 🌠一、基于udp的socket服务 🌠二、TCP中的黏包现象 …

保边滤波之引导滤波与领域转换滤波

(1)引导滤波 局部窗口内输出图像O和引导图像G成线性关系OiakGibk, ∀i∈Ωk 假设输出图像O和输入图像I之间的关系为OiIi−ni,噪声最小即最小化ni,即 每个像素点i包含于多个窗口Ωk,每个窗口都会得到一个a、b值&#…

RK3399平台开发系列讲解(I/O篇)Linux最大文件数的限制机制

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、Linux最大文件数的限制机制1.1、申请fd过程分析1.2、申请file内核对象过程分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在Linux上能打开多少个文件,有两种限制: 第一种:进程级…

十、组件(8)

本章概要 递归组件异步更新队列Teleport 10.11.2 递归组件 组件可以在自己的模板中递归调用自身,但这需要使用 name 选项为组件指定一个内部调用的名称。 当调用 Vue.createApp({}).component({})全局注册组件时,这个全局的 ID 会自动设置为该组件的n…

【云原生】Docker的基本使用方法与优势

🍬Docker的基本使用方法和优势🥙一、简介🥪二、优势🌮三、基本使用🥙一、简介 Docker是基于Go语言实现的开源应用容器引擎,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的应…

配置Mysql与注册登录模块

后端职责可以粗浅的理解为处理各种数据,那么处理数据就可以从下面几个方面考虑: 数据的来源 根据不同的数据来源,我们探究两个方面的内容: 数据的形式 数据的操作 当然,一通操作以后,各个…

操作系统:进程与线程大解析

一文就懂进程与线程一、进程/线程相关概念进程中断并发与并行并发并行线程线程分类多进程和多线程上下文进程上下文进程上下文切换的场景线程上下文扩展:协程线程与协程的区别:协程的优势:二、进程/线程区别与关系进程和线程的区别进程和线程…

【C/C++】你知道位段吗?段位?不,是位段!

本章重点 什么是位段? 位段的内存分配 位段的跨平台问题 位段的应用 上一篇文章我详细介绍了第一种自定义类型--结构体。本章节我们认识一下另外一种自定义类型-- 位段。因为讲解位段时需要用到一点结构体的知识,所以我直接把链接放到这里可按需直接…

Swagger

一、Swagger简介 1.1、前言 前后端分离 Vue SpringBoot 当前主流的前后端分离技术栈 后端时代 前端只用管理静态页面,如html,其余的交给后端,而后端通过模板引擎,如jsp进行管理 前后端分离时代 后端:后端控制层&…