wordpress地址/百度上做优化
一:冯诺依曼体系结构
什么叫做体系结构???
计算机组成 / 芯片架构
输入单元:键盘、话筒、摄像头、usb、鼠标、磁盘(ROM)/ssd、网卡、显卡
存储器:内存(RAM)
中央处理器(CPU):寄存器、各种级别的缓存(cache)
输出单元:显示器、喇叭、打印机、磁盘、网卡、显卡
计算机里面的几乎所有的设备,都有数据存储的能力!!!
CPU这个设备,他的数据处理速度是非常快的,然后是内存,然后是各种外设(磁盘)。
程序在运行之前,必须先加载到内存?为什莫?
程序 = 代码 + 数据
最终都要CPU来执行处理,CPU需要先读取到这些代码和数据,而CPU只和内存有“数据(二进制层面)”层面的交互,但是形成的 exe,本质就是一个文件,只能在磁盘(外设)中保存。所以必须要在程序运行之前先加载到内存中。
二:操作系统
1.什么是操作系统?
操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持等,使计算机系统所有资源最大限度地发挥作用,提供了各种形式的用户界面,使用户有一个好的工作环境,为其它软件的开发提供必要的服务和相应的接口。
操作系统是一款软件,进行软硬件资源管理的软件。
2.为什么要有操作系统?
操作系统将软硬件资源管理好(手段),
给用户提供良好的(稳定,高效,安全)使用环境(目的)。
如何管理呢???
什么是真正的管理者?(做决策/做执行)做决策,如何做正确的决策 ---> 根据完善的数据
示例:在学校中,管理者是校长,但与学生接触最多的是辅导员。
校长(做决策) 辅导员(做执行) 学生(被管理)
校长为了更方便的管理学生,可以制作一个execl表格,将学生的各项信息填入表格中,当数据发生变动时,在表格中进行修改,但这种方法很不方便 ---> 创建结构体,存放学生的各项信息,并将其各个节点连接起来组成链表,校长就可以直接对链表进行增删查改,不需要每天盯着表格操作。 管理的本质不是管人,而是管理数据。上述的描述,本质上就是一个建模的过程。
先描述,再组织 任何管理工作都可以经过这六个字进行计算机建模!!!
下图是,操作系统对软硬件:
操作系统并不直接和硬件打交道,那么如何将其管理好?是通过(硬件相对的)数据管理的,通过驱动程序拿到数据。
操作系统管理:核心是:进程管理、内存管理、文件/IO管理、驱动管理。
3.系统调用和库函数的概念
系统调用:操作系统不相信任何用户,但又不得不向我们提供服务,在开发角度,操作系统对外会表现为一个整体,但是会暴露自己的部分接口,供上层开发使用,这部分由操作系统提供的接口
库函数:系统调用在使用上,功能比较基础,对用户的要求相对也比较高,所以,有心的开发者可以对部分系统调用进行适度封装,从而形成库,有了库,就很有利于更上层用户或者开发者进行二次开发。
三:进程
1.基本概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础。
进程 = 可执行程序 + 内核数据结构(PCB)
2.描述进程
<1>: 如何描述进程---PCB
进程信息被放在一个叫做进程控制的块的数据结构中,可以理解为进程属性的集合。
这个数据结构叫做PCB --- Linux操作系统下的PCB是 task_struct。
<2>:task_struct 内容分类
标示符: 描述本进程的唯一标示符,用来区别其他进程。
状态: 任务状态,退出代码,退出信号等。
优先级: 相对于其他进程的优先级。
程序计数器: 程序中即将被执行的下一条指令的地址。
内存指针: 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据: 进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
I/O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
其他信息
<3>:组织进程
3.通过系统调用获取进程标识符
进程 id (PID)
父进程 id (PPID)
示例:
#include<stdio.h>
#include<unistd.h>
int main()
{printf("pid: %d\n",getpid());printf("ppid: %d\n",getppid());return 0;
}
运行结果为:
在命令行中,父进程一般为命令行解释器(bash)。
4.通过系统调用创建进程 --- fork 初识
fork 函数:
返回值:有两个返回值,一个返回父进程的子进程的 id,还有一个是子进程的 id (子进程 id 返回0说明,子进程创建成功,反之不成功)。
示例:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{printf("pid:%d ,ppid: %d\n",getpid(),getppid());int ret = fork();printf("pid: %d ,ppid: %d ,ret: %d\n",getpid(),getppid(),ret);sleep(1);return 0;
}
代码运行结果为:
我们发现,一个 printf( ) 函数打印了两次,而且两次打印的 ret 值不同,为什么会出现 这种现象?
只有父进程执行 fork 之前的代码,fork 之后,父子进程都要执行后续的代码,即 printf 函数既要被父进程执行一次,又要被子进程执行一次,所以在此处,会出现打印两次的情况。
<1>:为什么 fork 之后会有两个返回值?
在 fork()函数体内,函数返回 id 前已经完成了子进程的创建,既然完成了子进程的创建,那么子进程就也会去到运行队列中,等待CPU调度,父子进程共享代码,数据各自开空间。由于返回值id是数据,所以虽然id的变量名相同,但是内存地址不同,所以返回的id是不同的。
<2>:fork 两个返回值,为什么给父进程返回子进程的 pid ,给子进程返回0?
父进程返回子进程 id , 父进程可以直接找到子进程,子进程返回 0 表示创建进程成功。
<3>:fork 之后,父子进程的运行顺序是什么样的?
创建完成子进程,只是一个开始,创建完成子进程之后,系统的其他进程,父进程和子进程,接下来都要被调度执行,当父子进程的PCB都被创建并在队列中排队的时候,哪一个进程的PCB先被选择调度,那个进程就先运行!即父子进程运行的顺序是不确定的,它由操作系统自主决定,由各自的PCB中的调度信息(时间片、优先级等)+ 调度器的算法共同决定。
fork() 之后一般要 if 分流:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{pid_t id = fork();if(id == 0){//子进程printf("我是子进程,pid:%d ,ppid: %d\n",getpid(),getppid());}else{printf("我是父进程,pid:%d ,ppid: %d\n",getpid(),getppid());}sleep(1);return 0;
}
代码运行结果为:
四:进程状态
- 运行状态(R) 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。
- 睡眠状态(S)意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠。
- 磁盘休眠状态(D) 有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个状态的进程通常会等待IO的结束。
- 停止状态(T)可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。
- 死亡状态(X)这个状态只是一个返回状态,你不会在任务列表里看到这个状态。
1.进程状态的查看
查看进程状态的命令:
ps aux / ps axj
运行结果为:
2.僵尸进程
概念:进程退出了,但是还没有被父进程/操作系统(OS)读取,操作系统(OS)必须维护这个退出进程的PCB结构,此时,该进程的状态为僵尸状态(Z)。等到父进程或者操作系统(OS)读取之后,PCB的状态先被改成死亡状态(X)状态,才会被释放。
如果一个僵尸进程的父进程没有回收该进程,那么该进程的PCB将一直存在,如果我们不及时回收,会存在内存泄露的风险。
示例:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{pid_t id = fork();if(id == 0){//子进程int i = 5;while(i){printf("我是子进程,pid:%d ,ppid: %d ,i: %d\n",getpid(),getppid(),i);sleep(1);i--;}}else{while(1){printf("我是父进程,pid:%d ,ppid: %d\n",getpid(),getppid());sleep(1);} }return 0;
}
在此处我们使用以下内容检测进程的运行状态:
while :;do ps aux | grep mycode | grep -v grep;sleep 1;echo "---------------------";done
运行结果为:
3.孤儿进程
概念:子进程的父进程先退出,此时子进程就称为孤儿进程,孤儿进程要被1号init进程领养,由init进行回收。
示例:
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<stdlib.h>
int main()
{pid_t id = fork();if(id == 0){//子进程printf("我是子进程,pid:%d ,ppid: %d\n",getpid(),getppid());sleep(10);}else{printf("我是父进程,pid:%d ,ppid: %d\n",getpid(),getppid());sleep(3);exit(0);}return 0;
}
运行结果为:
4.进程优先级
基本概念:
- cpu资源分配的先后顺序,就是进程的优先权。
- 优先权高的进程有优先执行的权利,配置进程优先权对多任务环境的linux很实用,可以改善操作系统性能。
- 还可以把进程运行在指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统的整体性能。
查看系统进程:
top
运行结果为:
通过上述图片,我们可以从中看到以下几个内容:
UID:代表执行者的身份
PID:代表这个进程的信号
PPID:代表这个进程是由那个进程发展衍生而来的,既父进程
PRI:代表这个进程可被执行的优先级,值越小越先被执行
NI:代表这个进程的 nice 值
Linux进程的优先级数值范围为 60-99 (40个)
Linux中默认进程的优先级为 80
Linux支持动态优先级调整,那么如何调整?
nice值:进程优先级的修正数据
pri(新) = pri(旧) + nice 且 pri(旧) =80
进入top后按“r”–>输入进程PID–>输入 nice 值
nice 调整的最小值为-20,nice 调整的最大值为19。
nice 值超出最大最小调整范围时,超过部分按最大/最小计算。
为什么要把优先级限定在一定的范围内???
操作系统(OS)调度的时候,较为均衡的让每一个进程都要得到调度,这样比较公平。
如果不加以限制,可能会导致优先级较低的进程,长时间得不到CPU资源 --- 进程饥饿。
5. 其他概念
- 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
- 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
- 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
- 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。
相关文章:

Linux进程的概念
一:冯诺依曼体系结构 什么叫做体系结构??? 计算机组成 / 芯片架构 输入单元:键盘、话筒、摄像头、usb、鼠标、磁盘(ROM)/ssd、网卡、显卡 存储器:内存(RAM)…...

XML教学视频(黑马程序员精讲 XML 知识!)笔记
第一章XML概述 1.1认识XML XML数据格式: 不是html但又和html有点相似 XML数据格式最主要的功能就是数据传输(一个服务器到另一个服务器,一个网站到另一个网站)配置文件、储存数据当做小型数据可使用、规范数据格式让数据具有结…...

自定义组件实现v-model
要使自定义的Vue组件支持v-model,需要实现一个名为value的prop和一个名为input的事件。在组件内部,将value prop 绑定到组件的内部状态,然后在对内部状态进行修改时触发input事件。 自定义UI组件 <template><input :value"va…...

【自动驾驶】Free space与Ray casting
文章目录 1 Free space是什么2 Ray casting是什么3 它俩啥关系4 TODO 1 Free space是什么 在自动驾驶领域,free space即可行驶区域,在结构化道路的十字路口/非结构化道路都有很大作用。 2 Ray casting是什么 ray casting是计算机视觉领域,…...

RHCE---正则表达式
文章目录 目录 文章目录 前言 一. 文本搜索工具 二.正则表达式 元字符 ^行首与$行尾 点(.) 与星号(*) 扩展正则 总结 前言 正则表达式是文本三剑客中及其重要的一环,称之为灵魂也不为过,到底什么是正则表达式呢,让我们一起来了解以下…...

3D RPG Course | Core 学习日记一:初识URP
前言 最近开始学习Unity中文课堂M_Studio(麦大)的3D RPG Course,学习一下3D RPG游戏核心功能的实现,第一课我们学习到的是地图场景的编辑,其中涉及到了URP渲染。 我们首先进入Unity资源商店把地图素材和人物素材导入好…...

Spring Cloud 之RabbitMQ的学习【详细】
服务通信 分布式系统通信两种方式: 直接远程调用(同步)借助第三方间接通信(异步) 同步通讯的问题 Feign就属于同步通讯。存在的如下问题 耦合度高,每次添加新的模块就要修改原有模块的代码性能下降&am…...

第五章 I/O管理 六、I/O核心子系统
目录 一、核心子系统 1、I/O调度 2、设备保护 二、假脱机技术 1、脱机: 2、假脱机(SPOOLing技术): 3、应用: 1.独占式设备: 2.共享设备: 4、共享打印机原理分析 三、总结 一、核心子系…...

winfrom窗体比例缩放
用于控件大小随窗体大小等比例缩放的C#代码。该代码可以在窗体重载中使用,以确保窗体中的控件在窗体大小改变时能够按比例缩放。 SetTag方法:该方法用于设置控件的Tag属性,以存储控件的宽度、高度、左边距、顶边距和字体大小等信息。SetCont…...

宇信科技:强势行业加速融入AIGC,同时做深做细
【科技明说 | 重磅专题】 大家可能没有想到,一向对外低调行事的宇信科技,在AIGC方面2023年就已经训练出了适配金融场景的垂直模型,并应用到了各产品线上,同时结合通用大模型预研了宇信金融系统编程大模型。宇信金融系…...

Google Play上的Android广告软件应用程序积累了200万次安装
大家好,今天我们要聊一聊Google Play上的一个热门话题——Android广告软件应用程序。最近,一些恶意应用程序在Google Play上累积了200万次的安装量,给用户推送了讨厌的广告,同时又隐藏了它们在受感染设备上的存在。 根据Doctor W…...

算法通关村第四关-黄金挑战栈的经典问题
括号匹配问题 描述 : 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有…...

前端开发必备技能!用简单CSS代码绘制三角形,提升用户体验
🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 ⭐ 专栏简介 📘 文章引言 一、前…...

想翻译pdf文档,试了几个工具对比:有阿里(完全免费,快,好用,质量高,不用注册登录)道最好(有限免费) 百度(有限免费)和谷歌完全免费(网不好)
文档翻释作为基础设施,工作必备。 阿里 (完全免费,快,好用,质量高,不用注册登录,无广告)我给满分 https://translate.alibaba.com/#core-translation 先选好语言。 Google(完全免…...

c# .net linux ImageSharp+FastDFS+Base64上传图片,压缩图片大小,图像处理dcoker中使用也可以
.net 以前是用System.Drawing来处理图片,但是在dcoker 、linux上用不了 微软官方推荐用 1、SkiaSharp 如果项目运行到docker里,需要NUGET安装SkiaSharp.NativeAssets.Linux.NoDependencies 注意:如果你同时引用SkiaSharp.NativeAssets.Li…...

Flutter FittedBox
🔥 英文单词FittedBox 🔥 Fitted 通过有道翻译如下 : Box 通过有道翻译如下 : 对 FittedBox 的理解 我们可以将 FittedBox 理解为合适的盒子,将其它布局放到FittedBox这样一个盒子中,从而实现 盒子里面的…...

亚信科技:发挥自我优势深入AIGC,并购整合高瞻远瞩致力未来路
【科技明说 | 重磅专题】 亚信科技在IT提供商领域中是一个低调的前行者,在全球通信及大型企业市场中扮演着重要的角色。对于近年来如火如荼AI方面的投入与研究,亚信科技是否也很重视呢? 事实上,是肯定的回答。 在我看…...

【设计模式】第17节:行为型模式之“解释器模式”
一、简介 解释器模式为某个语言定义它的语法(或者叫文法)表示,并定义一个解释器用来处理这个语法。 二、适用场景 领域特定语言复杂输入解释可扩展的语言结构 三、UML类图 四、案例 对输入的特定格式的打印语句进行解析并执行。 packag…...
各传输介质详细知识点
一.百兆网传输介质 快速以太网(802.3u) 100Base-T2 电缆:2对3类UTP 最大段长:100m 特性阻抗:100 100Base-T4 电缆:4对3类UTP 最大段长:100m 特点:8B/6T,NRZ编码 特性阻抗:1…...

历史随想随记
古往今来所有的王侯将相如不都成为人们茶余饭后的笑谈,一个人无论多么厉害,多么聪明,多么奸诈,多么有权势,他们都逃不出一个结局——死亡,我觉得这是人生最大的悲哀。看历史看的多了,就会发现这…...

ClickHouse Java多个参数的UDF编写
一、环境版本 环境版本docker clickhouse22.3.10.22 docker pull clickhouse/clickhouse-server:22.3.10.22二、XML配置 2.1 配置文件 # 创建udf配置文件 vim /etc/clickhouse-server/demo_function.xml<functions><function><type>executable</type&…...

RPA除了和OCR、NLP技术结合,还能和什么技术结合?
鉴于业内现在也经常把RPA称为数字员工,就虚拟一个人的形象来解答吧。 首先是头部,实现人的“听看说想”能力: 听:ASR(语音识别技术),主要用于听取和理解语音输入,让RPA能处理语音数…...

AssertionError: Torch not compiled with CUDA enabled
Pytorch和CUDA版本不兼容,运行python后(终端输入python回车)用以下代码测试 import torch print(torch.__version__) print(torch.cuda.is_available())返回False则说明目前的pytorch版本无法使用显卡,如下图所示 接着重装合适版…...

【Ubuntu 系统使用进入,自动进入base虚拟环境解决最全】
项目场景: 在Ubuntu上安装完anaconda后,发现每次打开终端后都会自动进入到base的虚拟环境中去,虽然在这些环境下使用问题不大,但一些软件的安装在虚拟环境下有影响。每次使用conda deactivate退出也很麻烦。 问题描述 安装玩之…...

C++项目——云备份-⑨-服务端与客户端功能联调
文章目录 专栏导读1.服务端源代码2.客户端源代码3.浏览器访问测试//listshow 4.上传文件测试5.文件下载测试 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师,阿里云专家博主&…...

Linux两条服务器实现相互免密登录
1.准备两台虚拟机,一台充当服务器端(server),一台充当客户端(client) 服务器端(server):192.168.75.139 客户端(client):192.168.75…...

华纳云Ubuntu环境怎么编译安装PHP和Nginx
在Ubuntu环境中编译安装PHP和Nginx需要进行一系列步骤。以下是安装PHP和Nginx的一般过程: 1. 更新系统: 首先,确保您的系统是最新的,运行以下命令更新软件包列表和已安装的软件包: sudo apt update sudo apt upgra…...

Ubuntu 23.10(Mantic Minotaur)正式发布,支持Linux 6.5和GNOME 45
导读Canonical 近日正式发布了 Ubuntu 23.10(Mantic Minotaur)操作系统,其中包含一些最新的 GNU/Linux 技术、改进的硬件支持以及许多其他变化。 Ubuntu 23.10 采用了最新的 Linux 6.5 内核系列,并为 Ubuntu 桌面和服务器增强了 z…...

Linux:KVM虚拟化
本章操作基于centos7系统 简介 KVM是Kernel Virtual Machine的简写,目前Redhat只支持在64位的Rhel5.4以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,在2008年被redhat公司收购并获得了一项hypervisor技术,不过redh…...

HTML标签,列表,表格相关
HTML标签的分类 HTML标签可以分为以下几类: 标题标签:用于定义网页的标题,分为h1、h2、h3、h4、h5和h6。 段落标签:用于定义文本的段落,常用的有p标签。 链接标签:用于定义链接,常用的有a标签…...