计算机科学学习记录(中)——现在

操作系统(钢铁侠的贾维斯)

        以前的工作,假如花费的时间90%是计算机花费的,10%是人工操作花费的。

        那么现在花费的时间大概,20%是计算机花费的,80%人工和I/0设备操作花费的。

        还记得吗,我们创造计算机是为了计算服务,以前是计算机落后,我们发展计算机,现在是人们操作计算机的方式落后,所以我们需要发展人们操作和计算机的方式,而这,便是操作系统的诞生。       


        OS:操作系统(英文要自己搜哦(*^_^*))

        创造操作系统的目的就是为大家操作计算机提供遍历,这是最根本的。

        换成书面语言:解决了我们要考虑设备不同造成的影响,现在这些工作是操作系统的了,我们不用管代码跟设备匹不匹配,交给你了OS。(*^_^*)

        本质上也是一段程序,但是特殊点在于,它还可以控制硬件资源,这段程序就像是开天地的盘古,有了它,才有了后面程序的启动和运行。

        有了操作系统,我们之前只能一次给计算机一个程序运行,现在我们可以让他更自动化,更类似于把填充下一个程序也交给了程序运行。


        操作系统是一门需要深造的学科,他给了很多种巧妙地方式来减少我们人和设备的操作浪费的算力{电量也算O(∩_∩)O}(CPU)。这么说吧,CPU和I/O设备是一个公司的一对搭档,负责一起工作,A做完了准备给B,这个时候A是空闲的。但是这对搭档工作不止一个,这个时候我们要给A继续分配任务,而不是等着B干完,A才能继续行动。        很久之前,我们的操作更像是A得等着B干完,才能恢复神智,继续工作一样。

        其中的关键便是

        调度

        调度的存在,让我们把一些工作几乎可以看成是同时进行的。

        而是否真正同时,或者同时间段,我们分为了并发和并行。

        但是调度在让一些工作同时,并发或者并行的时候,需要给程序分配对应的地址块,毕竟干活得给程序空间。     

分配

  不连续的内存块:在分配中,地址可不是我们想象的很合认知的一整块一整块,它的分配可能是这里一点那里一点,零零碎碎。麻烦!!

