【Linux】进程学习(1)---理解进程概念

文章目录

  • 冯诺依曼体系结构
    • 理解冯诺依曼体系结构
  • 操作系统概念与定位
    • 概念
    • 计算机管理模型
    • 计算机的软硬件体系结构图
    • 系统调用和库函数概念
  • 进程
    • 基本概念
    • 描述进程--PCB
    • task_struct内容分类
    • 组织进程


冯诺依曼体系结构

在这里插入图片描述

数学家冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

(1)运算器:计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU);
(2)控制器:由程序计数器、指令寄存器、指令译码器、时序产生器和操作控制器组成,它是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。运算器和控制器统称中央处理器,也叫做CPU。中央处理器是电脑的心脏;
(3)存储器:存储器分为内存和外存。内存是电脑的记忆部件,用于存放电脑运行中的原始数据、中间结果以及指示电脑工作的程序。外存就像笔记本一样,用来存放一些需要长期保存的程序或数据,断电后也不会丢失,容量比较大,但存取速度慢。当电脑要执行外存里的程序,处理外存中的数据时,需要先把外存里的数据读入内存,然后中央处理器才能进行处理。外存储器包括硬盘、光盘和U盘;
(4)输入设备:输入设备是向计算机输入数据和信息的设备。是计算机与用户或其他设备通信的桥梁。输入设备是用户和计算机系统之间进行信息交换的主要装置之一。键盘,鼠标,摄像头,扫描仪,光笔等都属于输入设备。
(5)输出设备:是计算机硬件系统的终端设备,用于接收计算机数据的输出显示、打印、声音、控制外围设备操作等。也是把各种计算结果数据或信息以数字、字符、图像、声音等形式表现出来。常见的输出设备有显示器、打印机等。

截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

  • 输入单元:包括键盘, 鼠标,扫描仪, 写板等
  • 中央处理器(CPU):含有运算器和控制器等
  • 输出单元:显示器,打印机等

理解冯诺依曼体系结构

关于冯诺依曼,必须强调几点

  • 这里的存储器指的是内存
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备都只能直接和内存打交道。

问:输入设备输入的数据交给CPU处理过后,直接给输出设备进行输出就好了呀,为什么还需要存储器呢?

答:因为输入,输出设备是外围设备,简称外设,外设一般都会比较慢一些,与磁盘相比较,内存有掉电易失性,且价格比较贵,但是磁盘比较慢。

我们知道cpu是最快的,如果只有输入输出设备和cpu,根据木桶原理,整体效率就以外设为主了,为了解决这个问题,所以引入内存。内存的速度比CPU慢,比外设快,因为有了内存的存在,我们可以对数据进行预加载,那么cpu以后在进行数据计算的时候,根本就不需要访问外设了,而只要伸手向内存要就可以。所以内存的作用之一就是防止外设和CPU速度不匹配的问题。

理解:可执行程序是一个文件->存储在磁盘(外设)中->为什么我们的程序必须先被加载到内存中?->由冯诺依曼体系结构决定。

结论一:在数据层面,一般CPU不和外设直接打交道,而是直接只和内存打交道。

问:为什么我们没有看到数据被加载到内存的过程?

其实我们在Windows下双击一个程序或者在Linux下./运行一个程序的时候,数据就会从外设加载到内存。

对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上。问?在硬件层面,单机和跨主机之间数据流是如何流向的?

例如,你用微信,给你的朋友发了一个“在嘛?”,你登录微信,会将微信输入到内存中,键盘(输入设备)输入消息到内存,通过CPU进行计算,将结果数据给内存,内存把数据给输出设备进行输出,你发送的信息你自己能看到,你的朋友也能看到,所以在你的显示器把数据刷新一下就可以看到数据了,同时,把数据发送到网卡,网卡把数据发送到网络里,最终你的朋友就通过输入设备(网卡),接收到你的消息,数据再通过->内存->CPU解密操作->将数据写回内存->你朋友的显示屏上。

结论二:在数据层面,外设只会和内存打交道。

操作系统概念与定位

概念

简单一句话来说——>操作系统是一款进行软硬件资源管理的软件

管理模型:我们通过一个形象的生活例子,来感性理解一下操作系统:我们在大学中的身份是学生,大学内还有校长,辅导员。其中校长是做决策的,属于管理者;辅导员进行决策的执行;我们这些大学牲是被管理者,参与决策的执行。但是,我们很少见到校长,也就是说管理者和被管理者,其实是不需要直接沟通的,管理者和被管理者没有直接沟通,那么他如何管理学生呢?答案是通过辅导员统计的学生数据,对被管理对象的数据进行管理

管理的本质:先描述(设备型号,属性等),再组织(通过数据结构进行组织)。

计算机管理模型

在这里插入图片描述

问:操作系统为什么要对软硬件资源进行管理?

操作系统对下通过管理好软硬件资源(手段),对上给用户提供良好(安全,稳定,高效,功能丰富等)的执行环境(目的)。

