Linux基础——进程初识(一)

1. 硬件

①冯诺依曼体系

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。其详细结构如下图所示

在这里有几点要说明

1. 这里的储存器实际上指的是内存

2. 输入设备与输出设备都属于外设

常见的输入设备如:鼠标,键盘,摄像头,话筒,磁盘,网卡等

常见的输出设备如:显示器,播放器硬件,磁盘,网卡

3. 运算器与控制器都属于中央控制器(即CPU)

运算器的功能是对我们的数据进行计算任务(算数运算,逻辑运算)

控制器的功能是对我们的计算硬件流程进行一定的控制

值得注意的是

1. 在不考虑缓存情况时,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

2. 在冯诺依曼体系中每一个部件都是一个独立个体

3. 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取

根据上面的情况,我们可以总结出一个结论:所有设备都只能直接和内存打交道 

在了解了冯诺依曼体系后,我们也可以解释一些之前无法解释的问题,如:

为什么一个程序要运行,必须要先加载到内存中?

答:因为冯诺依曼体系结构规定了必须这样做。

在实现进度条小程序时,我们知道默认缓存的数据被储存了起来,那么这些数据存储在哪?

答:储存器中。

②实际举例

在这里我们举一个实际例子

我们在使用QQ向朋友发送消息时,数据是如何流动的?

如果发送的是文件时,那么自己的输入设备和朋友的输出设备都应该是磁盘,朋友在收到文件后,采取的措施是将文件保存到本地磁盘中。 

2. 软件

①什么是操作系统

任何计算机系统都包含一个基本的程序集合,称为操作系统(OS)(operating system)

内核(进程管理,内存管理,文件管理,驱动管理)
其他程序(例如函数库,shell程序等等)

简单来说,操作系统是一个对软硬件资源进行管理的软件。

计算机中有如上图所示的层状结构,在其中我们可以看到操作系统通过直接管理驱动程序来实现间接管理底层的硬件,在管理好软硬件资源之后,操作系统为了保证自己数据安全,也为了保证给用户能够提供服务,操作系统以接口的方式给用户提供调用的入口来获取操作系统内部的数据,这就是系统调用,它是操作系统提供的用C语言实现的,自己内部的函数调用。所有访问操作系统的行为,都只能通过系统调用来完成。那么操作系统存在的意义是什么呢?为什么我们需要操作系统呢?根据上面对层状结构的解释,我们可以有以下理解

1.操作系统帮助用户,管理好下面的软硬件资源
2.为了给用户提供一个良好(稳定,高效,安全)的运行环境

即:操作系统通过管理好底层的软硬件资源(手段),为用户提供一个良好的执行环境(目的) 

在C语言中我们经常会调用系统库,那么这个系统库与系统调用又有何关系和

②操作系统如何进行管理

那么在知道了操作系统是什么之后,它是如何对软硬件进行管理的呢?

首先我们要知道一般管理资源都分为决策者,执行者与被管理者,举几个例子,在大学中,校长就相当于决策者,辅导员是执行者,各个学生就是被管理者,在公司中,老板就相当于决策者,小组长是执行者,员工就是被管理者。在这些例子中,我们可以发现,管理者和被管理者是不需要见面的,既然如此,那么管理者在不见被管理者的情况下,如何做好的管理呢?——其实,只要能够得到管理信息,就可以进行管理决策,由此我们也可以看到管理的本质——通过对数据的管理,达到对人的管理。既然管理者和被管理者面都不见,那怎么拿到对应的数据呢?——通过执行者。

管理者在决定好要收集到被管理者的什么数据之后,如:校长需要收集到学生的学院、专业、班级、学号、姓名、性别、身高、体重、籍贯、电话等数据,通知辅导员收集数据之后,再将其反馈到校长处,校长为了能够更好的管理数据决定描述每一个学生的具体情况,将每个学生视作一个结构体的具体对象,对学生的描述可以如下图所示

在描述好之后,为了将它们互相联系起来,可以向Student结构体中添加struct Student* next来衔接下一个学生,这之后每有一个学生便实例化一个对象,并使它们链接起来,这样就将对学生数据的管理转换成了对链表的管理,这种方式就是操作系统管理资源的方式,即:在操作系统中,管理任何对象,最终都可以转化成为对某种数据结构的增删查改,这种管理资源的方式我们将其称为“先描述,后组织”,即对于任何一个要管理的资源,都要先对其进行描写(有什么属性),这之后再使用一种数据结构来管理它们

3. 进程

①什么是进程

