波奇学Linux:冯诺依曼和进程

news2024/11/27 0:31:54

现代计算机大多是冯诺依曼体系结构,这是一种硬件结构,规定了设备组成和设备类型。

 存储器:内存,磁盘/U盘是外存是输入输出设备。

输入设备:键盘/磁盘/摄像头/话筒/网卡

输出设备:显示器,播放器硬件,磁盘,网卡....

输入和输出设备都是外部设备,简称外设

运算器:对数据进行算术运算。逻辑运算。

控制器:对硬件流程进行一定控制。

设备之间的连接通过系统总线和I/O总线相连。

存储设备效率:由上往下效率越低容量越大

内存相当于硬件缓存,外设的速度和cpu的速度相差过大,如果直接相连,会导致计算早就完成,但是读写未完成,而使用内存可以在cpu计算的同时,预习加载下一次计算的内容。总体上加快速度。冯诺依曼体系中内存的存在在某种程度下降低成本,提高速度。

在I/O流中内存和cpu直接交互,所以所有的程序都必须加载到内存中运行。

操作系统是一个对软硬件管理的软件,为用户提供稳定,安全,高效的环境。

操作系统包含内核和其他程序(shell ,函数库),操作系统包含内存管理,进程管理,文件管理,驱动管理。

操作系统通过接口(函数)暴露出来给他人使用,就是system call,软件只有通过system call来使用硬件资源。 system的上层还有lib(库函数)如:printf()能输出打屏幕上,一定是封装了system call的接口。再一层一层往下调用。

所有的语言都是在操作系统之上的。

操作系统是如何管理软硬件资源的?先描述再组织

操作系统的管理本质上是获取计算机软硬件的信息再做出决策的过程。

操作系统通过驱动获取硬件信息,硬件的属性是公有的,因此可以通过模板来描述信息,再通过各种数据结构来组织信息。最后通过对数据结构的增删查改来实现对信息处理。

进程:一个加载到内存中的程序。进程也叫任务。

 任何一个程序加载到内存时形成真正的进程时,操作系统要先创建描述进程的结构体对象PCB(process ctrl block 进程控制块)。

对于Linux来说,PCB:描述进程的结构体对象。

PCB通过描述进程的属性来表示进程(这不就是面向对象思维通过大量的属性集合来表示物体)

进程的属性:进程编号,进程状态,优先级等

一个进程=内核PCB结构对象+程序的代码和数据

对进程的管理就是对进程内核PCB数据结构对象的数据管理,对进程的阻塞等也是对PCB的操作

PCB:进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合,只要有上述功能的都可以叫做PCB,task_struct就是Linux的PCB。

task_struct 是结构体,是Linux内核的一种数据结构或者类型。

task_struct内容分类:

标识符:区别其他进程

状态:任务状态,退出代码,退出信号

优先级:相对于其他程序的优先级

程序计算器:程序中即将被执行的下一条指令地址,就像是寄存器会存放下一条指令的地址

内存指针:包括程序代码和进程相关数据的指针,还有其他进程共享的内存块的指针。

上下文数据:进程时处理的寄存器的数据(休学例子,要加图CPU,寄存器)

I/O状态信息:包括显示的I/O请求,分配给进程的I/O设备和进程使用的文件列表。

记账信息:包括处理器时间总和,使用的时钟数总和,时间限制,记帐号等。

其他信息。

Linux内核中,组织task_struct 是用双向链表,一个task_struct对应一个进程,多个task_struct是用链表组织的。

 查看进程指令

ps ajx//查看所有进程

ls /proc

 

 proc相当于将内存可视化,这意味着如果进程消失了,proc显示的进程也会减少,每次开关机都proc都会重新创建或者销毁。

打开进程对应的文件夹,查看相关信息

 指向

 exe指向可执行文件的目录。

cwd指向进程的运行目录。

为什么touch test.c是在本地目录下创建的文件。

touch进程运行默认是在本地目录的,对于创建的文件,进程的结果也是放在本地目录,由此我们可以推断再不同目录下创建文件,实际上是让rouch进程在不同的目录下运行。

 

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

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

相关文章

Spring6 初始

Spring6 初始 文章目录 Spring6 初始每博一文案:1. 初始 Spring61.1 OCP开闭原则1.2 依赖倒置原则DIP1.3 控制反转IoC 2. Spring 初始2.1 Spring特点2.2 Spring6 的下载:2.3 Spring的jar文件 3. 第一个Spring 程序的编写4. 第一个Spring程序详细剖析4.1 bean标签的i…

SQL28 计算用户8月每天的练题数量

select day(date) as day,count(question_id) from question_practice_detail where month(date)8 and year(date)2021 group by date

C语言如何计算结构体大小(结构体的内存对齐)

前言: 结构体的内存对齐是有关结构体内容的很重要一个知识点,主要考察方式是计算结构体的字节大小。 引言: 当我们对计算结构体一无所知,我们不妨自己思索如何计算,是不是直接计算结构体成员变量占用内存的大小呢&a…

共享与协作:时下最热门的企业共享网盘推荐!

现代企业面临着越来越大的数据存储和共享压力。为了提高公司的生产力和效率,许多企业开始寻找共享网盘解决方案。这些共享网盘平台可以帮助企业集中管理文件和数据,并方便快速地与同事、客户或供应商共享。以下是几款好用的企业共享网盘。 Zoho Workdriv…

Android BlueToothBLE入门(三)——数据的分包发送和接收(源码已更新)

