这就需要引入操作系统了,操作系统就是用来对程序进行调度,以及协调其他程序进行工作,是位于硬件和应用软件之间的中间层。有了操作系统,任何程序都不能直接和硬件打交道,而是要经过操作系统这一中间层进行处理。
同一份程序,在不同的操作系统运行的效果不同的解释:程序要执行某一个功能,将请求交给操作系统,操作系统通过调用相关的库来执行,不同的操作系统实现实现某种库的方式可能不一样,那么程序的效果也就不一样了。
11.Shell以Windows为例,为什么双击桌面上的图标就可以运行相应的程序,或则在命令行中输入calc就可以打开计算器呢?
上面的两种操作:双击图标和在命令行输入命令回车,本质上都是指令。我们的指令需要操作系统传到内核(kernel)中,然后实现程序的运行。接收指令的这个东东,就是人机交互接口(Shell)。Shell包括两种:
GUI图形Shell
CLI命令行Shell
不管是GUI还是CLI,目的都是向内核传送指令,实现某项操作,对于内核来说,通过什么方式传送指令并不重要。
操作系统内核的功能包括:
进程管理(协调)
内存管理
文件系统
网路功能
硬件驱动
安全机制等
12.Linux发行版终于讲到Linux了,照例在此之前应该讲讲Linux的起源,Unix,Bell实验室,Apple和Windows等等,但是历史性的东西并不是这篇博文的重点,这里就暂且跳过。
Linux是操作系统,也就是软件,软件要想运行,就需要编译成相应的二进制代码才能运行。
上面我们也谈到过,不同的CPU架构,完成某项操作的实现方式可能不同,因此在编译操作系统的时候不应该出现交叉编译的情况(比如在AMD上编译在Intel上运行)。
也就是说,想要在某个平台上使用操作系统,需要针对这个平台进行编译。这无疑增加了学习和使用的难度,作为初学者而言,这是噩梦。于是出现了一些组织,他们来对Linux的源码和外围的一些软件进行编译集成,然后发行出来,这就是Linux的发行版。这样的公司或组织有RedHat,Debian等
13.软件包管理器早期的软件都是随着内核一起打包发布的,这样有个明显的缺点:不利于软件的管理,如软件的安装,卸载等。于是出现了软件包管理器,用来方便软件的管理,安装,卸载等。比较著名的有dpt(debian),rpm(redhat)等。
14.Linux的基本原则组装:组合功能目的单一的小程序,完成复杂的任务
一切皆文件
尽量避免捕获用户接口(交互),比如输入ls,马上列出目录下的文件,不需要其他操作。
配置文件保存为纯文本格式——一个简单的文本编辑器就可以完成所有的功能。
15.命令的构成基本格式为:命令 = 命题主体 + 选项 + 参数。
命令执行:输入命令后,由shell将指令发送给kernel,kernel即对该指令进行判断,决定是否执行。
命令可以跟上选项,用来修正命令的执行方式。格式为:
短选项:-单一字符,如 -a,-l,-h
长选项:--单词,如 --help
短选项多个选项可以组合:-a -h 可以组合成 -ah。长选项通常不能组合。
命令的参数:命令的表示命令的作用对象。如:ls -ah /etc 为列出 /etc 目录下的文件,如果不加参数,默认为当前目录。
16.一些琐碎知识Linux(我这里使用的是RedHat)下一般有6个终端可以使用,可以按键盘组合键 ctrl + alt + f1~f6切换。
$ startx & -> 启用图形界面。
Linux图形界面的类型:Gnome(C),KDE(C++),XFace(轻量级图形界面)。
Linux命令行界面类型:bash csh zsh ksh....
任何跟shell相关的启动的程序,只要shell关了,这个程序也就关了(这不废话吗)。
su:切换用户(switch user 缩写)。
su root [-l] :半切换,完全切换。
passwd:修改密码,连输两次即可。
对于root,可以随便修改,对于普通用户,需要满足密码复杂性规则。
17.总结