为什么要学习 Linux

程序员不断改变我们的世界,直到有一天程序有了意识,能够脱离母体而存在,学习linux的我们或许有。。。

有人说:windows是漂亮的,Linux是智慧的、透明的。

全球TOP500超级计算机排行榜中99%都是linux内核。

任何手持智能终端设备就连电子表的底层都是Linux

你或许会认为Windows更为易用,Linux操作起来很慢,Linux入门曲线陡峭,其实当我们学会一些命令之后,一个命令所完成的事,Windows中需要几次步骤才能完成。

基于命令行,执行速度快,工作效率高

Linux系统遵循GPL协议,属于开源软件,你能用任意姿势获取源代码,修改源码,学习源码,而且Linux有自己的开源社区,能在上面开拓视野,接触许多科学前沿的东西。

结构:

    计算机的组成

    虚拟机的原理

    CPU平台

    操作系统基础

    操作系统的分类


冯诺依曼体系结构

    

冯·诺伊曼明确提出了计算机的体系架构,从1951年第一台电子计算机EDVAC开始,计算机经历了多次的更新换代,不管是最原始的、还是最先进的计算机,使用的仍然是冯·诺依曼最初设计的计算机体系结构。因此冯·诺依曼被世界公认为“计算机之父”,他设计的计算机系统结构,称为“冯诺依曼体系结构”。

 结构及框架

运算器:用于完成各种算术运算、逻辑运算和数据传送等数据加工处理。

控制器:用于控制程序的执行,是计算机的大脑。运算器和控制器组成计算机的中央处理器(CPU)。控制器根据存放在存储器中的指令序列(程序)进行工作,并由一个程序计数器控制指令的执行。控制器控制计算器各部件的协调。

存储器:用于临时存放程序和数据,运算器运算结果,保存的位置。例如:内存。程序和数据以二进制代码形式不加区别地存放在存储器中,存放位置由地址确定。

输入设备:用于将数据或程序输入到计算机中,例如:鼠标、键盘。

输出设备:将数据或程序的处理结果输出至指定设备,例如:显示器、打印机。

总线的组成

数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus),也统称为系统总线。

DB 用于数据交换的总线

AB 用来传送地址的总线,地址总线的位数决定了CPU可直接寻址的内存空间大小,一般说来,若地址总线为n位,则可寻址空间为2^n字节。

CB 传送控制信号和时序信号。有的是微处理器送往存储器和I/O接口电路,也有是其它部件反馈给CPU的,控制总线的传送方向由具体控制信号而定,(信息)一般是双向的,控制总线的位数要根据系统的实际控制需要而定。实际上控制总线的具体情况主要取决于CPU。

前端总线(FSB)是将CPU连接到北桥芯片的总线,前端总线(FSB)频率(即总线频率)是直接影响CPU与内存直接数据交换速度。

缓存

cpu 4GHZ 内存 1600/1800MHZ,(单位换算:1GHZ=1000MHZ)内存大约1.56GHZ,CPU的速度远远超过内存的速度,由短板理论最终的速度取决于内存的速度。

缓存以CPU频率工作,价格高,所以很小。

主要意义:

时间局部性  当某个数据被访问过一次之后,过不了多久时间就会被再一次访问。缓存对此数据缓存

空间局部性 CPU在某一时刻需要某个数据,那么很可能下一步就需要其附近的数据;缓存将对附近的资源缓存

硬盘

    固态硬盘

在不同的分区的读取速度一致

机械硬盘

盘片(disk):硬盘中承载数据存储的介质。两面读写

磁头(head):通过磁性原理读取磁性介质上数据的部件。

磁道(tracle):当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。

扇区(sector):磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区。硬盘的读写以扇区为基本单位

分区:由外向内按柱面划分,外道长:固定角速度,单位时间内划动的距离越长

C在外圈,单位时间内,读取的数据越多

D在较内圈,单位时间内,读取的数据越少

虚拟机的原理

虚拟机的框架:

