1.1、操作系统
# OS:通用目的的软件程序;
用户 |
应用程序 |
操作系统 |
硬件 |
# os的功能:
(1)驱动硬件
(2)进程管理
(3)内存管理
(4)网络管理
扫描二维码关注公众号,回复:
2367067 查看本文章
(5)文件管理
(6)安全管理
# os的分类:
服务器:RHEL,Centos,WindowsServer,Debian等;
桌面:windows7,windows10,MacOS,Ubuntu等;
移动设备:Android,IOS等;
1.2、开发接口标准
# ABI
ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI的系统中无需改变就能运行。
# API
API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任何系统中编译。
# POSIX
IEEE在操作系统上定义的一系列API标准,POSIX兼容的程序可在其他POSIX操作系统编译执行。
1.3、用户空间与内核空间
# 用户空间(user space)
用户程序的运行空间,为了安全,他们是隔离的,即便用户程序崩溃,内核也不会受到影响;
# 内核空间(kernel space)
是linux内核运行的空间,可以执行任何命令,调用系统的一切资源;
# 代码
1 name='lxroot' # 用户空间
2 a=1 # 用户空间
3 a=a+1
4 file.write(name) # 切换到内核空间
5 a=a-2
# BSD授权:鼓励代码共享,但需要尊重代码作者的著作权;
(1)如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协议;
(2)如果二次发布的只是二进制格式的库或程序,则需要在发布的文档中说明包含原来代码中的BSD协议;
(3)不可以用源代码的组织或作者和原来产品的名字来作推广;
#Apache Licence 2.0:对商用软件友好的许可;
(1)需要给代码的用户一份Apache Licence;
(2)如果你修改了代码,需要在被修改的文件中做出说明;
(3)在延伸的代码中需要带有原来代码中的协议,商标,专利申明和其他原来作者规定需要包含的说明;
(4)如果再发布的产品中包含一个notice文件,则在notice文中需要带有Apache licence,可以增加自己的许可,但不可表现为对Apache Licence构成更改;
# GPL的出发点是代码的开源、免费使用和修改、衍生代码的开源和免费使用,但不允许修改和衍生的代码作为闭源的商业软件发布和销售;
# LGPL是GPL的一个主要为类库使用设计的开源协议(仅调用库,不需要开源)