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

news2024/11/25 16:23:08

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.coloradmin.cn/o/1296766.html

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

相关文章

分布式搜索引擎(Elastic Search)+消息队列(RabbitMQ)部署

一、分布式搜索引擎:Elastic Search Elastic Search的目标就是实现搜索。是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。在数据量少的时候,我们可以通过索引去搜索关系型数据库中的数据,但是如果数…

【Linux下基本指令 —— 2】

Linux下基本指令 —— 2 十.more 指令语法:功能:常用选项:举例:Xshell7展示十一.less 指令语法:功能:选项:Xshell7展示 十二.head 指令语法:功能:选项:Xshell…

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳?

安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「安卓开发资料从专业入门到高级教程工具包」,点个关注&…

MyBatis下载

官网 MyBatis官网:https://mybatis.org/mybatis-3/ 介绍 MyBatis是一个持久化框架。 支持定制化SQL、存储过程、和高级映射。 MyBatis几乎省掉了所有的JDBC代码、手工参数设置、和结果取回。 MyBatis可以使用简单的XML或者注解进行配置、映射简单类型/接口/Java…

移动距离

//偶数行需要反转,判断行数时,最后一个需要特判,可以用向上取整 //也可以把传入的值减一,下标从0开始 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;public class Main{static int w,m,n;static BufferedReader i…

(04730)电路分析基础之叠加原理

前言 在看今天的内容前,我建议大家先看一下这个列题,想一想这个I1电流为什么可以这样用! 当然想不通也没关系(当我学完基尔霍夫定律看这一题也很懵逼,不清楚i1为什么能够这样用),但是学完今天的…

DSGN:用于 3D 目标检测的深度立体几何网络

论文地址:https://www.jianshu.com/go-wild?ac2&urlhttps%3A%2F%2Farxiv.org%2Fpdf%2F2001.03398v3.pdf 论文代码:https://github.com/chenyilun95/DSGN 论文背景 大多数最先进的 3D 物体检测器严重依赖 LiDAR 传感器,因为基于图像的方…

C/C++,优化算法——双离子推销员问题(Bitonic Travelling Salesman Problem)的计算方法与源代码

1 文本格式 // C program for the above approach #include <bits/stdc.h> using namespace std; // Size of the array a[] const int mxN 1005; // Structure to store the x and // y coordinates of a point struct Coordinates { double x, y; } a[mxN]; //…

近似同态加密的 IND/SIM-CPA+ 安全性:对于 CKKS 实际有效的攻击

参考文献&#xff1a; [LM21] Li B, Micciancio D. On the security of homomorphic encryption on approximate numbers[C]//Advances in Cryptology–EUROCRYPT 2021: 40th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Z…

初识 pytest 及断言使用

章节目录&#xff1a; 一、pytest 相关概述二、环境搭建三、使用前提四、断言4.1 常用断言4.2 异常断言4.3 断言装饰器 五、结束语 一、pytest 相关概述 pytest 是一个基于 Python 编写的测试框架&#xff0c;用于编写和运行各种类型的软件测试。它提供了丰富的功能和灵活的语法…

【数据结构 — 排序 — 插入排序】

数据结构 — 排序 — 插入排序 一.排序1.1.排序的概念及其运用1.1.1排序的概念1.1.2排序运用1.1.3 常见的排序算法 二.插入排序2.1.直接插入排序2.1.1.算法讲解2.1.2.代码实现2.1.2.1.函数定义2.1.2.2.算法接口实现2.1.2.3.测试代码实现2.1.2.4.测试展示 2.2.希尔排序2.2.1.算法…

消费升级:无人零售的崛起与优势

消费升级&#xff1a;无人零售的崛起与优势 随着人们生活水平的提高&#xff0c;消费内容正在从生存型消费转向以精神体验和享乐为主的发展型消费。社会居民的消费结构不断变迁&#xff0c;明显呈现消费升级趋势。个性化和多元化消费势头正在崛起&#xff0c;特别是无人零售的自…

【WPF.NET开发】WPF中的对话框

目录 1、消息框 2、通用对话框 3、自定义对话框 实现对话框 4、打开对话框的 UI 元素 4.1 菜单项 4.2 按钮 5、返回结果 5.1 模式对话框 5.2 处理响应 5.3 非模式对话框 Windows Presentation Foundation (WPF) 为你提供了自行设计对话框的方法。 对话框是窗口&…

算法:常见的哈希表算法

文章目录 两数之和判断是否互为字符重排存在重复元素存在重复元素字母异位词分组 本文总结的是关于哈希表常见的算法 哈希表其实就是一个存储数据的容器&#xff0c;所以其实它本身的算法难度并不高&#xff0c;只是利用哈希表可以对于一些场景进行优化 两数之和 class Solut…

wordpressCPS推广插件-wordpress原淘宝客插件

淘宝客插件改名为CPS推广插件&#xff0c;老版本将不再提供下载。CPS推广插件顾名思义&#xff0c;即购买返利。主要是方便站长添加淘宝、京东的推广商品信息。插件通过大淘客的接口&#xff0c;实现一键添加&#xff0c;支持WordPress经典编辑器&#xff08;Tinymce&#xff0…

机器学习中的特征工程

1 特征工程概述 特征工程是机器学习中的一个关键步骤&#xff0c;在机器学习领域中占有非常重要的地位&#xff0c;是机器学习中不可或缺的一部分&#xff0c;下图展示了一个常规的机器学习流程&#xff1a; 特征工程涉及从原始数据中提取、选择和转换特征&#xff0c;以改善模…

ELK(六)—Filebeat安装部署

目录 一、介绍1.1特点1.2使用原因1.3结构图1.4工作流程 二、安装部署2.1下载2.2启动2.3监控日志文件2.4自定义字段 三、连接Elasticsearch四、工作原理 一、介绍 Filebeat是一个轻量级的日志和文件数据收集器&#xff0c;属于Elastic Stack&#xff08;ELK Stack&#xff09;中…

智能优化算法应用:基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于侏儒猫鼬算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.侏儒猫鼬算法4.实验参数设定5.算法结果6.参考…

vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)

目录 一、什么是Vue路由导航守卫&#xff1f; 二、全局守卫 1、beforeEach 下面是一个beforeEach的示例代码&#xff1a; 2、beforeResolve 下面是一个beforeResolve的示例代码&#xff1a; 3、afterEach 下面是一个afterEach的示例代码&#xff1a; 三、路由独享守卫…

基于stm32ESP8266控制并显示速度的小车

这篇博客是为了实现stm32与ESP8266通讯控制的小车&#xff0c;同时可以实现在网络助手和OLED显示屏上显示速度的功能。 一、硬件部分 名称图片功能32单片机--小车-oled显示屏显示当当前的速度&#xff0c;有需要了解如何使用的可以看看我的文章&#xff0c;http://t.csdnimg.…