浅谈冯诺依曼体系,操作系统和进程概念

news2025/7/12 20:14:01

image-20221222230032355

文章目录

  • 浅谈冯诺依曼体系结构和操作系统
    • 冯诺依曼体系结构
      • 冯诺依曼体系结构图
    • 操作系统
  • 进程
          • task_struct内容分类
        • 进程=内核数据结构(task_struct)+进程对应的磁盘代码
  • 查看进程
      • ps 列出系统中运行的进程
        • ps ajx 查看系统中所有运行的进程
        • ps ajx | grep '程序名' :罗列出对应进程
        • ps ajx | head -1 && ajx | grep '程序名' :罗列出对应进程同时显示标题
      • kill -9 进程id :杀死进程
      • getpid 返回进程的标识符【id】(返回类型是pid_t-本质是size_t)
      • 通过查看 /proc目录查看进程
    • 进程的调用
      • getppid()查看父进程
      • fork 创建子进程

浅谈冯诺依曼体系结构和操作系统

冯诺依曼体系结构

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

冯诺依曼体系结构图

image-20221221101700348

这里的存储器指内存(带电存储,掉电易失),而磁盘(具有永久存储能力)是外存,是外设的一种。

运算器+控制器+其他大致等于cpu。cpu有自己的指令集(简易指令集和复杂指令集),且只能被动的接受别人的指令和数据,并转换成指令集后计算数据。(速度从慢到快:cpu>内存或存储器>外设)

控制器负责数据或者外设准备动作的捕捉;运算器主要做数学运算和逻辑运算。

众所周知,cpu的速度最快,内存较快,而外设较慢。若没有内存,cpu在处理数据的速度则取决于外设,而外设较慢;所以cpu在处理数据时必须从内存中拿!

image-20221222170144075

数据在存储器和外设之间传递被称为IO的过程,从内存的角度上看,把数据从输入设备存入内存的过程叫做input,而把内存中的数据输出到输出设备的过程叫做output,这就是IO的过程

得出结论:冯诺依曼体系规定:cpu不直接与外设沟通,而内存直接与他们直接联系-作为两者之间的桥梁。

操作系统

操作系统是一个进行软硬资源管理的软件,通过合理的软硬件管理,为用户提供良好的执行环境

image-20221221104856018

对于管理的理解:比如企业的CEO对员工进行管理,并不需要CEO天天跟员工接触,而是对员工的数据进行管理!那么管理者怎么对被管理者管理呢?中间就需要执行者去执行管理者的命令去拿到被管理者的数据给管理者。操作系统通过驱动对硬件进行管理

对众多被管理者的数据进行整合分类提炼,构造结构体然后把对应数据填充进去,那么对数据的管理转化为对结构体的管理;把各个结构体通过链表结构联系起来,那么就是转化为对链表对管理;总的来说就是把数据抽象出来再做管理—先描述,再组织-面向对象的本质 总的来说管理的本质:对数据做管理;管理的方法:先描述再管理!

操作系统通过驱动对外设做管理,更深层次就是软件通过操作系统的接口对硬件做管理(简称系统调用-c式)比如printf函数

进程

进程是什么?起初可以说一个运行起来(加载到内存)的程序叫进程或者在内存的程序叫进程,但是看完以下分析后应该对进程有更深入的了解。

我们写出二进制可执行程序放在磁盘,程序运行时内存上有对应加载进来的程序的代码和数据,此时内存上会构造出对应加载进来程序的代码和数据的pcb(pcb之间的数据结构为链表),cpu通过对pcb的管理从而对加载进来的程序的管理,对进程的管理转化成对链表的增删查改!

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

image-20221221152211303

进程=内核数据结构(task_struct)+进程对应的磁盘代码

查看进程

我先创建一个myproc.c在里面写相应代码,和Makefile在里面写相应条件

image-20221221155349929

然后编译运行

image-20221221155421555

可以看到这个程序一直在运行

ps 列出系统中运行的进程

ps ajx 查看系统中所有运行的进程

image-20221221155529412

然后通过管道筛选到我们刚刚写的程序

ps ajx | grep ‘程序名’ :罗列出对应进程

图中上面那个就是我们想要的进程拉

image-20221221155943464

ps ajx | head -1 && ajx | grep ‘程序名’ :罗列出对应进程同时显示标题

image-20221221160239446

kill -9 进程id :杀死进程

输入kill -9 6473杀死刚刚那个进程;对此我们可以知道:进程在调度运行的时候,进程就具有动态属性!

image-20221221160956129

getpid 返回进程的标识符【id】(返回类型是pid_t-本质是size_t)

我们稍微修改myproc.c得以查看进程的标识符(id)