我们人类看不懂,也不想看。

        所以~我们可以把地址虚拟化,我们至少看着是一整块,至于真实的那些 凌乱的分配,交给操作系统吧,我们创造OS就是干这个的。

        现在我们获得了虚拟内存

      虚拟内存

        像我们想象的那样美好,和谐 整体的内存块,从0开始到一个看起来很合理的数。

        这样的技术存在,让我们可以随意安排内存的大小,(动态内存分配

        把程序们分配对应的地址也有一个好处:他们只能搞乱自己范围内的东西,不会打乱别的程序。这便是内存保护。-也可以防病毒哦(*^_^*)


      操作系统们

        我们知道了OS可以更好的管理相关的资源

        后面根据OS对用户的管理,对特殊要求的数据的管理,对别的各种因素的管理,我们给这些操作系统起了不同的名字。

        我们来介绍一种比较有代表性的OS:UNIX

        我们已经说了,OS也是一段程序,是程序就会出错,体量大也会增加出错概率。所以我们设计了很多用来出错之后进行恢复的代码,但是这会更加的繁琐。毕竟多了那么多的工作量。哪里有千日防贼的道理,在历史上,这种设计不利于赚钱(卖不出去)所以G了,之后诞生了UNIX

我们不提失败者,因为历史上的成功者够多了,脑子记不过来。

UNIX:分为内核,和不是内核。(其实就是重要的和不重要的分开

        所以我们开摆:出错了,我们搞个函数“panic(恐慌)”,来吓吓我们的内核。这叫做Kernel panic(内核恐惧)。

        听起来玄乎,其实就是运行不下去,给你屏幕上搞个警告。

        兄弟该重启了~~~

        我要多嘴一句:程序和os本质是一样的,但是由于OS必须要跟其他程序互动,所以不能避免被错误的程序带崩溃,大家熟知的就是:蓝屏

        不过现在好多了,OS一直在发展。


内存和存储器

        内存断电基本G(这里我没把ROM放进去,这种只读的东西不要管了,以后还会见到的),但是存储器不受这一点影响。        

        以前存储信息用纸卡、震动和电信号互相转化的一个封闭性的液体盒子(但是由于电速和震动传递速度的差异,一次只能传递1Bit的信号,我们如果想要112位的Bit,就要等啊等)所以又叫做循环存储器(但是我们想要更方便一点的,等待就是浪费生命和电费(*^_^*))、中间还有很多种存储出现。

        解决等待

        电磁感应,磁极有两种,刚好对应1和0,他们的改变只需要通电就好,电路问题交给物理学家,咱们要干点更酷的。

        和RAM的诞生类似,我们把小磁芯片矩阵排列,把排列之后的再放在一块。就能获得一块可以存储很多东西的板子,好像这种存东西的都是拼积木,小的拼大,这就是磁芯存储器(一般是手工编织哦O(∩_∩)O)。        在磁芯存储器出现之前是当时的1美元1Bit,出现之后是1美分1Bit。一张现在的照片5MB左右,约为4000万Bit,你愿意40万美元拍张照片吗?如果愿意,请包养我

 另外现在的成本是0.0000000005美分/Bit。

        准备好了吗,存储要加速了!

        磁带——磁鼓——磁盘。原理是一样的,电磁感应,不知道你还记不记得来拒去留O(∩_∩)O

        磁盘叠在一起,机器(类似唱片机)找数据是要时间的,得找到道路对不,所以叫

        寻道时间(seek time)

        内存们现在是金字塔型排布,好的在上面,价值则是倒过来的,这样平均一下,时间和成本就比较合理了。

        变种:软盘:方便携带、光盘:并非电磁感应,而是光的折射。

        光和电~你是电,你是光,你是唯一的神话~~

向固态前进

        集成电路(IC)正在代替之前的材料,固态硬盘(SSD)因为台湾的英语里把固体电容称为Solid而得名。SSD靠闪存技术来制造,闪存是一种非易失性存储器,即断电数据也不会丢失。因为闪存不像RAM(随机存取存储器)一样以字节为单位改写数据,因此不能取代RAM是一种电子式可清除程序化只读存储器的形式。不懂,有兴趣可以搜一搜告诉笔者。


文件系统

       我们处理好了那么多数据,可是对数据的分类还没有成熟体系。

        那么好的存储结构,非常适合我们把一堆有联系的数据存在一起——files(文件)

        随机排列数据没问题,但是按格式明显好。什么,你问我哪里好?emm,至少宇宙的熵增变得在我们的心理上慢了一丢丢,至于正确吗?(*^_^*),请去物理学科。

        按文件的排列格式,我们诞生了文件格式。

        如果你想的话,你也可以创造一种文件格式,但何必重复发明轮子,当然如果你能手搓歼星舰,当我没说,非常欢迎。

        关于数据的数据叫做元数据        

        存在于文件开头,所以也叫文件头(header)。一般来说他们解释了数据的用处和含义,比如说数据是10001000,分4位的话,可能是8*8像素的宽和高。

        加色三原色:红绿蓝,像素

        PS:三原色(三基色):靠的是光的组合,拼接出的光本身。本质是光的加法

                 颜料的(三基色、三原色):靠的是颜料对于不同波长的光的吸收,呈现出的色彩。本质是光的减法。

        对于我们工作而言,知道文件的格式是非常重要的:

        这意味着我们选择把底层的1和0按什么方式进行解释,即把英语翻译成汉语还是葡萄牙语,日语。否则大概率是乱码或者其他错误。

        与操作系统的虚拟内存不同,我们需要知道存储器中多个文件的具体位置,这样才能知道文件头和文件尾,才能知道如何找到合适的对数据解释方法。(这是对文件的数据存放来说)其实目录文件跟虚拟内存在某种程度上才是一样的作用,但是由于多了元数据的存在,我们把本应该模仿虚拟内存在物理地址上的虚拟处理(补:虚拟内存偏向于底层的那一部分),放到了文件目录上,文件目录没有虚拟,用的地址是真实的,但是我们不用管地址,我们只需要点几下文件图标就万事大吉了。

        虚拟内存告诉我们用就完了,别管那么多。但是文件位置我们要知道,否则我们不能对数据进行正确处理。


        目录文件

        这个文件一般在最开头,地址0,存有其他所有文件的名字

        就像指针的存在一样,我们不能简单把文件们连着排在一起,为了方便数据的增删改查。所以我们给文件的存储方式分为一块一块,不够用了,放到一个空的块里面。但是这样的方式重复使用次数过多:文件会变成碎片,这里一块哪里一块,(可恶,我想你了虚拟内存,可是我知道你不适合这里。)

        那么我们只能整理碎片了:文件会自己跑来跑去找到正确的位置,至于实现,请自己搜索。

        至于为什么不按照虚拟内存那样的结构,请看标题:我们OS把数据调出来进行使用,但是文件本身自带使用说明,不说明没用。

 我们在删除目录文件存储的信息之后,这个文件本身数据不会被擦去,只是等待着下一个文件来覆盖他的位置:请快点想一些残酷的比喻        

        这也是数据恢复的基础        如果不想恢复,那么改一下删除方式,直接删除数据,或者下点别的东西,把内存撑爆。 但是最简单的是,磁铁刷一刷,电流过一过。(*^_^*)

        前面的全是处于同一平面的文件解释

        我们现在用的其实是一层套一层。(可以当矩阵想一想)

        这个实现有很多种,我们讲一种,添一些元数据

        对于,文件不同目录之间的转移,改一下目录文件,一个里面添一条,一个少一条,文件仍然存在在原来的地方。

         说结论:目录文件类似于虚拟内存机器知道的那部分具体的物理地址;

但是对于我们看

        内存是虚拟的连续的,文件是排列好的,整齐规划连续的。

        唯一的特殊点在于目录文件(我们可以看到的真实信息);虚拟存储(真实信息不让我们看,让机器看,当然你想找方法也可以,但是我目前没发现用处。)

现在我们解决了这么多东西,该面向用户了


        压缩

        东西造出来了,时候提高效率了。

        通过对于不同文件数据的某些特征:比如说某些数值的重复出现,进项相应的技术来缩小文件的大小。然后传输过来之后,进行逆向解压。emm目前这些是我看到字眼想出来的。我真棒,当然 你也是。(*^_^*)其实这有些类似于数据层面的编程,但是由于对象是数据,我们还是叫编码吧。关于编码请看编码和编程不是一回事

无损压缩

        有一个是消除冗余:游程编码

        越是厉害的压缩方法,在数据上更是需要更好的处理,就更复杂,或者说更精美。

DFTBA(暂时叫做字典编码吧)(别忘了变得酷)【知道全称请告诉我谢谢】:通过霍夫曼树来对文件数据生成一个字典,因为是数,所以可以分为1和0的分叉,每一个路径都会产生不同的字典,

路径唯一,天才之举。

希望你能意识到上面这张图有多么牛。但是字典(上面那个方方的)也要保留,所以就变成了。

现在的无损压缩方法一般都是这两种方法组合使用。


某种情况下我们也需要有损压缩:去掉人类不需要的

        例如音频里的超声波,我们人类听不到的。我现在在想提取音频人的声音很可能就是使用了这种技术。调整精度,来选择性的消除某些数据。早期电话为了让更多人同时用,消除了很多声音,所以听起来不像人很正常。

        删掉人们无法感知的数据的方法叫做

感知编码

        模型来自心理物理学领域:我滴乖,所以想用计算机一个人干大事几乎是不可能的,因为人类是有极限的。大概就是根据人类各种器官的缺陷和能力范围,来对数据进行相对应的处理。比如盲人,我们可能要把声音处理的更加的丰富一些。

感知编码:马赛克(你好)

差别只在像素块上。

而对视频来说,有一个新的概念:时间冗余(有的时候视频里的东西一直没变不是吗?(*^_^*))对于视频的压缩,利用了帧与帧之间的相似性。

老实说压缩也是一门大花活,旋转,补丁等等都干上了,只要人们觉得没问题,随你改,我觉得如果善于欺骗和伪装,压缩对你来说一定是有先天优势。

压缩太过了

回到童年了。

这也解释了为什么B站压码率,传数据要钱的!


接下来是我们重头戏

人机交互——命令行界面

        我们先来进行一定量的逻辑思考,想一想我们最近思考的一个问题,计算机方面的问题我们几乎快说完了(特指计算机各组件之间的交互),那么关于人机交互(人类怎么更好的使用计算机,比如说数据操作 )。

        我们之前给计算机指令是要一点点用纸带传上去的,慢死了,所以说我们要发展人机交互的方式。也就是解决输入输出问题。

关于输入,键盘最开始打字速度不是那么快,后来改进了打字方式,十指打字法——后来都搞上盲打了。

        我们用电传打字机(电信号)我们用接口连上计算机,然后输入指令,按下回车之后,计算机会给我们“回复”,值得特别注意的是,以前的传输和答复是在纸上表示的,而这就叫做命令行界面。        

        后来随着处理器和内存及其他的硬件的发展,虚拟电传打字机(我们称之为终端),用上了屏幕显示。

        现在我们虽然有了屏幕,但是仍然是打字活比较多。


人机交互——图形显示

        阴极管射线的发明,让我们可以在屏幕上显示图像,我们有两种方式

       第一种 引导电子束在屏幕上描绘出想要的图案(矢量扫描)

        第二种一行一行的来从上到下,从左到右不断重复。(光栅扫描)

想没想起来家里的那些老电视?O(∩_∩)O

        早期的计算机不使用大量像素(太占内存了)而是存符号。

说一点,每一个字符占8位不等于每一个字符占一个字节。(八位可能是不同地方的八位)

但是你可以说大小是一个字节。



显卡

从内存读取字符,转换为图形

        为了解决屏幕上图形的显示,我们不可能给每一个东西都搞成数据存储,做一个特定的结构体,所以我们把一切都变成了线条,这样字符也不存在了,兄弟们本质一样都是线条了。

        把屏幕分为坐标系,然后用矢量指令来控制进行图片透明度的控制,等等,你想要添粗细,就多搞一些新的位进行存储就好了。这样屏幕就是画布,我们已经可以做动画了。

        计算机辅助设计(CAD)——或许你在别的专业听到过这个词(*^_^*)

光笔,通过改变刷新率,让计算机知道笔在这里。

也是我们今天ipod pencil 的祖宗。

后来内存和处理器发展起来,到了现在,我们开始使用像素了。


我们知道显卡是用来将数据转换为图像的,那么他上面也有一个RAM,我们叫做帧缓冲区,VRAM。

关于这个,我插入

        CPU和GPU——显卡上有GPU,计算机有CPU。

人机交互——图形化界面(GUI)

        为了让人们好上手,我们给这些屏幕按照现实生活中的桌面的某些特性,给屏幕设计了现在的这些元素。——桌面隐喻

        我们通过自己对PC的操作,我们可以很明显的感知到,GUI不是传统的自上而下的编程,而是事件触发编程。比如点击,播放,等等等等。当然这些事件还是基本的按顺序。或者说,是两者的混合,但是相比于传统多了这个事件触发编程。

        比如我们点了关机,接下来计算机会自己进行一系列的函数操作。

关于计算机的发展:

        美国的冷战和消费主义促使计算机发展,军方,政府,消费者们协同作用下。

        一般都是军用淘汰转民用。

      个人计算机革命:请自行观看。

我们都说一个产物的失败,大概率是商业上的失败,但是一些对未来的畅想的演示,他们会启发后来者。比如说1968年就有了视频通话,但是商业化失败了。

技术太过于领先时代,导致的就是成本太高,成本太高,老百姓用不起,就像是阳春白雪一样,过于的优秀,会让他失败。优秀是指能力,失败来自于他的消耗。

        计算机公司之间相互竞争,有的是争夺这个销售额,有的是争夺的整个市场,也就是增添用户的转换成本,让你习惯了我们公司的东西。

        Microsoft BOB的失败,其中一个原因是,我们用计算机,根本目的是处理工作好用,与其无关的都是我们不需要的,过量比喻会导致用户厌烦。

        我们应该读一读教员的书。


 3D图形

        图形算法把3d的图像拍到2d的屏幕上面,这就是图形算法(3d投影)

        之后我们对投影下来的这些点,进行线框渲染(也就是把这些点进行合理的连线)

完了(干到透视上了,我一直想学画画的/(ㄒoㄒ)/~~)

但是现实的透视,跟我们计算机上的透视实现是不一样的,计算机上的透视是依靠函数们实现的。

我们需要清楚的记住一个点,在图形学之中,三角形被称为多边形,它是组成复杂图案的基本单位

对于这些多边形的集合,我们叫做网格。网格越密集,东西越是光滑,但是计算量也会变得更加的多。网格数量太多,帧率就会下降的非常明显。所以我们会设计相应的算法来进行解决(简化或者优化)。

之所以选择三角形,是因为三角形三个点能定义一个平面。然后面动成体。

因为涉及到三角形,所以相应的算法设计是要考虑数学性质的。(有意愿当算法工程师的兄弟们要有福了,数学大门为你敞开,我学算法是因为觉得很酷,当然数学也是很酷/(ㄒoㄒ)/~~)

第一步的渲染基本上因为像素太少所以会显得特别的粗糙,但是当像素点多起来的时候,我们看图像就比较的光滑了。                                                   或者说还有一种,抗锯齿。图形边缘的像素搞成渐变色。                        还记得我们之前说的压缩吗,我觉得这两个东西可以结合起来运用,都是利用了人们感官的缺陷,或者说感官的特点更加的合适。

对3d世界的渲染是按照画家算法进行排序的,所谓画家算法,就是按照画家对类似问题的解决来设计的。我们想成为计算机科学家应该偷师好多人哈哈哈。(像画画一样由远到近。)

另一种叫做深度缓冲(假定一个摄像头,假定网格距离无限大,然后具体查数据来用小的数据来替换大的数据,这样先给所有网格距离确定,然后再填充相应的色彩。)(特殊:当距离一样的时候,结果往往不可知,因为计算机会舍弃浮点数的一部分,具体表现为下图(右边)

出现屏幕某些点在闪烁。这个时候你就知道了这两个东西其实是在一块放着的。

深度缓冲与画家算法比较好记忆的区别是(画家算法要给每一个网格都涂上色,如果3各图形有一块区域是公共的,那么这块区域要涂色整整3次。)

深度缓冲,看深度来慢慢处理(其实挺直白的不是吗)

3d游戏为了优化,可能会剔除背面的东西,反正玩家只能看到东西的一面,这样能节省空间。

这就是为什么CF卡箱子里是空空的。甚至能够遁地。

3D光线

        对于平面,我们找一根法线

因为这些网格在表面,所以我们叫做表面法线。

这样根据法线和一个虚假的光源(如果你知道Blender等软件,那你会很清晰)

之间的关系,我们可以更加清晰地给(平面着色)。

这只是一种最基础地着色方法。还有更多优秀的着色方法比如这样。

3d纹理

        最简单的:纹理映射

从图片对应地方取平均颜色

3d渲染

基本上这些渲染地过程是这样的

扫描线填充,抗锯齿,光照,纹理化。

这需要大量的计算,所以电脑一定要好,不然可以烤煎饼。(如果你要买新电脑,可以把这一段给父母看)

也有加快的办法,比如特定的硬件GPU,并行处理这些渲染进程,说实话,把他们当成程序就好了。CPU和GPU买个好显卡。

物理学家们追求极致的简介,计算机科学家们应该追求的是均衡(我自己定义的)



计算机网络

        以太网(目前最成功的计算机网络连接方式)

计算机监听电缆,出现自己的mac地址之后 才开始进行数据的处理

载波侦听多路访问(CSMA)

多个电脑共享一个传输媒介:叫做载波侦听多路访问

以太网的传输媒介是铜线,但是WiFi的传输媒介是空气

载体传输数据的速度叫做带宽

共享也会带来一些麻烦,当有很多台设备共享一个传输媒介的时候,很容易造成堵塞和等待。

这些冲突我们采用分割冲突域的方式来进行处理。

交换机(机房的服务器不也是这样放置的吗(*^_^*))

互联网也是这样一点点组成的。

节点过多(交换机过多,导致的线路可能不止一条)

我们诞生路由的概念

倒是有“电路交换”的链接方式,但是我们不做过多阐释。(保密的地方倒是用的比较多,比如军队)

目前我们主要运用的是报文交换(类似于快递,有不同的节点,如果出问题了就换另一条路)

信息在路由中跳转的次数叫做 “跳数”——可以判断路由问题(看是否达到我们设置的跳数限制(异常的高))

但是即使是报文交换也有大问题,就是某些文件太大了,所以我们拆成小数据包进行发送。(跟现在的快递很像不是(*^_^*)),每一个数据包上面都有目标地址,路由器知道怎么发送。

这个报文具体格式由“互联网协议”规定,简称:IP

路由器控制各个路由器之间荷载的均衡,(动态平衡,有点类似于交通系统的样子)

这是IP之上的协议

将数据包们通过路由器灵活发送的“分组交换”时至今日已经有成熟的使用,去中心化让他变得安全(这些方法的诞生很有意思——核威胁)

总结:路由器是一个个小的快递节点,我们通过不同的协议来进行数据包们的传送。


互联网(电线、信号、交换机、数据包、路由器、协议组成)

        中间粗两头细小的通天河(我看一念永恒学到的,感觉挺适合),LAN到WAN到主干到WAN到LAN。

我们来聊聊协议(本质上是给要传输的数据加上我们要使用的元数据,根据这些元数据的的作用来进行协议的建造)

TCP跟UDP的主要区分在于,UDP可能不是很在乎数据的完整性,而TCP一定要保证数据传输准确无误。

互联网有个特殊服务把域名和IP地址一一对应(DNS(域名系统))

关于指数退避指数退避

分层,让我们能够各司其职。


万维网(与互联网不是一个东西)建立在互联网之上

互联网毕竟是最基础的数据传输网络。

万维网的基本单位是一个页面。有内容也有超链接,本页面就是一个页面。哈哈哈

超链接形成的互联网络就是万维网。超链接也可以叫超文本(我们看到的不都是文本吗,不是文本就是图片,那就是另一个名字。)

为了网页之间能够互相连接,所以我们为每一个网页创造了一个唯一的地址:URL

HTTP超文本传输协议(为了区分什么是文本什么是超链接,我们在此基础上创造了,超文本标记语言HTML-两者之间的区别仅仅是为了区分哪个是超链接,这就是本质)

dns找到并且建立连接,然后跟网络服务器进行之后的操作。

我们可以想象到万维网后期肯定也有一个字典一样的说明包含其他超链接,但是这太麻烦了,所以我们创造了搜索引擎。


搜索引擎

包含三个部分,(爬虫,一个跟着链接到处跑的软件,看到一个就加进自己的列表)

第二部分一个不断扩张的索引,记录经过的页面上都有什么词语出现

最后一个是查询索引时使用的算法(单从查询次数出现来索引容易被坑,所以我们可以看别的网站有没有指向他,有个专家参考,也是偷懒(我们学计算机的就是为了偷懒而生的,前提是保证安全高效——均衡))



我们要声明,我们大环境需要网络中立性,讨厌莫名其妙的节流(故意给少的带宽和低的优先级)

但是对于个人,其实有的时候要灵活取舍,哈哈哈,这就是另一个领域了。

至于你怎么看,才是最重要的。

那么现在我们已经建立了基本的计算机科学与技术的相关框架。

关于未来和网络安全这些在最后一篇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值