学更好的别人, 做更好的自己。 ——《微卡智享》 本文长度为3675字,预计阅读12分钟 前言 接上篇《Android BlueToothBLE入门(二)——设备的连接和通讯(附Demo源码地址)》最后提到过蓝牙BLE通讯每次默认发送…

qt 32位编译 内存溢出 无法 运行在win7 32位

项目在 编译32位系统 内存溢出 设置成了x64 但是 最后在xp32位系统运行提示 在下载了n个dll之后发现这种状况无穷无尽,后来在查阅资料时发现可以直接打开qt安装目录下的“vcredist”文件夹,将对应位数的程序拷到win7电脑上,直接运行&…

优化营商环境:构建智能营销平台,助力企业经营发展

对于企业来说,没有了客户,就像身体没有了血液,将失去生命力和活力,续存难发展更难。区域产业又是由一个个企业集聚而形成,企业的成败也就决定着区域产业的兴衰。 在当今竞争激烈的商业环境中,传统的销售手段…

基于python的爬虫实现

定义 爬虫(Web crawler),也被称为网络爬虫、网络蜘蛛或网络机器人,是一种自动化程序,用于浏览互联网并收集网页内容。 基本原理 爬虫的工作原理是通过发送HTTP请求从网页服务器获取网页的内容,然后解析网…

何时使用Windbg静态分析?何时使用Windbg动态调试?

目录 1、概述 2、使用Windbg静态分析dump文件 2.1、异常捕获模块自动生成dump文件 2.2、从Windows任务管理器中导出dump文件 2.3、从正在动态调试的Windbg中使用命令导出dump文件 2.4、使用Windbg静态分析dump文件的一般步骤 3、使用Windbg动态调试目标进程 3.1、程序发…

Win10 配置NDK安装2023.7.19版本

NDK安装流程 1. 下载:2. 安装:3. 测试: 在大多数情况下,使用 Android SDK 管理器安装 NDK 会更轻松。本文单独安装NDK,但后续也可以使用管理器进行管理。 1. 下载: 地址 Fig.1 最新稳定版本 2. 安装&…

精益生产的五大管理工具:提升效率,降低成本!

在制造业的世界里,精益生产是一种以追求在制造过程的各个方面减少浪费为中心的方法。为了实现这一目标,有几个经常使用的管理工具。这些工具使制造商能够识别和消除生产过程中任何效率低下或浪费的资源。本文将讨论精益生产中使用的一些关键管理工具&…

Android 进程与进程之间的通信--Messager 详细教程,两个app实现

Messenger是一种轻量级的IPC方案,它的底层实现其实就是AIDL.跨进程通信使用Messenger时,Messenger会将所有服务调用加入队列,然后服务端那边一次处理一个调用,不会存在同时调用的情况.而AIDL则可能是多个调用同时执行,必须处理多线程问 步骤详情 一、服务端 public class MyM…

如何使用DiskPart命令行格式化分区?

想要格式化磁盘分区,您可以使用磁盘管理工具,或在Windows文件资源管理器中右键单击驱动器并选择“格式化”。如果您更想使用命令行来格式化磁盘,那么Windows自带的DiskPart将是首选。 DiskPart有很多优点,例如,如果您想…

《无畏契约》游戏分析

文章目录 介绍游戏继承性《守望先锋》游戏美术对比游戏机制对比 《CSGO》游戏美术对比游戏机制对比 《英雄联盟》游戏美术对比游戏机制对比 《无畏契约》的优点《无畏契约》的缺点该游戏值得学习之处总结 介绍 《无畏契约(VALORANT)》是一款由拳头游戏&…

Vue组件的基本使用

Vue中想用组件总共分几步: 1.创建组件 2.注册组件 3.使用组件 1.创建组件 //1.创建school组件,这里的school并不是组件名,只是一个中转变量名const school Vue.extend({// el:#root, //组件定时,一定不要写el配置项&#xff0…

[python][深度学习]diffusers加载模型每次都联网如何离线加载

diffusers模块很好用,唯一缺点就是没把离线加载模型做好。一般都是联网自动下载后,以后离线加载一下就行了,没想到每次都远程下载一堆东西而且经常容易断网。因此研究离线加载势在必行,经过N次下载之后终于成功下载模型 下载后发现…

【电路原理学习笔记】第5章:串联电路:5.1 电阻的串联

第5章:串联电路 5.1 电阻的串联 图5-1a展示了申联于A点和B点之间的2个电阻。图5-1b和图5-1c分别展示了3和4个电阻相串联的情况。当然,串联电路中可以有任意数量的电阻。 对于图51所示各电路,当电压源连接在A点和B点之间时,电流…

【数据结构】链表及无头单向非循环链表实现

目录 1.顺序表的问题 2.链表的概念、结构及分类 3.无头单向非循环链表实现 3.1创建节点 3.2头插数据 3.3头删数据 3.4尾插 3.5尾删 3.6链表销毁 3.7查找一个元素 3.8在pos之前插入 3.9在pos之后插入 3.10删除pos位置 3.11删除pos之后的位置 1.顺序表的问题 顺…

第一百一十天学习记录:C++实战:自我设计用单链表、多态和文件操作写一个公会人员管理系统

实现程序界面展示: 主界面: 程序输入非正常字符情况保护 添加会员信息 删除会员信息 查找会员信息 变更会员会阶 显示所有会员 排序会员信息 查看种族职业 保存信息的txt文件 工程文件目录 main.cpp代码 #include "allmember.h" #include &q…

2023年7月广州/深圳软考中级系统集成项目管理工程师招生

系统集成项目管理工程师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职…