计算机基础3 | 学习笔记

简介: 快速学习计算机基础3。

开发者学堂课程【计算机基础与Linux入门计算机基础3】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/583/detail/8059


计算机基础3


内容介绍

一、计算机基础


一、计算机基础

API 就是用程序开发者要调用一些库来实现一些功能,这个调用的库有一些是有随着系统自身带的一些库,这些库是特别基础的,新的一些库,那么这些库它提供了应用程序和系统之间进行通讯的连接接口,这个连接接口就叫系统调用将系统调用,你可以把这个系统调用想象成一个窗口,你要去银行取钱,通过柜台取钱把你的请求填写一些取款单等等提交给窗口,通过窗口然后工作人员跑到金库里去拿数据,他就拿钱,显而易见用户不可能自己去金库拿钱,中间需要通过一个接口,这个接口叫系统调用,可以把它想象成是用户和银行窗口,这个窗口负责用户和这个银行之间进行交换信息的。

内核上面安装有硬件驱动,然后进而访问硬件,然后用户不能直接访问硬件,必须通过系统调用,然后通过系统调用间接的去让内核帮助,用户程序要去访问内核,它可以直接去连接接口,但是通过这个系统调用去连接内核,有点过于底层,过于繁琐,开发人员不会直接去调用系统内核它里面的系统调用,而是通过库的方式去调用,它本身也是系统调用,只不过这些库它封装的更为易懂,更为方便,所以通常来讲的用户程序去访问程序访问系统一般来讲是这样的访问方式,应用程序,调入库,调用 library,而这个 library 再去调用系统,调用系统然后系统调用再和内核进行通讯。应该是这样一个过程。

用户空间和内核空间这是2个比较专业的术语,用户空间和内核空间,用户空间你可以把它想象成你去银行取钱,你就在一块来回可以走动,你不能跑到银行内部,那么这个内核空间就相当于银行内部的工作办公区,所以可以想象用户的应用程序它只能活动在一定的空间中,而内核它的工作范围是在他自己的空间里,叫内核空间,而这个空间可以想象成内存的不同区域。

一般说你的笔记本8G 的内存有一部分空间是给内核分配的,有一部分空间是给用程序分配的,他的空间是不一样的。

用户空间他的权限是有限的,它没有访问硬件的能力,通过内核间接的访问硬件的,保证系统的安全稳定性。程序不能直接访问硬件,必须通过内核访问。

涉及到硬件的访问,它是要切换到内核空间来进行访问,但是刚才这个工作在用户空间还没做完,要把刚才的工作暂时保留下来。频繁的切换比较耗资源。

减少次数这样的话就可以间接的提升性能。str=www.com 这实际上是一个变量赋值,相当于把 str 这样的一个变量赋值给它一个字符串,那将来 str 代表着 www.com上的一个长长的字符串,给他起个名叫 str ,这个东西不需要特权,不需要访问太多的底层硬件内容,所以他直接就可以发生在用户空间。

X 等于 X 100,这个东西也是一个赋值语句,相当于 X 的值在原来的基础上增加100,它也可以工作在用户空间就可以,但是现在我把 str 通过 write 这个函数又回到了用户空间,所以这时候会发现用户空间内核空间在这切换,一会工作在用户空间,一会工作在内核空间。

事实上很多命令确实是有可能涉及到用户空间和内控空间的操作的,例如,这有一个命令叫 Sleep 一一这个命令它本身也不干,就是休眠1秒钟可以来观察 Sleep 命令它在用户空间花了多长时间,在那个时候空间花了多长时间,这有统计。大部分时间都在那切换了,要是把磁盘里写东西你会发现用户空间内核空间不能会占比较多的空间。

要作为一个合格的运维,不懂开发可以说是很难做好的,开发它相对来讲对计算机理解的要更加深入,开发语言编程语言实际上大体分分成这几类:

第一类叫低级语言,第二类中级语言,第三类高级语言,最低级的就是机器语言。

现在目前来讲基本上不存在这种真正的机器语言的开发人员,现在来讲,更多的用稍微高级点的语言,越高级那就和人类越贴近,C语言它可以用来对系统应用,例如他一种驱动程序做开发是比较适合的,但是相对来讲它还是偏底,如果做电商,这种一般不用 C 语言,用高级语言,这些语言都是用单词,就是基本上英文句子,带有一定的语法要求的这样写的。

