技术标签: 运维 linux 服务器 LINUX从入门到放弃
作者: @情话0.0
专栏:《Linux从入门到放弃》
个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!
在学习linux的过程中,有一个特别重要的知识点就是关于进程的学习,那么在学习进程之前,首先对硬件做一些了解,然后再学习软件,在软硬件都学完之后再取去了解进程的概念。
我们常见的计算机,如笔记本;或者我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。
输入设备和输出设备统称为外围设备,简称外设,它们的数据处理速度相对于内存来说是慢一点的,而CPU是整个结构中速度最快的。
我们都知道,计算机是从输入设备处采集数据,在CPU处完成处理工作,然后再将处理结果给到输出设备,那么我们不要这个内存可以不,当然可以。但是,外设的数据处理速度是特别慢的,而CPU的处理速度又特别的快,这就可以提到 “木桶原理” ,表达的意思就是这个桶能乘多少水不取决于最长的木板长度,而是最短的木板长度。也就表明了整个计算机的处理效率就以外设的处理效率为主的。
所以,这就需要内存来起到一个中间过渡的作用,缓解 “木桶原理” 带来的效率下降的问题。外设,内存,CPU它们三个之间的数据处理速度是不一致的,有一定的差距。但是内存有一个特点:可以临时存数据,并且速度还不慢,那么就可以在CPU处理A任务的时候,将外设中关于B任务的数据搬到内存当中,当A任务被处理完毕之后就可以直接从内存当中拿到B任务进行处理。因为有了内存的存在,可以对数据进行预加载,CPU以后在进行数据计算的时候不需要访问外设了,直接从内存中拿数据即可。
结论1: 在数据层面,一般CPU不和外设直接沟通而是直接只和内存打交道。
比如说:我们打开视频APP要看电视剧,首先要将这个客户端软件加载到内存中,然后这个软件就可以被CPU执行,然后我们就可以看到这个软件的客户端界面,当点击播放的时候它就从网络中将关于这个视频资源的数据先拿到内存中,再进行数据计算,比如该视频是收费的,在免费播放了五分钟之后就强制关闭了,或者在10分钟的时候加一段30s的广告等等。最终将计算结果给到内存然后再给到输出设备(显示器)。
你和你的朋友微信聊天,你发送一个干啥着呢?那么整个信息是如何在体系结构中流动的?(不考虑网络的情况,即发出去就可以收到)
结论2: 外设只和内存打交道(数据层面)
操作系统是一款进行软硬件资源管理的软件。
谈到管理,举个简单例子:比如在学校这样的场景下,有三种角色:校长,导员,学生,很明显学生是充当被管理者的角色,而管理者是谁呢?校长还是导员呢?按道理来说作为一个大学生来说,四年下来基本上见不到校长的面,那么导员应该是管理者,对不对呢?
在日常生活中,我们每一个人既是决策者也是执行者,比如:我今天中午要吃什么饭(决策),然后就去吃了(执行)。而作为管理者,大部分工作是拥有决策的能力,而非执行。
那么很明显校长是决策者,关于学校的一些指令都是校长下发的,而导员只是按照校长的指令行事。
职业 | 职能 |
---|---|
校长 | 决策 |
导员 | 决策并执行 |
学生 | 参与执行 |
注意:以下所有的场景都是在举例。
比如说在学校里面,一个学生基本上很难见到校长的面,但是为什么校长能把学生管理的如此之好,不管是每天在那间教室上课,在哪个宿舍睡觉,亦或是哪些学生挂科了等等。由此可以间接说明:作为管理者和被管理者,其实是不需要直接沟通的,当然沟通也是没什么问题的。
管理者和被管理者没有直接沟通,那么它们之间是如何管理的呢?
在学校里面校长和学生不直接沟通,但是校长他能够知道你名字是什么,电话号码是什么,学号是多少,专业是哪个,科目已经修了多少等等,亦或是在公司里你为这个公司这一年做了多少贡献,迟到或早退了多少次,加班了多长时间等等。
在上大学之前,你家长每天都照顾着你的一切,你早都不耐烦了,于是上了大学之后你感觉自己终于挣脱了束缚,但是假设说你家长可以知道你每天干了什么,他们就可以打电话问候你的一切,关心亦或是指责。
其实根据上面这几个例子就可以说明:管理的本质——管理者对被管理者的数据进行管理。
那么管理者是如何拿到被管理者的数据呢?根据学校的例子很清晰,通过导员(中间人)。
比如说,校长安排每个导员把自己所管理的每个学生的信息都统计起来发给他,因为校长要对所有人做管理,如果说要是将所有的信息都放在表格里,那就太复杂了,所以校长就按照结构体的形式(下例)将所有学生的信息都统计起来,再按照链表的方式将每个结构体对象链接起来。
假设某个学生成绩太差要将其退学,难道只让他离校就可以了吗?当然不行,还得在这样的学生链表中将这个学生对象剔除掉;或者学校又转来一个学生,同样也是在链表中将该学生的信息形成一个结构体对象并添在其中,总之来说,校长要对学生做管理,都是在该链表上操作。
struct stu
{
姓名,
年龄,
专业,
成绩,
电话,
struct stu* next;
]
总结:上面举的所有例子都是在对管理的动作进行建模(将具体的一些场景转化为计算机语言)。
先描述,再组织
那么在计算机中,校园中的三种角色对应的是什么呢?
校长——操作系统;导员——硬件驱动;学生——硬件(软件)
硬件驱动主要负责就是与硬件的交流沟通,拿到硬件的数据后交给操作系统做决策,然后在将决策后的结果交给驱动来执行。操作系统来做决策,驱动来执行。每一个硬件(键盘、鼠标、磁盘、网卡)基本对应一个硬件驱动。
操作系统对下通过管理好软硬件资源(手段),对上给用户提供良好(安全、高效、稳定、功能丰富等)的执行环境(目的)。
操作系统目的是为了给用户提供良好的服务,但是操作系统信任用户吗?
就拿银行的例子来讲,它有着一些底层的硬件设施:电脑、服务器;桌椅板凳;金库;员工宿舍。再往上看分别有不同的部门角色管理下面的设施。同时在银行里有着不同的员工给用户提供不同的服务,当然也有行长这样的角色。作为一个行长,他肯定要将整个银行系统合理的管理起来, 他不仅要把这些员工管理好(根据表现奖惩),而且也要管理好底层硬件设施,但是行长不可能亲自去管理那些硬件,而是就通过驱动这样的角色去管理。
因此,这也就说明了行长其实就是担当着操作系统这样的角色,即管理好下层硬件设施,也管理好每一位员工。行长和员工都是人,人可以管理硬件设施,也可以管理人。而操作系统是软件,它既管理软件,同时也管理硬件。
行长对下将员工和硬件管理的如此之好,目的就是为了对上给用户提供良好的服务。但是,银行它相信你吗?
很明显,你是信任银行的,要不然你不会去银行办业务,但是银行是不信任你的,在现实生活中你要存一万元,银行柜员不可能给你说你怎么怎么走到了金库把钱放到那里,然后出来填个表即可。对应的是操作系统给我们提供良好的服务,并不代表这操作系统会相信我们,反而操作系统不相信任何人,害怕群众中有坏人对自己造成伤害。就像是在银行里给你提供服务,但是为了保证自己(银行)的安全,它给用户提供窗口式的服务。
这也就说明了在计算机硬件体系结构中,用户是不可能直接进到操作系统里面对操作系统里面的内容数据进行访问和修改呢?当然不是。操作系统为了保护自己和给用户提供服务,于是将自己的特定功能以接口的方式给用户提供出来,而这些接口在操作系统层面被称为系统调用(操作系统设计的C函数)。
但是有时候操作系统调用接口使用成本特别高,因为一些操作你是得懂操作系统的。就一些大佬基于这些接口做了二次软件开发,于是就有了图形化界面、shell和工具集、部分指令。
以上就是在学习进程之前该了解的一些知识,主要明白操作系统管理的本质,而这个本质也是始终贯穿于Linux的整个学习。
文章浏览阅读1k次。1、HTML5 Web SQL 数据库 Web SQL 数据库 API 并不是 HTML5 规范的一部分,但是它是一个独立的规范,引入了一组使用 SQL 操作客户端数据库的 APIs。如果你是一个 Web 后端程序员,应该很容易理解 SQL 的操作。Web SQL 数据库可以在最新版的 Safari, Chrome 和 Opera 浏览器中工作。2、核心方法 以下是规范中定义的三个_方式准则的定义
文章浏览阅读4.1k次,点赞2次,收藏6次。spring Boot 中使用线程池异步执行多个定时任务在启动类中添加注解@EnableScheduling配置自定义线程池在启动类中添加注解@EnableScheduling第一步添加注解,这样才会使定时任务启动配置自定义线程池@Configurationpublic class ScheduleConfiguration implements SchedulingConfigurer..._springboot启动后自动开启多个线程程序
文章浏览阅读1.1k次。在项目的target文件夹下把之前"mvn clean package"生成的压缩包(我的是jar包)删掉重新执行"mvn clean package"再执行"mvn clean install"即可_mvn clean install有errors
文章浏览阅读974次。Navicat连接mysql数据库时,不断报1405错误,下面是针对这个的解决办法:MySQL服务器正在运行,停止它。如果是作为Windows服务运行的服务器,进入计算机管理--->服务和应用程序------>服务。如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。创建1个文本文件(此处命名为mysql-init.txt),并将下述命令置于单一行中:SET PASSW..._nvarchar链接不上数据库
文章浏览阅读2.2k次。Python的requests模块是一个常用的HTTP库,用于发送HTTP请求和处理响应。_python requests 参数
文章浏览阅读2.7w次,点赞7次,收藏50次。APT攻击APT攻击是近几年来出现的一种高级攻击,具有难检测、持续时间长和攻击目标明确等特征。本文中,整理了近年来比较典型的几个APT攻击,并其攻击过程做了分析(为了加深自己对APT攻击的理解和学习)Google极光攻击2010年的Google Aurora(极光)攻击是一个十分著名的APT攻击。Google的一名雇员点击即时消息中的一条恶意链接,引发了一系列事件导致这个搜_2010谷歌网络被极光黑客攻击
文章浏览阅读1.1k次。JS代码 /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { setTimeout( function(){ wx.showToast({ title: '黄菊华老师', }) },2000 ) },说明该代码只执行一次..._微信小程序 settimeout 向上层传值
文章浏览阅读48次。uploadify2.1.4如何能使按钮显示中文博客分类:uploadify网上关于这段话的搜索恐怕是太多了。方法多也试过了不知怎么,反正不行。最终自己想办法给解决了。当然首先还是要有fla源码。直接去管网就可以下载。[url]http://www.uploadify.com/wp-content/uploads/uploadify-v2.1.4...
文章浏览阅读9.6k次,点赞5次,收藏36次。戴尔服务器安装VMware ESXI6.7.0教程(U盘安装)一、前期准备1、下载镜像下载esxi6.7镜像:VMware-VMvisor-Installer-6.7.0-8169922.x86_64.iso这里推荐到戴尔官网下载,Baidu搜索“戴尔驱动下载”,选择进入官网,根据提示输入服务器型号搜索适用于该型号服务器的所有驱动下一步选择具体类型的驱动选择一项下载即可待下载完成后打开软碟通(UItraISO),在“文件”选项中打开刚才下载好的镜像文件然后选择启动_vmware-vcsa-all-6.7.0-8169922.iso
文章浏览阅读2k次。百度语音技术永久免费的语音自动转字幕介绍基于百度语音技术,识别率97%无时长限制,无文件大小限制永久免费,简单,易用,速度快支持中文,英文,粤语永久免费的语音转字幕网站: http://thinktothings.com视频介绍 https://www.bilibili.com/video/av42750807 ...
文章浏览阅读7.6k次,点赞2次,收藏9次。Instrumentation是一种直接修改程序二进制文件的方法。其可以用于程序的调试,优化,安全等等。对这个词一般的翻译是“插桩”,但这更多使用于软件测试领域。【找一些相关的例子】Dyninst可以动态或静态的修改程序的二进制代码。动态修改是在目标进程运行时插入代码(dynamic binary instrumentation)。静态修改则是直接向二进制文件插入代码(static b_dyninst
文章浏览阅读2.9k次。部署asp网站到云服务器 内容精选换一换通常情况下,需要结合客户的实际业务环境和具体需求进行业务改造评估,建议您进行服务咨询。这里仅描述一些通用的策略供您参考,主要分如下几方面进行考虑:业务迁移不管您的业务是否已经上线华为云,业务迁移的策略是一致的。建议您将时延敏感型,有快速批量就近部署需求的业务迁移至IEC;保留数据量大,且需要长期稳定运行的业务在中心云上。迁移方法请参见如何计算隔离独享计算资源..._nas asp网站