image-20221221161834107

通过ps查看确实就是!

image-20221221162334030

且每次重新运行后进程的id是不同的!

通过查看 /proc目录查看进程

以数字开头的进程或者文件就是进程!没错,在Linux下进程也是目录或文件!

image-20221221163852904

我们终止掉进程后就发现进程对应目录被清理掉了!

image-20221221164157938

我们进到目录里,可以看到exe对应的目录就是可执行程序在磁盘上对应的目录!并且我们通过ls 查看知道进程对应的目录只有读和执行的权限!

image-20221221164847124

现在我另起一个界面删除可执行程序myproc,那进程会被中断吗?不会!进程还运行!

image-20221221165502249

但是我们可以在/proc目录查看到可执行程序对应在磁盘的目录显示红色并且闪动

image-20221221165549752

进程的调用

getppid()查看父进程

我将myproc.c稍作修改

image-20221221170150505

可以发现每次重新运行程序时子进程会改变但是父进程不会改变,通过查看可以知道父进程对应的是shell进程(bash)!每次退出shell后bash才会改变!

因此我们可以知道:命令行上启动的进程,一般情况下它的父进程都是bash

image-20221221170315614

image-20221221170736365

fork 创建子进程

fork函数执行前,只有一个父进程,执行后有父进程和子进程两个进程。

通过man查看,知道返回值为 pid_t,然后在当时界面下输入/return val查看返回值,可以知道如果成功就把pid返回给父进程,而把0返回给子进程,如果失败就把-1返回给父进程,子进程没有返回值

image-20221221172103801

然后我们通过运行得知确实如此,但是我们打印了两次!且我在以往的c和c++学习中没遇到过一次性有两个返回值的情况!

image-20221221172535916

利用fork返回值的特性再对myproc.c修改,如果返回值是0那么就执行子进程且每次睡眠1秒,如果返回值大于0就执行父进程且每次睡眠2秒。

image-20221221174303850

然后我们执行可以知道先是执行了一次父进程然后执行了两次子进程

image-20221221174510650

综上得出:fork()之后,会有父进程和子进程两个进程在执行后续代码,且后续代码共享!可以通过返回值和id不同辨识父子进程!

好啦以上就是我对关于冯诺依曼体系结构、操作系统的理解和对进程概念、怎么查看进程、杀死进程,调用进程的介绍。

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

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

相关文章

【Linux操作系统】——在Ubuntu20.04上安装MySQL数据库

在Ubuntu上安装MySQL MySQL是一个开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装。它使用关系数据库和SQL(结构化查询语言)来管…

类美团外卖、骑手、类快递取餐柜、整合菜品供应商、前厅、后厨、配送、智能厨电设备的智慧餐饮业务

一种商业模型之类美团外卖、骑手、类快递取餐柜、整合前厅、后厨、智能厨电设备智慧餐饮业务架构 涉及到: 0、基础数据管理 1、菜谱创错 2、菜谱编译 3、菜谱商业化 4、厨电管理 5、后厨管理 6、前厅管理 …

【Call for papers】SIGKDD-2023(CCF-A/数据挖掘/2023年2月2日截稿)

29TH ACM SIGKDD CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING. 文章目录1.会议信息2.时间节点3.论文主题1.会议信息 会议介绍: 29TH ACM SIGKDD CONFERENCE ON KNOWLEDGE DISCOVERY AND DATA MINING. 会议全称: ACM Knowledge Discovery and D…

为什么 APISIX Ingress 是比 Traefik 更好的选择?

本文可以为正在选型 Kubernetes Ingress Controller 产品的用户提供一些帮助。 作者张晋涛,API7.ai 云原生专家,Apache APISIX Committer、Kubernetes Ingress Nginx Reviewer Apache APISIX Ingress Apache APISIX Ingress 是一个使用 Apache APISIX 作…

FrameLayout布局案例

框架布局-FrameLayout 1.FrameLayout简介 1.简介:白话,墙角堆砌东西 就是开辟一个巨大的空间控件的位置不能够指定,默认就是左上角后面对挡住前面的2.属性 属性名称 对应方法 说明 android:foreground setForeground(Drawable) 设置绘制…

【408篇】C语言笔记-第十四章( 二叉树的建树和遍历考研真题实战)

文章目录第一节:冒泡排序1. 排序2. 冒泡排序第二节:冒泡排序实战1. 步骤2. 代码3. 时间复杂度与空间复杂度第三节:快速排序原理与实战1. 基本思想2. 快速排序实战3. 时间复杂度与空间复杂度第四节:插入排序原理及实战1. 插入排序原…

HSF 实现原理

