当前位置: 首页 > news >正文

浅谈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:路径的方式添加环境变量
在这里插入图片描述

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

相关文章:

浅谈Linux环境

冯诺依曼体系结构: 绝大多数的计算机都遵守冯诺依曼体系结构 在冯诺依曼体系结构下各个硬件相互配合处理数据并反馈结果给用户 其中控制器和运算器统称为中央处理器(CPU),是计算机硬件中最核心的部分,像人类的大脑操控…...

Spring 用法学习总结(一)之基于 XML 注入属性

百度网盘: 👉 Spring学习书籍链接 Spring学习 1 Spring框架概述2 Spring容器3 基于XML方式创建对象4 基于XML方式注入属性4.1 通过set方法注入属性4.2 通过构造器注入属性4.3 使用p命名空间注入属性4.4 注入bean与自动装配4.5 注入集合4.6 注入外部属性…...

免费软件推荐-开源免费批量离线图文识别(OCR)

近期要批量处理图片转电子化,为了解决这个世纪难题,试了很多软件(华为手机自带OCR识别、 PandaOCR、天若OCR、Free OCR)等软件,还是选择了这一款,方便简单 一、什么是OCR? 光学字符识别(Opt…...

2 scala集合-元组和列表

1 元组 元组也是可以存放不同数据类型的元素,并且最重要的是,元组中的元素是不可变的。 例如,定义一个元组,包含字符串 hello,数字 20。如果试图把数字 20 修改为 1,则会报错。 scala> var a ("…...

Spring Boot开启SSL/Https进行交互。

为2个springboot工程开启进行SSL进行交互的认证步骤 //哪个犬玩意举报我侵权的? 一、认证步骤 1、 为服务器生成证书 keytool -genkey -v -alias testServer -keyalg RSA -keystore E:\ssl\testServer.p12 -validity 36500 2、 为客户端生成证书 keytool -genkey -v -alias…...

88.Go设计优雅的错误处理

文章目录 导言一、Go 的约定二、简单错误创建1、 errors.New()2、fmt.Errorf() 三、哨兵错误四、对错误进行编程1、优雅的错误处理设计2、与错误有关的的API 五、总结 导言 在 75.错误码设计、实现统一异常处理和封装统一返回结果 中,我们介绍了错误码的设计&#…...

Python4Delphi: Delphi 程序使用 Python 抓取网页

想用程序去抓取一个网页的内容,Delphi 有自己的 HTTP 库。比如 Indy 的 TIdHTTP,或者 TNetHTTPClient。 这里测试一下使用 Python 的 HTTP 库抓取网页,然后把抓取的内容给 Delphi 的程序。 Delphi 程序,界面上拖控件如下&#x…...

编辑器Zed

什么是Zed 官网:https://zed.dev/ Zed 是 Atom 编辑器原作者主导的新项目 —— 一款支持多人协作的代码编辑器,底层采用 Rust,且默认支持 Rust,还自带了 rust-analyzer,主打 “高性能”,颜值也十分在线&a…...

Java的接口

目录 1.接口的概念 2.语法规则 3.接口的使用 4.接口的特性 总结: 5.实现多个接口 6.接口间的继承 1.接口的概念 接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。 在Java中,接口可以看成…...

【计算机网络】计算机软件工程人工智能研究生复试资料整理

1、JAVA 2、计算机网络 3、计算机体系结构 4、数据库 5、计算机租场原理 6、软件工程 7、大数据 8、英文 自我介绍 2. 计算机网络 1. TCP如何解决丢包和乱序? 序列号:TCP所传送的每段数据都有标有序列号,避免乱序问题发送端确认应答、超时重传:解决丢包问题滑动窗口:避免…...

【Network Management】AUTOSAR架构下CanNm User Data详解

目录 前言 正文 1.CanNm user data概念 2.CanNm user data配置 2.1CDD方式访问CanNm user data...

量子算法入门——2.线性代数与复数

参考资料: 【【零基础入门量子计算-第03讲】线性代数初步与复数】 来自b站up:溴锑锑跃迁 建议关注他的更多高质量文章:CSDN:【溴锑锑跃迁】 0. 前言 强烈建议搭配b站原视频进行观看,这只是我当时看的笔记&#xff0c…...

分别通过select、多进程、多线程实现一个并发服务器

多进程 #include<myhead.h>#define PORT 8888 //端口号 #define IP "192.168.114.74" //IP地址//定义函数处理客户端信息 int deal_cli_msg(int newfd, struct sockaddr_in cin) {//5、收发数据使用newfd完成通信char buf[128] "&qu…...

如何在 emacs 上开始使用 Tree-Sitter (archlinux)

文章目录 如何在emacs上开始使用Tree-Sitter&#xff08;archlinux&#xff09; 如何在emacs上开始使用Tree-Sitter&#xff08;archlinux&#xff09; 在archlinux上使用比windows上不知道要方便多少倍&#xff01; $ sudo pacman -S emacs $ sudo pacman -S tree-sitter这里…...

FL Studio2024最新中文版有哪些其新功能特点?

除了之前提到的特点外&#xff0c;FL Studio 21还有以下一些值得注意的特点&#xff1a; 高效的音频处理&#xff1a;FL Studio 21具备高效的音频处理能力&#xff0c;能够实时处理多轨道音频&#xff0c;提供低延迟的音频播放和录制&#xff0c;确保音乐制作过程中的流畅性和实…...

Oracle的学习心得和知识总结(三十二)|Oracle数据库数据库回放功能之论文四翻译及学习

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《Oracle Database SQL Language Reference》 2、参考书籍&#xff1a;《PostgreSQL中文手册》 3、EDB Postgres Advanced Server User Gui…...

系统架构27 - 软件架构设计(6)

基于架构的软件开发方法 基于架构的软件开发方法&#xff08;ABSD&#xff09;概述概念与术语开发模型体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构的演化 基于架构的软件开发方法&#xff08;ABSD&#xff09; 基于体系结构的软件设计 (Architec…...

STM32 cubemx配置DMA+空闲中断接收不定长数据

文章目录 前言一、串口空闲中断二、DMA空闲中断接收不定长数据实现思路三、STM32Cubemx配置DMA空闲中断接收不定长数据四、代码编写总结 前言 本篇文章给大家讲解一下DMA串口空闲中断接收串口不定长数据&#xff0c;之前我们也是讲解过串口接收不定长数据的&#xff0c;那么本…...

Pycharm配置运行selenium教程

一、下载chrome浏览器和同版本的chromedriver chrome测试版版本120.0.6099.109 链接&#xff1a;https://pan.baidu.com/s/1pvFqL0WN8OkqPmURAs83kg?pwdvtsh 提取码&#xff1a;vtsh chromedriver版本120.0.6099.109 链接&#xff1a;https://pan.baidu.com/s/16fWWkrlD5C3J…...

银河麒麟V10开机后黑屏解决方法

情况描述&#xff1a; 单位的国产化电脑采用银河麒麟V10系统&#xff0c;在使用了近两个月时间后&#xff0c;开机到加载桌面那一步无法加载图形化桌面。 原理讲解 Linux本是纯命令行形式的系统&#xff0c;银河麒麟基于Linux中的Ubuntu LTS内核开发&#xff0c;其图形化的品牌…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...