要运行就不能说直接这个文本的运行了,最终的机器语言01012进制的才能执行,所以这个地方需要有一个转换的过程,这个转换一般来讲叫编译的过程,就是把文本给他编译成二进制,最终才能在计算机里运行,那做开发写的是文本,但是要把它转化成计算机能理解的二进制机器语言才能执行,在目前来讲服气领域三大流行的超系统,第一个 Windows,第2Linux,第3Unix,那 Unix 现在已经没落了,早期的时候它是由1969symptoms 这个人开发出来的,分成了两大流派在后期发展的过程中分成了两大流派, 1个是贝尔实验室推出的 set 这样的一个流派,这叫正宗流派,还有一个是这个属于伯克利大学研发出来的另外一个 Unix 游戏流派,小型机逐渐没落了,现在都用PC的服务器。2017年后, Windows 的市场是不萎缩的,当然这个市场已经没法再萎缩了,实际上它的市场已经训练很已经大打折扣了,用 Unix 越来越少,邮政储蓄银行他现在采用系统不是用另一个系统,早期全是小型机。

Uni 发展历史 Unix Linux 是密切相关的,可以这样讲,Linux 就是 Unix 一种变动,就是他的一种分支。unix 的诞生是在1969年,大概夏天的时候,他把生产中用到的一个他开发研发出来的系统做了一个精简简化,诞生了,到现在中间发展了很多年所以它的版本更迭也特别多有很多种变种很多种变种,说到 Unix 的起源不得不提一下这个兼容分时系统,早期的电脑太贵了一般的企业,小企业用不起,那一般来讲采用的方式就是共享,大家共用了一台电脑,这样的话节约成本,但是我的电脑就一个,同一时间是不是只能处理一个电脑发过来的请求,这个用户坐在这台电脑这个显示器键盘上发一个指令过来这边能处理他,但是如果同一时间有2个用户都发指令过来,那是不是轮流处理,轮流处理这个叫分时系统,实际上这个分时系统简单的说就是把 CPU 的工作时间给它切片,假设1秒钟对于 CPU 来讲速度很快,所以他1秒可以干很多事,假设他1秒钟他能做100件事,100个工作,那其中他可以这么做,他把这11秒钟,这100件事,假设你看我这接了4个电脑,那我就可以25个工作切割成100份,然后100份分别针对不同的电脑来给他们提供响应,这就是分片机制,就像一个人速度很快,如果他速度很快的话你感觉他同时在做好多事,贝尔收到了一个商业的一个项目,他和麻省理工和其公司共同研发一个大的一个系统叫 Money,这个 Money 叫多路信息计算系统,他想实现一个主机并发连接300个终端,300个终端也就说白了就是一个主机接300个终端,300个终端这个项目由于过于复杂,在中间的开发过程中遇到很多困难,所以在69年的时候贝尔就退出了,也就是说经过5年这个研发,这个项目并没有真的成功,是个相对比较失败的项目,贝尔实验室就从这个项目中退出了,退出之后,这个项目并没有就停顿下来,贝尔实验室参与这个项目的人,他参与了一个项目的研发,后来69年推出以后他在上面曾经为了娱乐,开发了一个小游戏叫 Star travel,星际旅行,这样的一个小游戏,结果因为这个项目退出了,他就开发出来一个简化版的系统就是说的 Unix 的起源,然后来这个时候应用非常好用,在各个大学里面就开始流传,所以在69年之后,这个软件以开源的方式就流传在各个研究所,各个大学。

其中在七几年的时候科技大学也在它的基础之上做了2次开发,形成了伯克利的版本,那当然后来贝尔实验室一看用这个软件做的越来越好,大概10年后也就是79年了都快10年了他发现这个软件已经非常稳定了,而且有些生产环境中可以稳定运行可以在生产中商业环境中使用了,他觉得有商业这种利用价值了,他就发了版权说明了,说你要用这个 Unix 系统你要交高额的使用费,尤其对大学生不提供源码了,收费了,因此这个 Unix 79年开始之后就涉及到一个版权的纠纷,因为伯克利大学也开发了自己的版本,那贝尔实验室也开发了自己的一个叫 CN5 的这样一个版本,就是两大流派就开始分裂了,而且伯克利大学涉嫌侵权,不过并没有影响Unix 的发展,安德鲁自己闷头写一个系统,纯粹就是教学用的,教大家怎么去开发一个系统研发的,有一个叫金庸的项目,当时很多很多高手为了商业利益,逐渐就都加入到一些商业公司,所以导致一些软件都开始收费,在91年的时候,利纳斯芬兰的大学生开发了自己的一个软件发布到互联网上去了,很多热心人就参与到这一点,在它的基础上不断地丰富。

Linux 本身它只是一个超系统的内核,它是由经营项目的各种软件加这个内核组合起来的。