vmware程序:虚拟出多个虚拟的计算机(CPU+内存+硬盘)

虚拟CPU

切割CPU时间片

cpu将时间片切割,使各个程序从表面上看是同时进行的。在微观上:每几个毫秒思考一件事,时间用完如果进程仍在执行,就记录进程的状态,连续运行后面的进程。

内存虚拟:有限内存切割后,分配给不同程序使用

线性地址空间:假设每个程序有4G内存可用,实际只有自己占据的大小

进程地址空间: 将内存上不连续的内存页在逻辑上映射为一段连续的空间

进程工作

将程序运行为一个进程

发起syscall,保留现场

内核完成工作后恢复现场

程序的结构结构

I/O设备虚拟:模拟器实现:动态分配大小

操作系统的基础

CPU: 晶体管 10-20nm 45nm工艺 门电路 逻辑运算/算术、逻辑运算,芯片、多个针脚,每个针脚有不同的功能、完成不同的运算。调用针脚即可完成运算,调用CPU针脚完成运算:机器语言

CPU针脚的功能即为CPU的指令,CPU多个指令叫指令集

指令的分类:普通指令、特权指令

普通指令:普通用户仅能在环3上运行,如果要用到环0的指令,就需要向内核申请,即为发起系统调用

特权指令:仅管理员可运行的指令,用于管理功能。

CPU常见平台

IBM(power)

SUN (ultrasparc)--> Oracle

惠普 (alpha)(安腾)dec-康白-惠普

Intel (x86,X86_64) 向下兼容

AMD (amd64)

ARM Intel只设计,不生产。三星,高通生产

Andorid (linux)

IOS (UNIX)

摩托摩拉 (手持 m68k,服务器 m68k nommu)

苹果,IBM,摩托摩拉 (powerpc,早期的强悍的CPU)

天河二号:大堆CPU拼凑而成

面向硬件写程序所用的语言

程序员写程序时,调用CPU针脚完成一些功能。

机器语言:二进制指令,用01代码调用CPU针脚,过于底层。

汇编语言:"不同的芯片生产商",提供一个接口,微码编程语言。简化程序员的工作量, add 可以转换为01代码

高级语言:用C,C++所写的源程序,只需要在不同的CPU平台之上编译为汇编语言对应的目标代码再经过转换为对应平台可理解的二进制指令

低级和高级语言所写的程序的区别

低级语言:汇编语言所写的操作系统,在系统移植时,较为困难。计算机容易理解的语言,运行起来的性能更好

高级语言:c,c++,所写的系统,忽略底层硬件的差异。计算机不易理解的语言,运行起来性能差,需要经过编译、汇编、链接等步骤才能运行。

为什么出现操作系统

用汇编语言所写的程序,难于移植,用高级语言仅解决了跨平台移植的问题,

面临的诸多问题:

1、CPU只有一颗,某时刻,只能运行做一件事。早期的批处理、脱机批处理、.... 消耗巨大财力、物力,却只能用到不到1/4的CPU时钟周期。

2、简化写程序的人的负担,为了写程序更加高效。程序员在硬件上写程序,对硬件功能的调用和硬件的驱动,在硬件上写一个qq music程序,需要驱动声卡,调用声卡发声

3、写程序的内存分配。程序是加载至内存中,才能使用,内存中程序如何占用?如果分配不适当,内存覆盖可能发生。


操作系统的功能

协调进程在CPU上工作,达到不浪费CPU时钟周期为目的。

统一驱动硬件,管理硬件,将一个个硬件功能抽象为更少的系统调用,便于程序员调用、写程序更为简洁。

硬件驱动:硬件工作起来

进程管理:CPU时间片切割和CPU的计算能力分配给不同的程序

内存管理:将有限的内存资源分配给多个同时运行的程序

网络管理:与其他主机通过网络通信

安全管理

写程序面向的对象和语言

用抽象化的思维

硬件:机器语言、汇编语言、高级语言,考虑CPU平台,内存分配,硬件驱动等诸多问题

