Linux的学习之路:9、冯诺依曼与进程(1)

摘要

本章主要是说一下冯诺依曼体系结构和进程的一部分东西。

目录

摘要

一、冯诺依曼体系结构

二、操作系统的概念

三、设计OS的目的

四、管理

五、进程的基本概念

六、PCB

七、在Linux环境下查看进程

八、使用代码创建进程

 九、思维导图


一、冯诺依曼体系结构

如下方图片所示黑色箭头是控制信号,红色是数据信号,冯·诺依曼体系结构,也称为普林斯顿结构,是现代计算机发展的基本结构形式,由数学家冯·诺依曼提出。它奠定了现代电子计算机的基本结构,规定了五大组成部件:运算器、控制器、存储器、输入设备和输出设备,并规定了以二进制形式表示数据和指令。

冯·诺依曼体系结构的主要特点包括:

1、单处理机结构:计算机以运算器为中心,运算器、控制器等部件都通过运算器进行数据的加工处理。

2、存储程序思想:将程序指令和数据存储在同一存储器中,CPU从存储器中取出指令和数据进行相应的计算。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同。

3、指令和数据以二进制形式表示:这种表示方式使得计算机内部的处理更加统一和高效。

4、指令由操作码和操作数组成:操作码指示计算机执行何种操作,操作数则是操作的对象。

5、指令顺序执行:按照指令在存储器中的排列顺序,逐条取出指令来执行。

二、操作系统的概念

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)。笼统的理解,操作系统包括:内核(进程管理,内存管理,文件管理,驱动管理)和其他程序(例如函数库,shell程序等等)。

怎么举例呢,有点像是一个银行,我门是无法直接去银行的仓库里面自己拿钱,并且银行也只会流出几个窗口让我门进行取钱, 这一步就有点像怕我们去抢钱,这个就是为了保护银行的安全,也就是相当于内核,在冯诺依曼体系结构中,我知道了,我们是不能直接进行访问控制器的,是利用存储器读取我们所输入的数据,从而进行访问,这个在我们访问过程中,是不认识如何访问控制器的,就像有些老爷爷老奶奶去银行存钱的时候就不会。

所以需要一些东西把这个封装起来我们就可以进行访问,这个访问也会变得轻松,这个就是外壳程序,也就是相当于把操作的成本降低,安全性提高,这个就是操作系统,他的结构就像下方图片所示。

三、设计OS的目的

设计操作系统的目的主要是为了更有效地管理和使用计算机硬件和软件资源,提供友好的用户接口,并保护系统的安全和稳定。以下是设计操作系统的几个主要目的:

1、提高资源利用率:操作系统通过合理调度和管理计算机的各种资源(如CPU、内存、硬盘等),确保它们得到高效的利用。它可以根据任务的优先级和系统的负载情况,动态地分配资源,从而避免资源的浪费和冲突。

2、方便用户使用:操作系统提供了一个友好的用户接口,使得用户可以轻松地与计算机进行交互。无论是图形用户界面还是命令行界面,操作系统都致力于简化用户的操作过程,提高用户的工作效率。

3、提供强大的系统功能:操作系统内置了许多系统级的功能,如文件管理、设备驱动、网络通信等。这些功能使得用户可以方便地进行文件操作、设备控制和网络通信,而无需深入了解底层硬件和软件的细节。

4、保证系统安全稳定:操作系统负责保护系统的安全,防止未授权的访问和恶意软件的攻击。它采用了一系列的安全机制和技术手段,如访问控制、加密和防火墙等,确保系统的稳定运行和数据的安全。

5、支持多任务并发执行:操作系统允许多个任务(或进程)同时运行,通过合理的调度和管理,使得这些任务能够并发执行,从而提高系统的吞吐量和响应速度。

6、提供可扩展性和可维护性:操作系统设计时要考虑系统的可扩展性和可维护性,使得系统能够方便地添加新功能或修复漏洞,同时保持系统的稳定性和兼容性。