HSF 实现原理 提供服务的流程 - server启动时候向ConfigServer注册 - client启动时候向ConfigServer请求list - client缓存list,发现不可用的server,从缓存中remove - ConfigServer通过心跳包维护可用server的list - list有更新的时候,…

单片机——LED

0. 单片机编程的一般步骤 目标分析:点亮开发板上的LED灯 电路原理图分析:相关器件的工作原理 数据手册分析:IO端口控制 代码编写、编译 下载与调试 1. LED简介 Led:即发光二极管,具有单向导通性,一般…

验证码、通知短信API常见使用问题

如今短信应用于我们生活工作的方方面面,注册或者登录一个应用可以用短信验证码快速登录,支付可以使用短信验证码;商家搞促销活动可以发送通知短信给客户,会员到期了商家可以发送告警短信给会员用户…可见验证码短信API和通知短信A…

JavaFX爱好者看过来,这款工具值得拥有

前言 各位CSDN的博友们,随着各地政策的放开,大伙现在是在水深火热当中呢?还是天选打工人-安然无羊。在这里,希望阳了的朋友,赶紧恢复健康,早日康复。希望没有阳的朋友们,继续坚持,万…

聊聊设计模式-解释器模式?

简介 解释器模式属于行为型模式。它是指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。是一种按照规定的语法进行解析的模式 编译器可以将源码编译解释为机器码,让CPU能进行识别并…

C++调用matlab引擎画三维图

VS2012设置 项目–项目属性–配置属性–VC目录–包含目录 D:\MATLAB\R2016a\extern\include 项目–项目属性–配置属性–VC目录–库目录 D:\MATLAB\R2016a\extern\lib\win64\microsoft 添加依赖项有两种方法: 方法一:项目中设置 项目–项目属性–配置属…

一、线程相关概念

文章目录相关概念程序(program)进程线程单线程与多线程并发与并行相关概念 程序(program) 是为完成特定任务、用某种语言编写的一组指令的集合。简单的说:就是我们写的代码。 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程&#xff0c…

基于注解方式Spring Security忽略拦截

文章目录1.Spring Security忽略拦截配置2.基于配置文件注入2.1.添加配置2.2.修改Spring Security配置类2.3. 测试3.基于注解的方式过滤接口3.1.添加注解3.2.获取所有使用了IgnoreWebSecurity注解的接口访问路径3.3.测试1.Spring Security忽略拦截配置 关于Spring Securite的使…

SDL学习

学习笔记:整合安全开发生命周期SDL的Devops工具链建设 分享思路:《SDL安全开发生命周期介绍》 1、什么是SDL? 2、为什么需要SDL? 3、DevSecOps实践(SDLDevOps) 【整合安全开发生命周期SDL的DevOps工具链建…

408 考研《操作系统》第三章第一节:内存

文章目录教程1. 内存的基础知识1.1什么是内存?有何作用?补充知识:几个常用的数量单位2. 进程的运行原理2.1 指令的工作原理2.2 逻辑地址vs物理地址2.3 从写程序到程序运行2.4 装入模块装入内存2.5 装入的三种方式2.5.1 ——绝对装入2.5.2 ——…

VR的内容荒漠,字节救不了

文|智能相对论 作者|Kinki 去年以来,“元宇宙”概念大火,掀起了新一轮的产业布局和科技博弈,脸书Facebook更直接改名Meta,展示其看好元宇宙未来的决心,国内大厂如腾讯、字节、阿里等,也在游戏、社交、硬件…

Macos安装和卸载第三方软件的正确方法

Mac第三方软件通常指的是非MacApp Store渠道下载安装的应用程序。在Mac电脑中有很多Mac系统内置的软件,但有些用户也喜欢安装一些第三方的软件来提高工作效率,那么我们如何正确的安装和卸载第三方软件呢?教程都在下面哦~ mac第三方软件安装方…

Fabric.js 使用图片遮盖画布(前景图)

本文简介 点赞 关注 收藏 学会了 在 《Fabric.js 使用纯色遮挡画布》 中讲到使用纯色的方式遮盖画布。如果你的常见需要使用图片来遮盖的话,fabric.js 也提供了相应的属性来配置。 相比起使用纯色遮盖画布,使用图片会更复杂。 因为图片本身是有尺寸…

【科研工具】一款好用的科研插件-easyScholar

0.概述1.安装2.功能显示SCI分区:定位优质的文献【看分区排名靠前的1-2区】选中英文按下t翻译,按下y隐藏翻译点击文献网址的图标跳转sci-hub下载0.概述 easyScholar是一款很好用的科研插件,可以显示会议期刊登记,支持轻量翻译&…