直接操作硬件的,由cpu的特权指令集去操作,一般的操作都是普通指令集。cpu有指令集,不同的cpu可能指令集都不同。
API:Application Programing Interface
ABI: Application Binary Interface
ANSI:
编译前的是调用API,编译后的是ABI,程序在哪里编译就在哪里运行。
预处理->编译->汇编->链接
dll: Dynamic Link Libraries动态链接库 window上
so: shared object Linux上
在链接阶段,会把相应的库文件加载到内存才能运行程序。
操作系统自己本身有很多标准库可以供上层调用,一般为C。进程的创建,一般是请求shell,shell作为父进程建立子进程运行。
Linux: GNU/Linux
递归缩写:GNU is NOT Uinx
GPL, GPLv2, GPLv3, LGPL 版权还是归别人所有,开源只是可以用
BSD
Apache
版权:copyright, copyleft
@课外扩展:了解这些开源协定;
最常用的几个版本的Linux:
Redhat, SuSE, Debian
程序包管理器:
一个程序通常有四类文件:二进制程序、配置文件、库文件(供给别人)、帮助文件
dpkg,debian的一种程序包管理器;
rpm:redhat研发的,也是一种程序包管理工具。
知识:
X86-64, CentOS 6.4 32bits, test-3.2.1-CetnOS5.x86.rpm
这个意思是使用centos5的32位的机器编译,与前面的centos6版本不匹配,也不会安装成功,因为很有可能库不同。
X86-64, CentOS 6.4 32bits, test-3.2.1-el6.x86_64.rpm
后面的el6.64表示在centos6的64位系统上编译的,会用到centos64位操作系统的库。
应用程序访问内核时有的可以调用库,有的可以直接调用,称为系统调用。
shell是一个外壳,能够让用户通过它可以调用应用程序在内核上运行。
Linux的内核源代码是支持所有平台的,但是编译后就指定支持的平台了,因为其支持的库不同,cpu指令也有所不同。
文件系统:File System
是在内核上的,与硬件打交道。是内核的一部分,对外提供系统调用。
网络模块也是内核的一个子功能模块,因为内核才能访问网卡,如果在应用层的话,每次多次都系统调用,速度太慢。
通用软件
Kernel(内核):
内核的功能:
文件系统
网络协议栈
进程管理
加密/解密
驱动程序:如插入一个新的硬盘,内核会加载驱动程序(对应应用驱动会在os里已有),去操作该硬盘,因此驱动程序如有毒危害会很大。
操作系统与进程在CPU上的切换关系:
在CPU上,操作系统与应用程序在不停的切换,操作系统选取任务列表的进程进入cpu执行,执行完后操作系统再占据cpu,选取下一个,如果在执行进程中有操作硬件的操作,例如cpu的特权指令(如创建文件等),则进程让给操作系统占据cpu,完成特权操作,操作系统完成后返回给进程,然后进程再继续执行。
应用软件
Linux的基本内容:
系统管理:网络、文件(创建、删除、移动、权限)、用户、文件系统、加密/解密、内核(编译)、启动过程、程序包管理;
网络服务管理:Web(apache, nginx, mysql, php)、NFS/samba/ftp(文件服务)、Postfix/Dovecot(邮件服务)、网络安全(iptables,
tcp_wrapper)、DNS(基于此实现CDN);
MySQL: CRUD、索引、存储引擎、备份、恢复、复制、集群、分片;
集群:LB(负载均衡集群)、HA(高可用集群)、GFS(全局文件系统);
高扩展的Web: nginx、haproxy、keepalived、tomcat、分布式文件系统、CDN、NoSQL
虚拟化(基于硬件):xen, kvm, lxc/openvz(容器类的虚拟化实现方案)
IaaS: Openstack(云虚拟化)等;
自动化运维:自动化管理,监控,puppet,python编程等;
大规模并行处理平台:hadoop实现机制,配置和使用;
系统原理及优化
红帽公司:RHCSA、RHCE、RHCA