Linux进程(1)(结构-操作系统-进程)

news2024/11/15 8:28:37

目录

1.体系结构

 2.操作系统(Operator System)

1)概念:

2)结构 示意图(不完整)

3)尝试理解操作系统

4)系统调用和库函数概念

3.认识进程

1.启动

2.进程创建的代码方式 --- 重操作,轻原理

1)创进程

2)我们为什么要创建子进程呢? 


1.体系结构

输入设备:键盘、鼠标、摄像头、话筒、磁盘、网卡......

输出设备:显示器、声卡、磁盘、网卡......

CPU:运算器、控制器

存储器:内存

数据是要在计算机的体系结构中进行流动的,流动过程中,进行数据的加工处理从一个设备到另一个设备,本质:是一种拷贝!!!

又因为中央处理器的运行速度非常之快,因此数据设备间的拷贝的效率,决定了计算机整机的基本效率!

存储:距离CPU越近,效率越高,成本越高

若没有存储器,而是直接将CPU位于输入和输出设备两者的中间,那么将会导致一个类似于木桶效应似的缺点(装水的多少不是由长板子决定的,而是由短板子决定的),若是这样放置,由于输入输出设备拷贝的速度相比CPU来说非常的慢,导致CPU大部分时间不是在处理数据,而是在等待输入输出设备拷贝数据。

CPU 的速度远远快于外部设备(如磁盘、光驱等),内存作为介于 CPU 和外部设备之间的媒介,可以帮助平衡这种速度差异CPU 可以快速地从内存中读取或写入数据,而内存则可以暂时存储来自外部设备的数据,使得 CPU 不必等待外部设备完成读写操作。

因此要在三者间设置一个存储器。

对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上,请解释,从你登录上 qq 开始和某位朋友聊 天开始,数据的流动过程。
 
  1. 输入设备:您在电脑或手机等设备上输入登录 QQ 的账号、密码以及与朋友聊天的信息,这些输入设备(如键盘、触摸屏)将您的操作转换为电信号。

  2. 存储器:输入的数据首先被存储在本地设备的存储器(如内存)中。

  3. 控制器:控制器指挥数据的流动和处理,它协调各个部件的工作,将登录和聊天数据发送到运算器进行处理。

  4. 运算器:对登录和聊天数据进行处理,如加密、编码等操作。

  5. 输出设备:处理后的数据通过网络接口(可视为一种输出设备)发送到网络中。

  6. 网络传输:数据通过网络以数据包的形式传输,经过多个路由器和网络节点,最终到达 QQ 服务器。

  7. QQ 服务器接收:服务器的输入设备接收数据包,数据存储在服务器的存储器中。

  8. 服务器处理:服务器的控制器和运算器对数据进行处理,如验证登录信息、查找接收方的连接信息、转发聊天数据等。

  9. 服务器输出:处理后的聊天数据再次通过网络发送给接收方的设备。

  10. 接收方设备接收:接收方设备的输入设备接收数据,经过类似的处理流程,最终在输出设备(如屏幕)上显示聊天内容。

在硬件数据流动角度,在数据层面:


1.CPU不和外设直接打交道,CPU只和内存打交道

2.外设(输入和输出)的数据,不是直接给CPU的,而是先要放入内存中

 2.操作系统(Operator System

1)概念:

是一款软件,对软硬件资源进行管理的软件

广义上的认识:操作系统的内核 + 操作系统的外壳周边程序(给用户提供使用操作系统的方式)

狭义上的认识:只是操作系统的内核

2)结构 示意图(不完整)

3)尝试理解操作系统

管理好,不需要管理者和被管理者直接接触

管理的本质不是对被管理的对象做管理,而是对被管理者的数据做管理

任何管理,要建模:

先描述,再组织

先把被管理对象先描述起来,有几个被管理对象,就把几个被管理对象所对应的数据对象用特定的数据结构组织起来

C++语言中封装 --- 就是描述对象!!!        而它的STL则是组织方式

比如实践通讯录时,要先构建结构体,然后定义   本质上就是先描述,再组织

所以凡是要对特定的对象进行管理:都是先描述,再组织

任何上层用户想要访问操作系统的功能,都必须直接或间接的使用系统调用(system call),而不是直接访问

4)系统调用和库函数概念
在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口,叫做系统调用。
系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。

3.认识进程

在操作系统中,进程可以同时存在非常多!!!

进程 = PCB( process control block) +自己的代码和数据
这样以来,对进程的管理,就变成了 对链表的增删查改!!!
为什么要有PCB呢?? ----  因为OS要对进程进行管理!!    先描述,再组织
Linux操作系统下的PCB : task_struct
进程 = 内核task_struct结构体 + 程序的代码和数据
1.启动

a. ./XXXX,本质就是让系统创建进程并运行 --- 我们自己写的代码形成的可执行 == 系统命令 == 可执行文件。在linux中运行的大部分指令操作,本质都是运行进程!!!


