第一天内容:
1、上课环境准备
2、计算机及操作系统基础知识
3、计算机及操作系统基础知识2
4、linux系统安装及初步认识
一、写博客要求:5w1h (what,why,who,where,when,how) 条理清晰,合适编排,用户体验
二、计算机五大部件
CPU(运算器+控制器)、Memory(存储器)、I/O(输入、输出设备)
1、运算器
运算器是进行算术、逻辑运算的部件。
2、控制器
控制器是实现计算机各部分联系及程序自动执行的部件,其功能是从内存中依次取出命令,产生控制信号,向其他部件发出指 令,指挥整个运算过程。控制器是统一指挥、协调其他部件的中枢。
注:人们常把运算器和控制器二者制做在一起称为中央处理器,简称CPU。
3、存储器
存储器是存储信息的部件,分为内存、外存。内存在控制器的指挥下,与运算器、输入/输出设备交换信息。外存是为了弥内存 的不足而设置的,在控制器的控制下,它与内存成批交换数据。
注2:把运算器、控制器、内存三者合称为主机。
4、输入设备
输入设备是把数据和程序转换成电信号,并把电信号送入内存的部件。如:键盘、鼠标、扫描仪、麦克、游戏操作杆等。
5、输出设备
输出设备是把计算机处理的结果送到主机外的部件。如:显示器、打印机、音箱等
三、虚拟机创建
cpu虚拟化:分时系统,时间片实现;内存虚拟化:分段占用;I/O设备虚拟化;网卡虚拟化;
创建虚拟机 指定cpu、memory、i/o(disk、ethercard)的过程,安装OS,磁盘映像文件(disk image file)分 稀疏格式(分配120G占用物理空间20K)和非稀疏格式
四、计算机工作原理
1、二进制、十进制转换
2、计算机最小存储单位是bit(位) 8bit=1Byte(字节) 1024Byte=1KB 1024KB=1MB
3、cpu内部有一个寄存器(用于短暂存储数据),内存RAM(易失性存储器)
五、liunx的发展史
1964年GE(美国通用电气), BELL(贝尔实验室), MIT(麻省理工学院) 三家公司联合研发了 Mutlics(分时操作系统),之后GE、BELL公司离开。bell一个程序员ken为了运行Space Travell,用汇编语言写了一个Unics平台,之后ken和同事Dennis Ritche(C语言之父)为了更多平台使用unics。就使用高级语言c重写了unics变化为Unix,由于BSD和BELL商业化unix系统,价格昂贵,荷兰一教授自己编写了一个小的操作系统Minix,麻省理工大学Stallman组织了GNU: Gnu is Not Unix自由软件开源协会,GNU运动制定了一个规则GPL(General Public License)。之后荷兰赫尔辛基大学的linus仿照minix、借鉴unix自己写了一个liunx内核。1991年linus的liunx正式公布给世人,通过世人和黑客的共同努力,linux的第一个版本终于在1994年发布并迅速流行。1994年成立的Redhat公司开始包装发行linux。linux只是一个核心更多的外围软件和程序都是GNU提供的,这样GNU/Linux诞生了。
当时IBM的PC机为X86架构(Inter生产的CPU)并不能运行unix,只能安装非常昂贵的CTSS系统,这时西雅图一家公司Microsoft(盖茨)购买了艾伦朋友开发的一个能跑在X86架构的系统DOS(Disk Operation System);后来和IBM合作,IBM 每台PC机购买Microsoft DOS系统的Linsence.
六、liunx的编译安装
大家都知道liunx是用C语言编写的,在互联网公开源代码,PC机能识别的是二进制格式!那么问题来了,我们要想在PC机上安装linux系统,该如何把源代码转换成计算机识别的二进制格式???这就涉及编译器的概念,编译器编译的过程就是将源代码转换成对应硬件平台的二进制代码!在编译器上编译完成源代码测试通过后放在目标计算机上运行,这样就安装系统了(不同硬件平台编译完不能使用);GNU的各种软件也是需要编译的不同平台不能使用,难道我们装不同硬件平台的计算机都要去编译源代码和各种GNU软件吗?
众多的linux发行商就是为我们编译各种平台的系统,如红帽从互联网下载内核和各种应用程序源代码,编译并测试这些程序,再在外围添加安装程序封装成ISO的光盘在公网发布成为我们便捷使用的发行版;安装程序提供我们分区、时间、语言等设置。
七、linux发行商 (linux timeline)
Slackware (S.U.S.E是基于slackwarede 二次发行版)
Debian (ubuntu是基于Debian的二次发行版)
Redhat (Centos 二次发行版) redhat9--->Fedora
RHEL3 4 5 6
Centos (Community ENTerprise OS)
八、API: Application Programming interface 应用开发接口
syscall系统调用接口
libcall库调用接口
ABI: Application Binary interface 应用二进制接口
开发编译、运行是2个阶段,开发编译时移植需要API相同,编译后运行需要ABI相同。。因为不同的操作系统提供的api不同所以不同操作系统上的程序是不能通用的。如果他们都遵循POSIX API那他们提供的api相同,但是程序编译后运行时他们用的ABI不相同程序也不能运行。
静态编译(编译时直接把系统提供的接口包含到程序中来,运行时不需要对应系统提供接口支持)、动态编译(不包含程序编译时系统提供接口。运行时需要对应系统提供相应接口支持)。API 组成部分:syscall系统调用接口,libcall库调用接口。ABI:不同操作系统的内核对于二进制支持格式是各不相同的。SO:shared object(共享对象)、dll:Dynamic Link Library(动态链接库)。POS API:portable os(可移植操作系统)为了兼容unix风格后改为POSIX API
九、自由软件
FSF:Free software fundation
ASF:Apache software fundation
自由学习、自由修改源代码,自由分发源代码,自由创建衍生版,可以出于任何目的获取源代码。
开源许可协议:开源协定
GPLv2,GPLv3
LGPL:Lesser
BSD:
1、如果二次发布的产品中包含源代码,则在源代码中必须带有原来代码的BSD协议
2、如果二次发布的产品只是二进制格式的库或程序,则需要在发布的文档中或版权声明中 说明原来的代码中的BSD协议
3、不可以用开源代码的作者、组织和原来的产品名字做市场推广。
发行版:开源程序+linux内核
Android:
linux + jvm(java虚拟机)+java程序
IOS:
FreeBSD + Object-C(swift)
十、linux基本法则
一切皆文件(包括硬件);
由众多单一目的小程序组成完成负责的任务;
尽可能避免捕获用户接口,为了方便脚本编程以实现自动化执行;
使用文本文件保存程序的配置数据(使用一个文本编辑器即可完成系统及服务的配置)
十一、linux系统层次
用户接口:是一种独特的应用程序,能够为用户提供启动其他应用程序的机制
CLI:命令提示符
GUI:图形界面,通过点击操作启动应用程序
Gnome,c,gtk
KDE,c++,qt
xfce,轻量级
终端:虚拟终端(carl-alt-fn) dev/tty#、
伪终端 (ssh和图形界面打开命令提示符) /dev/pst/#
物理终端(console)/dev/console、
串行终端 /dev/ttyS#、
图形终端(Carl-alt-F7)
startx & ;startx -- :2 &。可以启动多个图形窗口
命令总结:ifconfig ,ls,echo,startx