对于一个已经加载到内存中的程序,叫做进程,通俗一点来说,正在进行的程序,我们将其称之为进程。

②进程的理解

因为操作系统是需要同时运行多个进程的,那么操作系统要如何管理进程呢?这在之前我们就提到过——先描述,后组织。对于任意一个进程,在磁盘将其加载到内存时,都是加载的代码与数据进去,而操作系统想要管理它,就要先对一个进程作出相应的描述,为了描述这样一个进程,操作系统有自己的描述进程的结构体对象,即——PCB(process control block),它是一个进程属性的集合体,在这个结构体中包含了许多的进程属性,然后操作系统会根据自己的PCB类型,为传输进来的代码和数据创建相应的PCB对象。

操作系统为了管理这些进程,会将它们转换为单链表方便管理。那么,我们就可以认为进程=操作系统对应的PCB+相应的代码与数据。

③Linux中的进程

在了解了PCB后,Linux中的进程又是什么样的呢?在LInux中,操作系统所使用的PCB为task_struct,其包含进程的所有属性,且LInux是使用双链表的形式来管理进程的。下面就让我们来创建一个进程,其代码如下

int main()
{while (1){printf("这是一个进程\n");sleep(1);}return 0;
}

然后我们可以使用

ps ajx | grep code1

来查看我们想要查看的进程属性,运行有

在这里我们能够看到除了我们想看到的自己的进程外还有一个auto code1进程,我们要想只显示自己的进程可以添加一个过滤命令,即

ps ajx | grep code1 | grep -v grep

此外为了方便我们更好的了解进程属性可以打印一个表头出来,即

ps ajx | head -1 && ps ajx | grep code1 | grep -v grep

运行效果如下

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

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

相关文章

实现SQL server数据库完整性

1.创建一个数据库名为“erp” 主数据文件:初始容量为5MB,最大容量为50MB,递增量为1MB,其余参数自设。事务日志文件:初始容量为3MB,最大容量为20MB,递增量为10%,其余参数自设。 创建…

与脾气不太好的领导,相处原则和相处技巧分享

前言 工作上我看到有的人擅长和各种类型领导相处,而有的人则和领导相处不愉快,不懂灵活变通的人 和领导相处出现冲突时则是当面怼领导,不给领导面子,之后被领导打压,甚至有的人和领导相处 不和离开等等,…

多个HTML属性

在HTML中&#xff0c;属性用于提供有关HTML元素的附加信息。在这篇文章中你将学习多个HTML属性&#xff0c;它们可以增强网站的视觉吸引力。 接下来开始吧&#xff01;&#x1f680; Accept 属性 您可以将accept属性与<input>元素&#xff08;仅用于文件类型&#xff…

SPECPOWER2008

一、前言# 1、软件说明# 官网&#xff1a;SERT套件用户指南2.0.5SPECpower介绍SPEC基准及工具SPECpower_ssj2008测试结果SPECpower_ssj2008-Design_ccs - SPEC# SPEC&#xff08;the Standard Performance Evaluation Corporation&#xff09;是一个由计算机硬件厂商、软件公…

jsp页面通过class或者id获取a标签上的属性的值

要通过class和id两种方式获取a标签上的某个属性的值&#xff0c;或者给其赋值&#xff0c;可以使用JavaScript。以下是两种方法的示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&q…

[ 蓝桥杯Web真题 ]-Markdown 文档解析

目录 介绍 准备 目标 规定 思路 补充知识 解法参考 介绍 Markdown 因为其简洁的语法大受欢迎&#xff0c;已经成为大家写博客或文档时必备的技能点&#xff0c;众多博客平台都提倡用户使用 Markdown 语法进行文章书写&#xff0c;然后再发布后&#xff0c;实时的将其转化…

【Element-ui】Icon 图标与Button 按钮

文章目录 前言一、Icon 图标1.1 作用1.2 使用方法1.3 图标集合 二、Button 按钮2.1 基础用法2.2 禁用状态2.3 文字按钮2.4 图标按钮2.5 按钮组2.6 加载中2.7 不同尺寸 总结 前言 在前端开发中&#xff0c;界面的设计和交互是至关重要的一部分。一个直观、易用的界面往往离不开…

AcGeLinearEnt2d::getPerpLine函数

AcGeLinearEnt2d::getPerpLine函数是AutoCAD图形库&#xff08;AutoCAD Geometry Library&#xff0c;即AcGe&#xff09;中的一个成员函数&#xff0c;用于获取一个通过指定点且垂直于当前直线或线性实体的无限长直线。 函数的参数和返回值说明如下&#xff1a; const AcGeP…

