浅谈Linux环境

冯·诺依曼体系结构:

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

其中控制器运算器统称为中央处理器(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.mzph.cn/news/683402.shtml

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

相关文章

汽车零部件制造业MES系统解决方案

一、​汽车零部件行业现状 随着全球汽车产业不断升级,汽车零部件市场竞争日趋激烈,从上游的钢铁、塑料、橡胶等生产到下游的主机厂配套制造,均已成为全球各国汽车制造大佬战略目标调整的焦点,其意欲在汽车零部件行业快速开疆扩土&…

Days 32 ElfBoard GDT工作原理

GDT(Gas Discharge Tubes),即陶瓷气体放电管。GDT是内部由一个或一个以上放电间隙内充有惰性气体构成的密闭器件。GDT电气性能取决于气体种类、气体压力、内部电极结构、制作工艺等因素。GDT可以承受高达数十甚至数百千 安培的浪涌电流冲击&a…

自定义Spring Boot Starter

引言 在Spring Boot的世界中,Starter 能够简化我们的开发过程,通过封装常见的依赖和自动配置。本篇旨在为有志于进一步简化Spring Boot应用配置的开发者提供指导,让我们一起创建一个自定义的Spring Boot Starter。 一、什么是 Spring Boot …

springboot190基于springboot框架的工作流程管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

机器学习12-基本感知器

感知器(Perceptron)是一种最简单的人工神经网络结构,由美国心理学家Frank Rosenblatt在1957年提出。它是一种单层的前馈神经网络,通常用于二分类问题。 基本感知器由多个输入节点、一个输出节点和一组权重参数组成。每个输入节点都与输出节点连接,并且具有一个对应的权重参…

VSCode无法连接远程服务器的两种解决方法

文章目录 VSCode Terminal 报错解决方式1解决方式2you are connected to an OS version that is unsupported by Visual Studio Code解决方法 VSCode Terminal 报错 直接在terminal或cmd中使用ssh命令可以连接服务器,但是在vscode中存在报错,最后一行为…

kali无线渗透之WEP加密模式与破解13

WEP加密是最早在无线加密中使用的技术,新的升级程序在设置上和以前的有点不同,功能当然也比之前丰富一些。但是随着时间的推移,人们发现了WEP标准的许多漏洞。随着计算能力的提高,利用难度也越来越低。尽管WEP加密方式存在许多漏洞…

【C++】const、static关键字和构造函数初始化

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 1. const修饰成员函数 1.1 语法格式 1.2 权限放大缩小 1.3 思考 1.4 解答 2. 再谈构造函数 2.1 构造函数体赋值 2.2 初始…

书生浦语大模型实战营-课程笔记(1)

模型应用过程,大致还是了解的。和之前实习做CV项目的时候比起来,多了智能体这个环节。智能体是个啥? 类似上张图,智能体不太清楚。感觉是偏应用而不是模型的东西? 数据集类型很多,有文本/图片/视频。所以…

神要封,仙要修

(1)人间之战 我记得,那一年,西方的胡夫正要开始修建他的死后极乐世界:金字塔。 那一年,东方也爆发了一场人间大战。 很久很久以前,一支来自乌拉尔山脉南麓脚下的游牧部落,骑着马赶着…

ATCoder Beginner Contest 340 A~G

A.Arithmetic Progression&#xff08;模拟&#xff09; 题意&#xff1a; 输出首项为 a a a&#xff0c;末项为 b b b&#xff0c;公差为 d d d的等差数列。 分析&#xff1a; 按照要求模拟。 代码&#xff1a; #include <bits/stdc.h>using namespace std;int ma…

书城项目历程记录2|最后阶段记录

2024年1月31日 p270-276 1.免用户名登录和注销&#xff08;知识点cookie和session&#xff09; 在学习了cookie和session之后&#xff0c;实现了免用户名登录和注销操作。 免用户名就是在本次session登录成功之后&#xff0c;对session进行setAttribute操作&#xff0c;jsp文…

【C++】模板(超详细!!!!!!)

文章目录 前言1. 泛型编程2. 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则2.6 声明和定义分离 3. 类模板3.1 类模板的定义格式3.2 类模板的实例化 4. 模板分离编译4.1 什么是分离编译4.2 模板的分离编译 总结 前言 …

【Linux笔记】进程间通信之管道

一、匿名管道 我们在之前学习进程的时候就知道了一个概念&#xff0c;就是进程间是互相独立的&#xff0c;所以就算是两个进程是父子关系&#xff0c;其中一个进程退出了也不会影响另一个进程。 也因为进程间是互相独立的&#xff0c;所以两个进程间就不能直接的传递信息或者…

网络安全威胁,如何解决缓冲区溢出攻击

目录 一、什么是网络安全 二、什么是缓冲区 三、缓冲区溢出 四、缓冲区溢出攻击的类型 一、什么是网络安全 网络安全&#xff08;Network Security&#xff09;指的是保护计算机网络及其相关设备、系统和数据免受未经授权访问、破坏、篡改、窃取或滥用的威胁和攻击。随着网…

【doghead】VS2022 win11 安装配置WSL2 以编译linux端的cmake项目并运行1

Visual Studio 2022 在Windows上编译调试WSL2 CMake Linux工程 好像是我自己的vs2022的一个插件支持rust https://github.com/kitamstudios/rust-analyzer.vs/blob/master/PREREQUISITES.md Latest rustup (Rust Toolchain Installer). Install from here. Welcome to Rust!Th…

ElasticSearch分词器和相关性详解

目录 ES分词器详解 基本概念 分词发生时期 分词器的组成 切词器&#xff1a;Tokenizer 词项过滤器&#xff1a;Token Filter 停用词 同义词 字符过滤器&#xff1a;Character Filter HTML 标签过滤器&#xff1a;HTML Strip Character Filter 字符映射过滤器&#x…

『 C++ - STL 』位图(BitMap)与布隆过滤器(Bloom Filter)

文章目录 &#x1f9f8; 位图(BitMap)概念&#x1f9f8; 位图的实现&#x1fa85; 总体框架&#x1fa85; 位图的数据插入&#x1f9e9; 左移操作与右移操作的区别 &#x1fa85; 位图的数据删除&#x1fa85; 位图的数据查找&#x1fa85; 位图整体代码(供参考) &#x1f9f8;…

(06)Hive——正则表达式

Hive版本&#xff1a;hive-3.1.2 一、Hive的正则表达式概述 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 Hive的正则表达式灵活使用解决HQL开发过程中的很多问题&#xff0c;本篇文…

Activation of network connection failed(ubuntu连不上网)

ubuntu连不上网&#xff0c;看了好几个方法找到个有用的记录一下 1. 还原默认设置 2. 更改适配器&#xff1a;加上vmware bridge protocol