综上所述,设计操作系统的目的是为了更有效地管理和使用计算机资源,提供友好的用户接口,保证系统的安全稳定,并支持多任务并发执行。这些目的的实现,使得操作系统成为计算机系统中不可或缺的重要组成部分。

四、管理

管理怎么解释呢,就像我们在学校中是基本上见不到校长的,校长需要管理学生,那么每年那么多学生是怎么管理的过来,总不能每年来新生校长都要一个一个进行登记吧,所以只是就出现了院长辅导员等等,一个一个下方进行手机,级别一个比一个高就相当于管理,但是呢几千个学生也没法一个一个看信息,还需要排序啊,把某一部分人放在一起,统计出来,然后这时候我就想起来之前写过的通讯录,当时第一反应就是第一一个结构体,去统计信息,所以这个也是类似,要不信息也是很斑驳的,所以在操作系统这里,也是先描述,在组织。

描述起来,用struct结构体,组织起来,用链表或其他高效的数据结构这样就能进行描述这个管理的过程,总结来说就是六个字先描述在组织。

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

这个就是在描述过后就可以进行组织,怎么进行组织呢,就是封装起来,这个封装就是相当于库,在这个库我之前在学习c和c++就是经常使用。

五、进程的基本概念

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,也是操作系统结构的基础。它实质上是程序在多道程序系统中的一次执行过程,具有动态性,即动态产生、动态消亡。同时,进程具有并发性,任何进程都可以同其他进程一起并发执行;独立性,作为能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;以及异步性,由于进程间的相互制约,使进程具有执行的间断性。

从理论角度看,进程是对正在运行的程序过程的抽象;从实现角度看,进程是一种数据结构,目的在于清晰地刻画动态系统的内在规律,有效管理和调度进入计算机系统主存储器运行的程序。狭义上,进程可以视为一段程序的执行过程;广义上,进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。

在操作系统中,进程是动态执行的基本单元。它既是基本的分配单元,也是基本的执行单元。根据进程的特点,进程可以被分类为交互进程、批处理进程和守护进程等。交互进程通常是由shell启动的,并可以与用户进行交互操作;批处理进程则负责按照顺序启动其它进程;守护进程是执行特定功能或者执行系统相关任务的后台进程。

总的来说,进程是计算机系统中的核心概念之一,它负责程序的执行和资源的管理,对于计算机系统的稳定性和效率至关重要。

总结一下:进程就等于对应的代码和数据+进程对应的PCB结构体。

六、PCB

这个就是相当于上文中说管理的时候,统计学生信息时创建的结构体就是这个PCB,他的全称是process control block,Linux操作系统下的PCB是: task_struct。

task_struct-PCB的一种在Linux中描述进程的结构体叫做task_struct,task_struct是Linux内核的一种数据结构,它会被装载到RAM(内存)里并且包含着进程的信息。

task_ struct内容分类如下方代码框中。

标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。

七、在Linux环境下查看进程

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

查看进程:进程的信息可以通过 /proc 系统文件夹查看,例:要获取PID为1的进程信息,你需要查看 /proc/1 这个文件夹,大多数进程信息同样可以使用top和ps这些用户级工具来获取,如下方截所示,因为代码看不见彩色不好看所以就给看截图了。

ps 用于显示当前系统的进程状态。通过 ps 命令,你可以查看系统中正在运行的进程,以及它们的状态、优先级、所使用的资源等信息,常用的 ps 命令选项有:

e: 显示所有进程。

f: 全格式显示。

l: 长格式显示。

u user: 显示指定用户的所有进程。

x: 显示没有控制终端的进程。

如下方代码就是查看了一下进程和父进程,test.c的代码在代码框里,结果在块里。