注意,操作系统给我们提供非常良好的服务,并不代表操作系统相信我们,反之,操作系统不相信如何人!!!。在计算机软硬件体系结构中,操作系统会提供给我们一些列的接口,这些接口被称为系统调用。就比如C语言的头文件stdio.h,其中就包含了很多IO接口,文件操作的底层也是使用了操作系统中关于文件的系统调用,能保证操作系统自身的封装性,又能保证给用户开发者提供良好的功能

计算机的软硬件体系结构图

在这里插入图片描述

总结
计算机管理硬件:

  1. 描述起来,用struct结构体
  2. 组织起来,用链表或其他高效的数据结构

系统调用和库函数概念

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

进程

基本概念

课本上关于进程的概念往往是难以理解的文字描述,例如进程是程序的一个执行实例或者正在执行的程序等等。

内核观点:担当分配系统资源(CPU时间,内存)的实体。
在这里插入图片描述
上图的意思是,当运行一个程序时,需要先将磁盘中对应的可执行程序(二进制文件)的代码和数据加载到内存中,那么将可执行文件加载到内存中,就是进程了嘛?就比如现实中,将社会上的人比作可执行文件,将大学比作内存,社会上的人进入我们学校,他就成为学校的学生了嘛?of course not,当然不是!想要成为一名大学学生,还需要将个人的信息档案等录入到学校的系统中等等一系列的操作,加载到内存中的可执行程序也一样,还需要内核中关于进程的相关数据结构,例如图上的pcb/task_struct(进程控制块)用来描述已加载到内存中的可执行程序的属性等等。当多个程序一起执行的时候,就需要多个pcb来描述进程的属性结构,并通过数据结构将这些进程关联起来,通过优先级交给CPU进行处理。

以上是关于进程的感性理解,涉及到管理模型:先描述,再组织。
总结
进程 = 内核关于进程的数据结构 + 当前进程的代码和数据。

描述进程–PCB

  • 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。
  • 课本上称之为PCB(process control block),Linux操作系统下的PCB是: task_struct
  • task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

task_struct内容分类

  • 标识符:描述本进程的唯一标识符,用来区别其他进程。(类似于学生的学号)
  • 状态:有任务状态,退出代码,退出信号等。
  • 优先级:相对于其他进程的优先级。
  • 程序计数器:程序中即将被执行的下一条指令的地址。
  • 内存指针:包括程序代码和进程相关数据的指针,还有其它进程共享的内存块的指针。
  • 上下文数据:数据执行时处理器的寄存器中的数据。
  • I/O状态信息:可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
  • 其他信息。

组织进程

可以在内核源代码里找到它。所有运行在系统里的进程都以task_struct链表的形式存在内核里。

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

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

相关文章

代码随想录算法训练营第四十八天| 198.打家劫舍、213.打家劫舍II、337.打家劫舍III

文章目录 198.打家劫舍213.打家劫舍II337.打家劫舍III 198.打家劫舍 题目链接:代码随想录 解题思路: 1.dp[i]:考虑下标i(包括i)以内的房屋,最多可以偷窃的金额为dp[i] 只是考虑,不一定偷 2.递推…

GPT-4等大语言模型对教育的未来意味着什么?

‍ ‍ shadow Mixlab这些年举办了非常多的活动和workshop,都带有很强的教育属性。今天我抽空学习了可汗学院的《AI-for-Education》课程,非常有启发。我记录了精华内容,分享给大家。 课程地址: www.khanacademy.org/college-caree…

设计模式——观察者模式

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 观察者模式 1、天气预报需求 2、天气预报需求方案之普通方案 3、观察者模式介绍 4、观察者模式优化天气预报案例 5、JDK 的O…

销售数据分析怎么做?这篇文章说清楚了

如何分析销售数据?分析销售数据有哪些指标?销售数据分析有什么作用? 销售数据是不是得通过数据分析软件啊? 本文将为您解答疑惑—— 一、分析销售数据的指标 从两个层面上来讲,一个是对销售情况的整体把控&#xf…

红黑树理论详解与Java实现