Linux 目前主流的 Linux 系统,像安卓系统实际上也是 Linux 内核的,安卓手机里面用的安卓他也是 Linux 内核的,事实上利司他负责这个团队名下有一个团队负责研发的内核,目前来讲这个官方网站可以看到它的最新版本内核版本是4.18.8这是他的最新版。现在学习的Linux版本,目前市面上流行的版本有三大流派,红帽分支的这个是主流的目前用的比较多的,大部分的互联网公司都用 CentOS,个别有些公司用乌班图,但乌班图个人感觉它更适合做开发用,说明书告诉大家怎么去一步一步地从头构建一个属于你自己的例子,而不是拿别人的光盘装出来的别人的,从头源码编译全都是二文本文件,然后源码编译逐步的构建。

红帽公司的 logo 有版权,这个版本是社区版是免费的可以看一下官方网站。白色版本简单的说就是功能比较新,都是最新技术。可以这样讲,发展的比较成熟了,它就会迁移到企业。

商业版本要付费的,你要用的话要花钱的,虽然他源码是公开的,还有共享软件,共享软件是源码不公开,但是你免费用的区别就在这,共享软件往往都是一些,试用版本,例如有一个软件功能很强,那么有些你要用它最全的功能你要花钱买,但是你要用那些技术与功能不花钱也可以就共享版本就行了,这就是开源软件这些相关的概念。那为了保证开源软件的永久性,例如你开发了一个开发开源软件是免费的大家免费用结果有人说不定拿你的源代码拿过来,然后在它的基础上做了2次开发,添加了一点点小功能它就花钱卖了,所以有一些开源许可证来保证开源软件的这种流传下去这样的一个衍生,所以它有很多的开源许可证,那大计算的话有上百种。GPLA 叫公用公共通用许可。防火墙很多都是基于粒子内核开发出来的,而另一个内核是基于 GP 要许可开发出来的,换句话说你要拿我的源代码,在它的基础上做了2次开发,理论上是不是要公布自己的源代码,都是漏洞很容易分析,当然也许采取了一些其他措施规避。将来你要自己做个软件你要开源,就要选一个许可,你像大家以后做软件必不可少的要去访问进网站那这个HIT hub 你登陆以后发布新软件,它就让你选你是要基于哪一个区域法律许可来发布你的软件。

Linux 的哲学思想,准确的说这是 Unix 哲学,一切皆文件,这是第一句话,一切皆文件包括硬件在内,例如你在 Linux 里配置硬盘,它表现为一个文件,你配置光驱,再拿一个文件,他都表现一个文件一点。Linux 很多情况下是在字符界面工作的,所以看到的都是一个文件一个文件,在另一个里面有好多好多小工具,功能很单一,只做一件事,但是要想做好了,需要把它们连接起来完成复杂任务才行,而这个连接实际上就是所谓的编脚本,编程序。图形界面看到的现象有可能是不真实的,这个简单例子,在很多年前有一次配IP地址,当时还是在NT系统里面,现在也一样,大家都知道IP地址就是在网卡属性里面配,结果配完了以后点完确定了,结果发现网络始终是不通的,这个地址配的明明没有问题,老是有问题,在 Windows 里有个命令行, IP config,一看地址才发现网关没出来,就网关是空的,不如 Linux 的命令行界面可靠。注册表是一个文本文件,它是二进制的文件,如果注册表出了故障,机器都起不来了,起不来大不了拿光盘启动, Windows 就比较麻烦,所以相对来讲 Windows 的可控制性还是差,Windows 源代码不公开。而 Linux 可以从头构建一个,出了问题也容易解决,所以另外相对来讲更加稳定更加可靠。所以相对来讲 Linux 更容易深入学习。

相关文章
|
3月前
计算机基础100题含答案
计算机基础100题含答案
|
8月前
|
存储 缓存 数据安全/隐私保护
计算机基础
计算机基础
91 0
|
存储 机器学习/深度学习 编解码
大学计算机基础 知识点总结
一/ 计算机的发展、类型及其应用领域。 1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。 2. 第一台计算机:ENIAC,美国,1946年 宾夕法尼亚大学 冯·诺依曼 “存储程序”和“程序控制
489 0
|
存储 Oracle NoSQL
计算机基础知识(3)
计算机基础知识(3)
|
缓存 IDE Linux
(2)计算机基础知识
(2)计算机基础知识
|
移动开发 前端开发 HTML5
计算机基础知识(基础入门小白专属)五
计算机基础知识(基础入门小白专属)五
|
域名解析 网络协议 网络安全
计算机基础知识(基础入门小白专属)三
计算机基础知识(基础入门小白专属)三
|
KVM 虚拟化
计算机基础知识(基础入门小白专属)二
计算机基础知识(基础入门小白专属)二
|
Linux 芯片 Windows
计算机基础知识(基础入门小白专属)九
计算机基础知识(基础入门小白专属)九
|
Linux 容器
计算机基础知识(基础入门小白专属)八
计算机基础知识(基础入门小白专属)八