系统调用: 高级语言,system call 将底层硬件功能抽象为syscall,保证syscall少,库也比较底层

库调用: 高级语言,系统调用虽少,但还是比较底层,直接将Syscall封装为一个个具体的功能。

用具象化的思维

面向硬件:给你的是"麦种",要想吃馒头,经过的步骤: 翻地、播种、浇水、施肥、收割、磨面、做包子、蒸馒头。

面向系统调用:给你的是面粉,

面向库调用: 给你你的是馒头


越高层,写程序越容易,选择更少样。

越低层,写程序越难,选择更多样。

注意:用高级语言、调用库,写出的程序为源码程序(源程序)

程序运行前的步骤

源码程序--> 编译 --> 汇编 --> 二进制指令(能调用对应CPU平台的针脚,不同系统有不同的格式)

二进制指令如何运行

由操作系统分配资源,让程序占据CPU时间片和内存资源

指令:被操作系统调度至CPU上,二进制指令能调用CPU上的某个指令(针脚),完成某些普通功能

用户接口

跟操作系统交互的程序,称之为"用户接口":指挥其他程序的运行

windows: 桌面

Linux: UI

GUI:Graphic User Interface,程序:Gnome,XFCE,KDE

CLI: Command Line Interface,程序: sh,csh,ksh,zsh,bash

在不同的系统之上写的程序(源语序)

ABI Application Binary Interface:  源码制作成二进制的格式(可执行文件的格式),运行接口,应用二进制格式。终端用户面向的接口。

API Application Program Interface:  写程序面向的对象,应用编程接口,程序员面对的接口

ABI不能兼容:

不同操作系统上的程序,制作成二进制后,不能兼容,(Windows EXE,MSI. Linux ELF)

API不能兼容:

写程序面向的对象不同,不同的操作系统提供的systemcall,libcall接口不同。一个系统上写的程序,不能在另一个系统之上编译~~~ (正如,不同的CPU芯片厂商提供不同的微码编程接口一样)

API兼容:

写程序面向的对象不同,但是提供的Systemcall,libcall接口能够兼容(底层针脚不同,但是经过操作系统抽象硬件功能为兼容的接口,所写的程序在源码级别兼容,这就是遵循'POSIX'规范。一个系统上写的程序,能在另一个系统之上编译~~~,编译后只能在对应平台运行,不能跨平台运行,ABI不同。


操作系统的定义:

广义:windows系统,我们所指的是用户接口(windows桌面、Linux bash)和内核

狭义:内核

操作系统的分类:

Solaris (sun) Ultrasparc

Windows  (bill gates) x86

AIX (IBM) power

HP-UX (HP) alpha

Unix (ken) m68k

Linux (linus) 80386,....

IOS (jobs)

转载于:https://blog.51cto.com/sonlich/1951699

谢烟客-----计算机基础相关推荐

  1. 计算机基础知识掌握欠缺,《计算机基础知识》实验教学改革探讨.pdf

    <计算机基础知识>实验教学改革探讨.pdf Science& TechnologyVision 科 技 视 界 科技 探·索·争鸣 计<算机基础知识>实验教学改革探讨 ...

  2. 计算机wrod初级考试题及答案,计算机基础知识+Word基础知识+Excel基础知识试题答案解析.doc...

    文档介绍: 计算机基础知识+ Word基础知识+ Excel基础知识 第一部分 一.单项选择题 1.世界上第一台电子数字计算机取名为(    ). A.UNIVAC    B.EDSAC    C.E ...

  3. java 前端基础知识_【计算机·知识】关于前端的计算机基础知识

    原标题:[计算机·知识]关于前端的计算机基础知识 作为一个刚刚入门的程序猿,你是否对专业知识有足够的了解?今天新闻君带你走进前端的世界. 前端的语言接触起来相对于后端的语言要容易不少,但前端的语言也有 ...

  4. 第一代电子计算机诞生的国家是( ),计算机基础知识习题.doc

    计算机基础知识习题.doc (2页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机基础知识题计算机的诞生:第一台电子计算机是1946 ...

  5. 华南理工计算机基础知识题,华南理工_计算机应用基础_随堂练习答案(2017年)

    华南理工_计算机应用基础_随堂练习答案(2017年) (18页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 . . . .华南理工-计算 ...

  6. 华南理工网络计算机基础知识,2019年华南理工大学网络教育计算机基础随堂练习第一章...

    2019年华南理工大学网络教育计算机基础随堂练习第一章 (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 11.90 积分 第一章 计算机基础知识·第 ...

  7. 关于计算机网络传输介质 下列叙述正确的是,《计算机基础》习题1-7

    4. 算法的基本结构中包括( ) A.顺序结构 B.选择结构 C.循环结构 D.逻辑结构 5.关于Excel图表的数据源,下列叙述不正确的是( ) A. 可以修改图表的数据源 B. 图表的数据源必须是 ...

  8. B站收藏6.1w+!这门课拯救你薄弱的计算机基础

    作者 |  Rocky0429 来源 |  Python空间 大家好,我是 Rocky0429,一个对计算机基础一无所知的蒟蒻... 作为一个所谓的计算机科班出身的人来说,特别难为情的是自己的计算机基 ...

  9. 计算机基础-计算机硬件

    一 为何要学习计算机基础 python是编程语言,即python是语言 语言有英语.法语.葡萄牙语等,但凡是语言,都是用来沟通的介质. 程序员编程的本质就是让计算机去工作,而编程语言就是程序员与计算机 ...

  10. 计算机基础知识_2020年河北省高职单招计算机基础知识和实践技能培训

    本考纲是根据教育部2014年4月中华人民共和国教育部<中等职业学校专业教学标准(试行)>(教职成厅函[2014]11号)颁布的<中等职业学校计算机应用专业教学标准>.<中 ...

最新文章

  1. 在C/C++代码中使用SSE等指令集的指令(1)介绍
  2. 【opencv学习】【模板匹配】
  3. Kaggle新赛:自动检测赛场上的头盔撞击事件
  4. CactiEZ的使用
  5. 微课|中学生可以这样学Python(例5.1):生成不重复的随机数
  6. 类型转为数字_JavaScript自动数据类型的转换
  7. python 连接MYSQL数据库(入门帖)
  8. asp.net页生命周期
  9. [推荐]网店代销的卖家,你的宝贝名称修改了吗?
  10. Linux内核学习路线 ,应从入门到深入,学内核就来零声教育
  11. 实测realme手机丢失定位功能
  12. 国产手机 不只是老罗一张嘴
  13. win7中如何设置默认打印机
  14. 证明:串联谐振回路中电容与电感两端电压的模值相等,且等于外加电压的Q倍
  15. git 移除项目版本控制_Git - 关于版本控制
  16. 面试官如何考察你的思维方式?学会这个思维方式面试很简单!
  17. windows 使用Nemo踩坑记录,no model named “nemo”
  18. uni-app接入高德地图SDK实现定位用户城市
  19. 仙人掌之歌——投石问路(1)
  20. 求知讲堂python+人工智能 99天完整版 学完可就业+某某教程Python 100例————作业(持续更新)

热门文章

  1. 如何清空各种浏览器缓存
  2. c程序设计语言第五单元,一年级语文下册第五单元教案
  3. Cannot find entry: /target/m2e-wtp/web-resources
  4. vue ajax请求结束再次执行查询方法,Vue.js 监控v-for循环渲染完成后再执行方法
  5. 属于计算机与网络技术在医学中应用的是,计算机网络技术在医学论文写作与投稿中的应用...
  6. 火龙果(redpitaya)开发板常用接口C语言开发指南(一)——环境配置(持续更新中)
  7. SpringSecurity 密码加密
  8. php file get contents 总是超时,file_get_contents超时问题及解决方案
  9. c语言程序中a表示什么区别,C语言中if(!a)表示什么意思?
  10. 计算机机械硬盘寿命,机械硬盘的寿命