操作系统
OS(Operating System)既操作系统,是一个包含通用目的或者功能的软件程序,这些通用目的包含了以下几项:
- 硬件驱动
- 内存管理
- 进程管理
- 网络管理
- 安全管理
- 文件管理
OS主要有三大分类,既服务器OS、桌面OS以及移动设备OS,常用的如CentOS和Windows Server等都属于服务器OS;Windows10、Mac OS和Fedora都是属于桌面OS;移动设备上最常使用的Android 和 IOS则属于移动设备OS
操作系统与硬件、应用软件与操作系统以及用户与应用软件的交互是通过接口来进行的,而关于开发接口有两个标准既ABI、API以及POSIX
- ABI:Application Binary Interface,ABI描述了应用程序与OS之间的底层接口,允许编译好的代码在使用了兼容ABI系统中运行
- API:Application Programming Interface,API定义了源代码与库之间的接口,同样的源代码可以在支持API的任何系统中编译和运行
- POSIX:Portable Operating System Interface,可移植操作系统接口,IEEE(电气与电子工程师协会)在操作系统上定义的一些类API标准,POSIX兼容的程序可以在其他POSIX操作系统编译执行
Windows中的程序的运行格式一般是exe,其中.dll结尾的是程序依赖的一些动态库,.lib结尾的则是静态库。Linux中的程序是ELF,.so是指动态编译,.a是指静态编译
User Space:用户空间既用户程序的运行空间,用户空间是隔离的,既用户程序的崩溃不会对操作系统和内核有任何影响,用户空间运行的程序只能进行简单的运算,无法直接调用系统资源,必须通过接口(System Call)向内核发出指令,如文件打开关闭以及写入等操作
Kernel Space:内核空间既Linux内核的运行空间,可以执行任意命令,调用一切系统资源
Context Change:上下文切换,指的是单核CPU情况下,CPU有时在执行用户空间的任务有时在执行内核空间的任务,这种任务或者是工作区域的切换就是上下文切换,切换时必须要保存当前任务状态之后,才能切换到下一个任务,上下文切换是不可避免的,但是减少上下文切换的次数可以提供性能
操作系统上运行的编程语言的分类如下:
- 低级语言:机器语言0和1,汇编语言和机器语言一一对应,与硬件相关的特有代码和驱动程序开发
- 中级语言:如C语言,偏向于系统级应用和驱动程序的开发
- 高级语言:Python、Java、Go、PHP等,偏向于应用程序开发