[ly@VM-24-9-centos Linux_1]$ vim text.c
[ly@VM-24-9-centos Linux_1]$ gcc -o text text.c
[ly@VM-24-9-centos Linux_1]$ ll
total 16
-rwxrwxr-x 1 ly ly 8464 Apr 13 20:07 text
-rw-rw-r-- 1 ly ly  152 Apr 13 20:07 text.c
[ly@VM-24-9-centos Linux_1]$ ./text
pid: 15074
ppid: 10266
[ly@VM-24-9-centos Linux_1]$  

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{printf("pid: %d\n", getpid());printf("ppid: %d\n", getppid());return 0;
}

八、使用代码创建进程

fork是创建进程的函数,fork有两个返回值,父子进程代码共享,数据各自开辟空间,私有一份(采用写时拷贝),如下方代码他的返回值有两个人,也就是会创建两个进程所以只是一个代码也会打印两次。

[ly@VM-24-9-centos Linux_1]$ ./text
hello proc : 17484!, ret: 17485
hello proc : 17485!, ret: 0
[ly@VM-24-9-centos Linux_1]$ 

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{int ret = fork();    printf("hello proc : %d!, ret: %d\n", getpid(), ret);sleep(1);return 0;
}

 九、思维导图

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

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

相关文章

【每日一算】冒泡算法

冒泡算法就是给数据排序的意思。比如说升序&#xff0c;17&#xff0c;8&#xff0c;9&#xff0c;28&#xff0c;5.升序之后的结果就是5&#xff0c;8&#xff0c;9&#xff0c;17&#xff0c;28. 从我们的大脑思维来看&#xff0c;结果一眼就有了&#xff0c;可是机器要怎么才…

排序1——C语言

排序 1. 复杂度2. 插入排序2.1 直接插入排序2.2 希尔排序 3. 选择排序3.1 直接选择排序3.2 堆排序 排序在生活中很常见&#xff0c;比如在网购时&#xff0c;按价格排序&#xff0c;按好评数排序&#xff0c;点餐时&#xff0c;按评分排序等等。而排序有快和慢&#xff0c;快的…

【排序 贪心】3107. 使数组中位数等于 K 的最少操作数

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

C语言中抽象的编译和链接原理

今天04.12&#xff0c;身体小有不适&#xff0c;但是睡不着觉&#xff0c;秉着不能浪费时间的原则&#xff0c;现在就简单写一下有关我们C语言中编译和链接的大体过程吧&#xff0c;因为编译和链接是比较抽象的&#xff0c;而且内容是比较底层&#xff0c;我们这里就简单了解它…

Chatgpt掘金之旅—有爱AI商业实战篇|SEO 咨询业务|(十七)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在SEO 咨询业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随…

策略模式(知识点)——设计模式学习笔记

文章目录 0 概念1 使用场景2 优缺点2.1 优点2.2 缺点 3 实现方式4 和其他模式的区别5 具体例子实现5.1 实现代码 0 概念 定义&#xff1a;定义一个算法族&#xff0c;并分别封装起来。策略让算法的变化独立于它的客户&#xff08;这样就可在不修改上下文代码或其他策略的情况下…

蓝桥杯 每天2题 day6

碎碎念&#xff1a;哇咔咔 要不是中间缺勤一天就圆满day7了&#xff01;最后一晚上&#xff01;写题复习哇咔咔 唉&#xff0c;睡了一觉就看不下去了&#xff0c;&#xff0c;&#xff0c;看看之前的笔记洗洗睡觉&#xff0c;&#xff0c;&#xff0c; 记得打印准考证带好东西…

Java面试篇9——并发编程

并发编程知识梳理 提示&#xff0c;此仅为面试&#xff0c;若想对线程有跟完整了解&#xff0c;请点击这里 提示&#xff1a;直接翻到最后面看面试真题&#xff0c;上面的为详解 面试考点 文档说明 在文档中对所有的面试题都进行了难易程度和出现频率的等级说明 星数越多代表…

LeetCode34:在排序数组中查找元素的第一个和最后一个位置(Java)

目录 题目&#xff1a; 题解&#xff1a; 方法一&#xff1a; 方法二&#xff1a; 题目&#xff1a; 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&…