b. 每一个进程都要有自己的唯一标识符,叫做进程pid


c. 一个进程,想知道自己的pid???
d. ctrl +c 就是在用户层面终止进程, kill -9 pid 可以用来直接杀掉进程
2.进程创建的代码方式 --- 重操作,轻原理
1)创进程

fork()

开启监视窗口指令:

while :; do ps axj | head -1 && ps axj | grep myprocess | grep -v grep; sleep 1; done

第二个出现的进程,他的ppid为第一个进程的pid,因此下一个进程为上一个进程的子进程

在fork之后,父子代码共享
创建一个进程,本质是系统中多了一个进程,多了一个进程,就是多了--->
1.内核task_struct
2 有自己的代码和数据
父进程的代码和数据是从磁盘加案的子进程的代码和教据?? 默认情况继承父进程的代码和教据
2)我们为什么要创建子进程呢? 

我们想让子进程头行和父进程执行不一样的代码

即返回给父进程一个PID,子进程一个0.
fork()是一个函数吗,答案是是的,只不过是有OS提供的
那么问题又来了,为什么fork()这个函数能提供两个返回值呢?
原因是当我们执行到 return 的时候,函数的核心工作已做完了,这时候是不是 子进程已经存在了(即可以被调度使用了!!),因此return执行两次也不是很奇怪吧
进程一定要做到:
进程具有独立性(即一个进程被杀掉,不会影响别的进程)--  因此当你杀掉父进程时,不会影响子进程的运行。
进程 = 内核数据结构task_struct + 代码和数据
其中代码是只读的,不可修改,因此父子 共用代码,但是 数据不一样,父子各自独立,原则上数据要分开
(exe)即进程的pcb中会记录自己对应的可执行程序的路径
(cwd)即进程当前的工作路径!!
当程序在运行时,这时我们把他的exe可执行文件删除会怎么样呢?
虽然已经被删除,但是我们会发现该程序还在运行着:
这又是为什么呢?
因为 原则上一个程序要被变成进程调度,他就已经在内存中以及存在一份了,这时候你把他在磁盘上的可执行程序删除时,还能跑。
那为什么是原则上呢?
因为当该程序 在磁盘上的占用空间大于内存空间时,接着跑下去肯定会出现问题的。
每个进程在启动的时候,会记录自己当前在哪个路径下启动,进程的当前路径
这里将当前工作路径做了修改,导致其新生成的log.txt并不在默认的当前工作目录(exe所在位置),而是在修改过后的位置

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

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

相关文章

[单master节点k8s部署]20.监控系统构建(五)Alertmanager

prometheus将监控到的异常事件发送给Alertmanager,然后Alertmanager将报警信息发送到邮箱等设备。可以从下图看出,push alerts是由Prometheus发起的。 安装Alertmanager config文件 [rootmaster prometheus]# cat alertmanager-cm.yaml kind: ConfigMa…

小白必看!推荐三本高质量python书籍,让你直接原地起飞

Python是一种多功能语言。它经常用作Web应用程序的脚本语言,嵌入到软件产品中,以及人工智能和系统任务管理。它既简单又强大,非常适合初学者和专业程序员。 python的自学书籍非常多,涉及基础入门、web开发、机器学习、数据分析、…

