浅谈Linux环境

news2024/11/29 4:50:56

冯·诺依曼体系结构:

在这里插入图片描述
绝大多数的计算机都遵守冯诺依曼体系结构
在冯诺依曼体系结构下各个硬件相互配合处理数据并反馈结果给用户

其中控制器运算器统称为中央处理器(CPU),是计算机硬件中最核心的部分,像人类的大脑操控其他器官一样来控制其他硬件资源
存储器指的是内存(磁盘不是存储器,而是输入输出设备
输入设备输出设备有很多具体例子,例如键盘、显示器、磁盘等等。

如果不涉及控制命令,我们认为中央处理器只从存储器中读取数据,输入设备中的数据必须先加载到内存中等待。
可以说存储器是一切硬件数据交互的一个媒介。

存储器为什么存在?为什么不采用输入设备→CPU→输出设备的体系?
这是一个好问题。
在人看来计算机的速度是很快的。
但站在计算机的角度,各种硬件的读取速度相差非常大。
形象一点说,CPU的速度是纳秒级,存储器的速度是微秒级,磁盘的速度是毫秒级

如果没有存储器作为过渡,CPU直接访问磁盘,数据的读取非常慢,而CPU的目的就是高效处理,从这角度上来看可以说磁盘拖累了CPU,因而CPU需要一个工具,使得单位时间内能给它更多数据处理,而这就是存储器

初始操作系统:

我们都多多少少地听过操作系统,平时也会有人谈论win10好还是win11好,但是真正了解操作系统的人却不多,因为其体系过于庞大复杂,晦涩难懂。
从一个很大的角度来看,操作系统就是一款软件,一款负责管理、负责为用户提供更好的人机交互的软件

计算机无非是由各种软件和硬件组成的,如果让民众直接操作软件和硬件,那可以说没几个人会使用电脑了,操作系统相当于帮人做事,用户只需要告诉操作系统要做什么,操作系统便根据用户的需求来控制软硬件处理数据,复杂缜密的过程用户不需要知道。
有了操作系统,用户要做一件事,只需要给一个触发条件,这样看就有一点封装的意味了。

在这里插入图片描述

用户通过一些外壳接口输入指令,外壳会自动的寻找到系统接口进行系统调用。
不允许用户直接访问操作系统内核的原因是出于安全性。

进程:

所谓程序:简单地说可以看作是一个正在执行的程序;准确来说进程是进程控制块+所对应的程序

举一个形象的例子:当我们开始执行一个test的可执行程序时,其实是创建了一个新的进程,可执行程序的属性会被加载到内存

计算机肯定是不会出现只有一个进程的情况,往往是有许许多多进程并发执行的。
那么进程之间如果是杂乱无章的肯定是不行的,必须要先描述这些进程的属性信息,再借助数据结构来组织起来,使其有序。

加载到内存的可执行程序的属性会被一个名为进程控制块/PCB的所描述,每一个进程都对应着一个PCB,在Linux中PCB是一个名为task_struct的结构体。

在windows可以通过shift+ctrl+esc的方式打开任务管理器查看进程
那么Linux下如何查看呢?
下面介绍一种最常用的方法:

ps ajx | head -1 && ps ajx | grep ###

用于查找某一个进程

这里需要重点了解两个属性
PID:又称进程ID,用于表示某一个进程,类似于人的身份证号
PPID:父进程ID,标识此进程由哪个进程创建

进程是可以由进程创建的,于是就有了父子进程的关系,
下面介绍一个C语言中创建子进程的函数:fork()

在执行到fork语句时会创建一个子进程共享后续代码

环境变量:

引子:
windows按住win+R弹出命令框,输入cmd可以打开终端,输入ts却什么都没有;
这就像我们在Linux中在命令行上输入ls可以显示文件信息,输入自己产生的可执行程序却不行。

ls指令其实也是一个可执行程序,之所以能直接执行ls,是因为有环境变量在帮助系统去找到ls可执行程序所在的路径使其能快速执行,而环境变量没有存储用户自己产生的可执行程序,就当然找不到了。

浅浅思考一下,输入一行命令后系统需要去寻找改命令对应的程序所在路径,在没有任何工具的情况下找起来是不是非常难受,系统当然不想这么做,环境变量的作用就等同于直接告诉系统要找的程序的路径,直接访问就好了。

在Linux下可以通过

echo $PATH

来查看当前环境变量
在这里插入图片描述
我们在命令行输入一些常用指令是系统就会去这些路径下搜索

假如我们想让自己生成的可执行程序能够像ls指令一样直接执行,那么就必须把他添加到环境变量中去
我们采用export PATH=$PATH:路径的方式添加环境变量
在这里插入图片描述

环境变量具有全局特性,可以被子进程继承

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

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

相关文章

【记录】记一次关于前端单元测试的全英文问卷调查( Survey: Automatically Generated Test Suites for JavaScript)

文章目录 OPENING STATEMENTBackgroundTask background: Fix the failing test casesBefore the task: Task: Fix the failing test casesTask: Executable DocumentationBefore the task: Bonus Opportunity: One more taskTask: Test Cases ClusteringRewardThank You! 原地址…

RocketMQ与Kafka架构深度对比

在分布式系统中,消息中间件扮演着至关重要的角色,它们负责在系统组件之间传递消息,实现解耦、异步通信和流量削峰等功能。RocketMQ与Kafka作为两款流行的消息中间件,各自拥有独特的架构设计和功能特性。本文将深入对比分析RocketM…

【机器学习300问】22、什么是超参数优化?常见超参数优化方法有哪些?

在之前的文章中,我主要介绍了学习率 η和正则化强度 λ 这两个超参数。这篇文章中我就主要拿这两个超参数来进行举例说明。如果想在开始阅读本文之前了解这两个超参数的有关内容可以参考我之前的文章,文章链接为你放在了这里: 【机器学习300…

算法沉淀——哈希算法(leetcode真题剖析)

算法沉淀——哈希算法 01.两数之和02.判定是否互为字符重排03.存在重复元素04.存在重复元素 II05.字母异位词分组 哈希算法(Hash Algorithm)是一种将任意长度的输入(也称为消息)映射为固定长度的输出的算法。这个输出通常称为哈希…

2024.2.8

1. 现有文件test.c\test1.c\main.c,编写Makkefile Makefile: CCgcc EXEa.out OBJS$(patsubst %.c,%.o,$(wildcard *.c)) CFLAGS-c -oall:$(EXE)$(EXE):$(OBJS)$(CC) $^ -o $%.o:%.c$(CC) $(CFLAGS) $ $^.PHONY:cleanclean:rm $(OBJS) $(EXE) 2. C编程实现&#x…

HarmonyOS鸿蒙学习基础篇 - Column/Row 组件

前言 Row和Column组件是线性布局容器,用于按照垂直或水平方向排列子组件。Row表示沿水平方向布局的容器,而Column表示沿垂直方向布局的容器。这些容器具有许多属性和方法,可以方便地管理子组件的位置、大小、间距和对齐方式。例如&#xff0c…

netstat命令

netstat 是一个计算机网络命令行工具,用于显示网络连接、路由表和网络接口等网络相关信息。netstat 命令可以在各种操作系统上使用,包括 Windows、Linux 和 macOS 等。 在使用 netstat 命令时,可以提供不同的选项来显示不同类型的网络信息。…

【北邮鲁鹏老师计算机视觉课程笔记】08 texture 纹理表示

【北邮鲁鹏老师计算机视觉课程笔记】08 texture 纹理表示 1 纹理 规则和不规则的 2 纹理的用处 从纹理中恢复形状 3 分割与合成 4 分析纹理进行分类 通过识别纹理分析物理性质 如何区分纹理 5 寻找有效的纹理分类方法 发现模式、描述区域内模式 A对应图2 B对应图…

Linux命令行全景指南:从入门到实践,掌握命令行的力量

目录 知识梳理思维导图: linux命令入门 为什么要学Linux命令 什么是终端 什么是命令 关于Linux命令的语法 tab键补全 关于命令提示符 特殊目录 常见重要目录 /opt /home /root /etc /var/log/ man命令 shutdown命令 history命令 which命令 bash…

单链表的介绍

一.单链表的概念及结构 概念:链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构,数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 结构:根据个人理解,链表的结构就像火车厢一样,一节一节连在一起的&#x…

ClickHouse--07--SQL DDL 操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SQL DDL 操作1 创建库2 查看数据库3 删除库4 创建表5 查看表6 查看表的定义7 查看表的字段8 删除表9 修改表9.1 添加列9.2 删除列9.3 清空列9.4 给列修改注释9.5 修…

深入解析Elasticsearch的内部数据结构和机制:行存储、列存储与倒排索引之倒排索引(三)

当我们谈论Elasticsearch(简称ES)时,我们经常会提到它的高效搜索能力。而这背后的核心技术之一就是倒排索引。那么,什么是倒排索引,以及它是如何在Elasticsearch中工作的呢? 深入解析Elasticsearch的内部数…

机器学习系列——(二十一)神经网络

引言 在当今数字化时代,机器学习技术正日益成为各行各业的核心。而在机器学习领域中,神经网络是一种备受瞩目的模型,因其出色的性能和广泛的应用而备受关注。本文将深入介绍神经网络,探讨其原理、结构以及应用。 一、简介 神经网…

PHP脉聊交友系统网站源码,可通过广告变现社交在线聊天交友即时通讯APP源码,附带视频搭建教程

探索全新社交体验:一站式PHP交友网站解决方案 🌐 全球化交友,无界沟通 在数字化的浪潮下,社交已不再受地域限制。我们的PHP交友网站不仅支持多国语言,还配备了即时翻译功能,让您轻松跨越语言障碍&#xff…

分享87个CSS3特效,总有一款适合您

分享87个CSS3特效,总有一款适合您 87个CSS3特效下载链接:https://pan.baidu.com/s/1CAxe8nPBzXvH7Nr6B_U72Q?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不…

MySQL基本操作之数据库的操作

一.创建数据库 1.基本语法 create database 数据库名; 注意别忘记加分号。 2.if not exists 数据库名字是唯一的,所以不可以创建已存在的数据库,如下: 重复创建就会报错 所以有了if not exists这个语法,加上之后&…

片上网络NoC(5)——非直连拓扑

目录 一、前言 二、概念阐述 三、交叉开关 四、蝶形网络 五、clos网络 六、fat tree网络 6.1 clos网络的折叠过程 七、总结 一、前言 本文继续介绍片上网络的拓扑,在之前的文章中,我们已经介绍了片上网络的拓扑指标和直连拓扑的相关内容&#xf…

正月初五迎财神

大家好,我是小悟 正月初五,人们在这一天迎接财神,祈求财运亨通、事业顺利。按照习俗,家家户户都会燃放鞭炮、点灯笼、摆设祭品,以示虔诚。 早晨,太阳刚刚升起,大家便早早起床,开始准…

软件架构与系统架构:区别与联系的分析

软件架构与系统架构:区别与联系的分析 在信息技术领域,软件架构和系统架构这两个术语经常被提及。尽管它们在某些方面有重叠,但它们确实代表了不同的概念和聚焦点。理解这两种架构之间的区别和联系对于任何从事技术开发和设计的专业人士都是至…

【Python网络编程之TCP三次握手】

🚀 作者 :“码上有前” 🚀 文章简介 :Python开发技术 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python网络编程之[TCP三次握手] 代码见资源,效果图如下一、实验要求二、协议原理2.…