3D场景编辑方法——CustomNeRF

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 摘要Abstract文献阅读&#xff1a;3D场景编辑方法——CustomNeRF1、研究背景2、提出方法3、CustomNeRF3.1、整体框架步骤3.2、对特定问题的解决 4、实验结果5、总结…

一辆汽车的节拍时间是怎样的?

节拍时间&#xff0c;又称 takt time&#xff0c;是德语中“节奏”的意思。在汽车制造业中&#xff0c;它指的是按照客户需求和生产计划&#xff0c;生产一辆汽车所需的时间。这个时间是固定的&#xff0c;它决定了生产线上每个工序的操作速度和节奏&#xff0c;是生产线上所有…

配置交换机 SSH 管理和端口安全

实验1:配置交换机基本安全和 SSH管理 1、实验目的 通过本实验可以掌握&#xff1a; 交换机基本安全配置。SSH 的工作原理和 SSH服务端和客户端的配置。 2、实验拓扑 交换机基本安全和 SSH管理实验拓扑如图所示。 3、实验步骤 &#xff08;1&#xff09;配置交换机S1 Swit…

liunx系统发布.net core项目

liunx系统发布.net core项目 准备.net6程序运行环境部署nginx&#xff0c;通过一个地址既能访问web api&#xff0c;又能访问web项目有一个客户把web api放到docker中&#xff0c;想通过nginx转发&#xff0c;nginx也支持配置多个程序api接口的其它 liunx系统&#xff1a;cento…

SQL执行流程图文分析:从连接到执行的全貌

SQL执行总流程 下面就是 MySQL 执行一条 SQL 查询语句的流程&#xff0c;也从图中可以看到 MySQL 内部架构里的各个功能模块。 MySQL 的架构共分为两层&#xff1a;Server 层和存储引擎层&#xff0c; Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在…

STM32利用软件I2C通讯读MPU6050的ID号

今天的读ID号是建立在上篇文章中有了底层的I2C通讯的6个基本时序来编写的。首先需要完成的就是MPU6050的初始化函数 然后就是编写 指定地址写函数&#xff1a; 一&#xff1a;开始 二&#xff1a;发送 从机地址读写位&#xff08;1&#xff1a;读 0&#xff1…

Eureka-搭建Eureka步骤

简介&#xff1a; Eureka是Netflix开发的服务发现框架&#xff0c;本身是一个基于REST的服务&#xff0c;主要用于定位运行在AWS域中的中间层服务&#xff0c;以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中&#xff0c;以实…

ReactRouter

React-Router 概念&#xff1a;一个路劲path对应一个组件component 当我们在浏览器中访问一个path的时候&#xff0c;path对应的组件会在页面中进行渲染路由语法&#xff1a; import {createBrowserRouter, RouterProvider} from react-router-dom// 1. 创建router实例对象并…

ArcGIS Desktop使用入门(三)图层右键工具——标注要素、将标注转换为注记

系列文章目录 ArcGIS Desktop使用入门&#xff08;一&#xff09;软件初认识 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——标准工具 ArcGIS Desktop使用入门&#xff08;二&#xff09;常用工具条——编辑器 ArcGIS Desktop使用入门&#xff08;二&#x…

解决vue3更新chunk包后,点击页面报错

出现错误 解决思路 试了好多方法&#xff0c;跳了很多坑&#xff0c;router版本对不上&#xff0c;解决方案不实用。最后我直接捕获异常&#xff0c;刷新页面&#xff0c;解决最快最有效。 // vue-rotuer版本 "vue-router": "^4.0.3"解决方案 在router/…

数模 初见数建

文章目录 初见数学建模1.1 数学建模是什么1.2 数学建模的概述1.3 如何学习数学建模---分模块化1.4 数学建模前提了解1.5 数学建模的六个步骤1.6 如何备战建模比赛1.7 数学建模赛题类型1.8 数学建模算法体系概述 初见数学建模 1.1 数学建模是什么 1.原型与模型 原型&#xff…