C++(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例

C(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例 文章目录 C(Qt)-GIS开发-QGraphicsView显示瓦片地图简单示例1、概述2、实现效果3、主要代码4、源码地址 更多精彩内容👉个人内容分类汇总 👈👉GIS开发 👈 1、概述 支持多线程加…

2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会

2025武汉教育装备展,2025武汉智慧教育展,2025武汉智慧校园展,2025武汉教育信息化展,2025武汉智慧教室展,湖北智慧校园展,湖北智慧教室展,武汉教学设备展,湖北高教会,湖北高博会 2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会 2025第10届武汉国际教育装备及智慧校园…

uni-app组件 子组件onLoad、onReady事件无效

文章目录 导文解决方法 导文 突然发现在项目中,组件 子组件的onLoad、onReady事件无效 打印也出不来值 怎么处理呢? 解决方法 mounted() {console.log(onLoad, this.dateList);//有效// this.checkinDetails()},onReady() {console.log(onReady, this.da…

connect to github中personal access token生成token方法

一、问题 执行git push时弹出以下提示框 二、解决方法 去github官网生成Token,步骤如下 选择要授予此 令牌token 的 范围 或 权限 要使用 token 从命令行访问仓库,请选择 repo 。 要使用 token 从命令行删除仓库,请选择 delete_repo 其他根…

第9章 项目总结01:项目流程,每个模块的介绍

1 请介绍一下你的项目 学成在线项目是一个B2B2C的在线教育平台,本项目包括了用户端、机构端、运营端。 核心模块包括:内容管理、媒资管理、课程搜索、订单支付、选课管理、认证授权等。 下图是项目的功能模块图: 项目采用前后端分离的技…

使用Python绘制堆积柱形图

使用Python绘制堆积柱形图 堆积柱形图效果代码 堆积柱形图 堆积柱形图(Stacked Bar Chart)是一种数据可视化图表,用于显示不同类别的数值在某一变量上的累积情况。每一个柱状条显示多个子类别的数值,子类别的数值在柱状条上堆积在…

中金女员工离世悲剧:职场压力、心理健康与社会支持的深刻反思

中金女员工离世背后的深思 2024年7月1日,一则令人痛心的消息在金融界乃至整个网络迅速传播:中金公司一位年仅30岁的女员工郑某露,在降薪和房贷的双重压力下,不幸离世。这一事件不仅让她的家人和朋友陷入了深深的悲痛之中,也引发了社会各界对职场环境、个体心理健康以及社…

Android 集成OpenCV

记录自己在学习使用OpenCV的过程 我使用的是4.10.0 版本 Android 集成OpenCV 步骤 下载OpenCV新建工程依赖OpenCV初始化及逻辑处理 1、下载OpenCV 并解压到自己的电脑 官网 地址:https://opencv.org/releases/ 个人地址:https://pan.baidu.com/s/19f…

工作手机怎么做好业务员工作微信的监控管理

什么是工作手机管理系统? 工作手机管理系统是专为企业管理设计的员工微信管理,它通过监控通讯记录、保障数据安全、自动检测敏感行为、永久保留客户信息等功能,帮助企业提升销售效率、维护客户资源安全,并确保业务流程的合规性。…

51单片机嵌入式开发:3、STC89C52操作8八段式数码管原理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 STC89C52操作8八段式数码管原理 1 8位数码管介绍1.1 8位数码管概述1.2 8位数码管原理1.3 应用场景 2 原理图图解2.1 74HC573原理2.2 74HC138原理2.3 数码管原理 3 数码管程序…

Linux系统的服务——以Centos7为例

一、Linux系统的服务简介 服务是向外部提供对应功能的进程,其运行在系统后台,能够7*24小时持续不断的提供外界随时发来的服务请求,且服务进程常驻在内存中,具有固定的端口号,通过端口号就能找到服务内容。 提供服务的一…

Linux 系统管理4——账号管理

一、用户账号管理 1、用户账号概述 &#xff08;1&#xff09;用户账号的常见分类&#xff1a; 1>超级用户&#xff1a;root uid0 gid0 权限最大。 2>普通用户&#xff1a;uid>500 做一般权限的系统管理&#xff0c;权限有限。 3>程序用户&#xff1a;1<uid&l…

OpenCV(绘图功能笔记)

目标 学习使用OpenCV绘制不同的几何形状 cv.line()&#xff0c;cv.circle()&#xff0c;cv.rectangle()&#xff0c;cv.ellipse()&#xff0c;cv.putText()等。 画线&#xff08;cv.line&#xff09; 要绘制一条线&#xff0c;需要传递线的开始和结束坐标。我们将创建一个黑…

【Oracle】Oracle常用函数

目录 聚合函数数字函数1. ABS函数&#xff1a;返回一个数的绝对值。2. CEIL函数&#xff1a;返回大于等于给定数的最小整数。3. FLOOR函数&#xff1a;返回小于等于给定数的最大整数。4. ROUND函数&#xff1a;将一个数四舍五入到指定的小数位。5. MOD函数&#xff1a;返回两个…

swin-unet编码端流程图

文章目录 1. PatchEmbed2. swinTransformerBlock2.1. window_partition2.2. WindowAttention2.3. Window_reverse2.4. MLP 3. PatchMerging完整流程图 1. PatchEmbed 2. swinTransformerBlock 2.1. window_partition 2.2. WindowAttention 2.3. Window_reverse 2.4. MLP 3. Pat…

集成学习(三)GBDT 梯度提升树

前面学习了&#xff1a;集成学习&#xff08;二&#xff09;Boosting-CSDN博客 梯度提升树&#xff1a;GBDT-Gradient Boosting Decision Tree 一、介绍 作为当代众多经典算法的基础&#xff0c;GBDT的求解过程可谓十分精妙&#xff0c;它不仅开创性地舍弃了使用原始标签进行…

模型训练之数据集

我们知道人工智能的四大要素&#xff1a;数据、算法、算力、场景。我们训练模型离不开数据 目标 一、数据集划分 定义 数据集&#xff1a;训练集是一组训练数据。 样本&#xff1a;一组数据中一个数据 特征&#xff1a;反映样本在某方面的表现、属性或性质事项 训练集&#…

昇思25天学习打卡营第15天|linchenfengxue

Pix2Pix实现图像转换 Pix2Pix概述 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Adversarial Networks &#xff09;实现的一种深度学习图像转换模型&#xff0c;该模型是由Phillip Isola等作者在2017年CVPR上提出的&#xff0c;可以实现语义/标签到…