js写旋转的时钟动态

目录 1、css代码 2.html代码 3.js代码 1、css代码 .box {position: relative;width: 600px;height: 600px;background: url(./images/clock.jpg) no-repeat center;}.hour,.minute,.second {position: absolute;left: 0;top: 0;width: 100%;height: 100%;}.hour {background…

上个月暴涨34.6%后,SoundHound AI股票现在还能买入吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 揭开SoundHound AI股价波动的原因 S&P Global Market Intelligence的数据显示&#xff0c;在摆脱了10月份的大幅下跌后&#xff0c;SoundHound AI的股价在11月份实现了34.6%的涨幅。 原因是该公司公布了稳健的第三季…

英文论文查重复率网址

大家好&#xff0c;今天来聊聊英文论文查重复率网址&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; 英文论文查重复率网址 在撰写英文论文时&#xff0c;查重是确保论文原创性和质量的重要环节快码论文…

国产化, 海量数据库 VastbaseG100 兼容适配

背景&#xff1a; 客户是国内某家电龙头企业&#xff0c;应国产化政策要求&#xff0c; 系统需要适配国产数据库&#xff0c; Vastbase G100 遇到问题&#xff1a; 1. 数据库连接&#xff1a; Vastbase 是基于 postgresql 进行封装&#xff0c; 所以理论上是兼容的&#…

Efficient physics-informed neural networks using hash encoding

论文阅读&#xff1a;Efficient physics-informed neural networks using hash encoding Efficient physics-informed neural networks using hash encoding简介方法PINN哈希编码具有哈希编码的 PINN 实验Burgers 方程Helmholtz 方程N-S 方程训练效率对比 总结 Efficient physi…

容器资源视图隔离 —— 筑梦之路

先做个记录&#xff0c;抽空再整理 K8s 部署 Lxcfs 准入控制器&#xff0c;实现容器中资源单独可见 - 「Johny」PlayGround Kubernetes 中利用 LXCFS 控制容器资源可见性 - 码农教程 容器资源可视化隔离的实现方法_51CTO博客_容器隔离技术 Lxcfs在容器集群中的使用-腾讯云开…

06 JQuery调用接口

文章目录 一、Qs.js库介绍1. Qs简介2. Qs.parse3. Qs.stringify 二、jQuery调用接口1. 增加&#xff08;Create&#xff09;2. 删除&#xff08;Delete&#xff09;3. 读取&#xff08;Read&#xff09;4. 更新&#xff08;Update&#xff09; 三、示例 一、Qs.js库介绍 1. Qs…

代码随想录算法训练营 --- 第五十九天

今天同样是单调栈&#xff0c;第二题很重要。 第一题&#xff1a; 简介&#xff1a; 本题可以说和上一题很是相似&#xff0c;只是有一点不同&#xff0c;数组是循环的。本题有两种巧妙地解法&#xff0c;都不难。 第一种方法&#xff08;也是第一个想出来的方法&#xff09…

创建自定义Docker镜像:一步步指南

当创建自定义Docker镜像时&#xff0c;Dockerfile是关键的一环。这篇博客将详细介绍如何编写一个Dockerfile&#xff0c;其中包含创建自定义应用程序所需的步骤和示例。让我们开始吧&#xff1a; 创建自定义Docker镜像&#xff1a;一步步指南 1. 了解Dockerfile Dockerfile是…

我的acer电脑U盘装系统前BIOS设置及装系统过程中的操作

1、开机长按F2进入BIOS设置 2、使能F12 3、调整boot顺序&#xff0c;使USB启动的优先级最高 4、按F10保存退出 5、插入U盘开机&#xff0c;boot选择界面无需操作&#xff0c;等待几秒&#xff0c;默认进入U盘系统 由于既使能了F12&#xff0c;又将U盘的优先级进调整到了最高&…

OpenVINS学习1——数据集配置与运行

前言 OpenVINS是基于MSCKF的开源VIO算法&#xff0c;有非常详细的官网文档可以学习使用&#xff0c;将来一段时间的主要实践工作&#xff0c;就是深度掌握这份开源代码。 https://docs.openvins.com/ 一、环境配置与Euroc数据集运行 我的环境是Ubuntu20.04&#xff0c;ROS1&a…

vue3中实现el-tree通过ctrl或shift批量选择节点并高亮展示

一、看效果&#xff1a; 按住ctrl键实现单个多选 按住shift实现区间范围多选 二、代码&#xff1a; vue页面 <template><el-treeclass"w100%":data"$.treeData"ref"treeTab…