文章目录 基本定义五大性质红黑树和2-3-4树的关系红黑树和2-3-4树各结点对应关系添加结点到红黑树注意事项添加的所有情况 添加导致不平衡叔父节点不是红色节点(祖父节点为红色)添加不平衡LL/RR添加不平衡LR/RL 叔父节点是红色节点(祖父节点为…

破解马赛克有多「容易」?

刷短视频时,估计大家都看过下面这类视频,各家营销号争相曝光「一分钟解码苹果笔刷背后内容」的秘密。换汤不换药,自媒体们戏称其为「破解马赛克」,殊不知让多少不明真相的用户建立起了错误的认知,也让苹果笔刷第 10086…

【面试】嵌入式C语言题目整理

【面试】嵌入式C语言题目整理 描述内存四区。 内存四区分为:代码区、静态区、堆区、栈区 代码区就是用来存放代码的。 静态区用来存放全局变量、静态变量、常量(字符串常量、const修饰的全局变量)。 堆区中的内存是由程序员自己申请和释放的&…

九、MyBatis动态SQL

文章目录 九、动态SQL9.1 if9.2 where9.3 trim9.4 choose、when、otherwise9.5 foreach9.6 SQL片段 本人其他相关文章链接 九、动态SQL 9.1 if 总结:根据标签中test属性所对应的表达式决定标签中的内容是否需要拼接到SQL中。 User getUserByParamsWithIf(User user…

Packet Tracer - 在思科路由器上配置 AAA 认证

Packet Tracer - 在思科路由器上配置 AAA 认证 拓扑图 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 交换机端口 R1 G0/1 192.168.1.1 255.255.255.0 不适用 S1 F0/1 S0/0/0 (DCE) 10.1.1.2 255.255.255.252 不适用 不适用 R2 G0/0 192.168.2.1 255.2…

(四)Kubernetes - 手动部署(二进制方式安装)

Kubernetes - 手动部署 [ 3 ] 1 部署work node1.1 创建工作目录并拷贝二进制文件1.2 部署kubelet1.2.1 创建配置文件1.2.2 配置文件1.2.3 生成kubelet初次加入集群引导kubeconfig文件1.2.4 systemd管理kubelet1.2.5 启动并设置开机启动1.2.6 允许kubelet证书申请并加入集群 1.3…

JAVA-异常

文章目录 1.异常的体系1.3异常的分类 2.异常的处理2.2异常的抛出throw2.3异常的捕获2.3.1异常声明throws2.3.2 try-catch捕获并处理2.3.3 finally 2.4 异常的处理流程 3.自定义异常类 1.异常的体系 Throwable:是异常体系的顶层类,其派生出两个重要的子类…

人员拥挤检测系统 yolov5

人员拥挤检测系统通过YOLOv5网络模型算法技术,人员拥挤检测系统算法模型对校园/厂区车间/街道等场景的异常的人群聚集(出现拥挤情况)时,立刻抓拍存档并通知相关人员及时处理。在介绍Yolo算法之前,首先先介绍一下滑动窗…

ES是如何解决高可用

https://www.cnblogs.com/crazymakercircle/p/15433680.html ES是一个分布式全文检索框架,隐藏了复杂的处理机制,核心数据分片机制、集群发现、分片负载均衡请求路由。 ES的高可用架构,总体如下图: 说明:本文会以pdf…

Java 基础入门篇(一)—— Java 概述

文章目录 一、Java 概述二、Java 的产品 JDK2.1 JDK 安装2.2 Java与 Javac 介绍2.3 Java 程序的开发步骤 三、Java 程序的执行原理四、JDK 的组成五、Java 的跨平台工作原理 一、Java 概述 Java 是 sun 公司在 1995 年推出的一门计算机高级编程语言,其语言风格接近人…

深度学习卷积神经网络学习小结2

简介 经过大约两周左右的学习,对深度学习有了一个初步的了解,最近的任务主要是精读深度学习方向的文献,由于搭建caffe平台失败而且比较耗费时间就没有再尝试,所以并没有做实践方面的工作,本文只介绍了阅读文献学到的知…

外卖项目优化-02-mysql主从复制、读写分离(shardingJdbc)、Nginx(反向代理,负载均衡)

文章目录 瑞吉外卖项目优化-Day02课程内容前言1. MySQL主从复制1.1 介绍1.2 搭建1.2.1 准备工作1.2.2 主库配置1.2.3 从库配置 1.3 测试 2. 读写分离案例 (shardingJdbc)2.1 背景介绍2.2 ShardingJDBC介绍2.3 数据库环境2.4 初始工程导入2.5 读写分离配置2.6 测试 3. 项目实现读…

基于ATECLOUD的航电系统可灵活扩展自动化测试平台

随着电子技术的发展,航电系统在飞机整机中的重要性飞速提升。据统计,近年来航电系统在飞机出厂成本中的比例直线上升,航电系统研发成本已占飞机研制总成本的近30%,并保持着持续扩大的趋势。测试保障作为航电产业链至关重要的一环&…

基于JavaWeb实现的寻码网文章资讯管理系统

一、技术结构 前端:html ajax 后端:SpringBootMybatis-plus 环境:JDK1.8 | Mysql | Maven | Redis 二、功能简介 数据库与代码截图 后端管理-登录页 后端管理-首页 后端管理-文章管理-发布文章 后端管理-文章管理-文章列表 后端管理-文…

【iOS KVO(下) KVO的内部结构和源码】

前言 学习KVO的过程,我分为了KVO的实现过程分析和内部结构的学习,学习了实现过程,接下来看KVO是通过何种内部结构实现如此通知📢和监听。 1 KVO的存储结构 KVO的实现过程离不开合理的存储结构,用到了如下几个类 GS…

智能安防系统-视频监控系统

一、智能安防系统 1、智能安防系统介绍 安全防范系统成为了智慧城市与物联网行业应用中的一个非常重要的子系统。 安防系统主要包括:视频监控系统、入侵报警系统、出入口控制系统、电子巡查系统以及智能停车场管理系统等5个子系统。 AI人工智能安防系统功能&#xf…