编程层次:
- 硬件规格:hardware specification
- 系统调用:system call (尽量少些,linux一般在300~500个)
- 库调用:library call (标准c库,因为大多数OS都是c语言开发的)
如何启动(运行)一个程序:
程序都是二进制格式,程序的运行,也就是程序指令占用CPU的过程;当然有些程序不能运行的cpu指令(环0指令)就要交由内核进行执行。
程序运行的接口就是UI(user interface)有两种形式:
- GUI (图形化方式)--> 鼠标点击运行,【鼠标点击】是个单独的程序
- CLI (命令行方式)
介绍ABI和API
- ABI:Application Binary Interface (不同系统上的二进制程序,不能通用)
- API:Application Programing Interface (编程接口,面向库的编程接口)
现在的程序员,所谓的编程基本都是以面向系统的库进行编程,少部分涉及系统调用的编程,有时也会混合使用。
那么如何使编程能够跨操作系统
POS-Portable Operating System (可移植操作系统规范)出现了,因为都是基于unix或事linux,就出现了POSIX,这个IX很有可能是名字上的凑数而已。
OS | ABI | API |
Windows | EXE | dll(dynamic link library) |
Linux | ELF | so(shared object) |
编程语言的层级:
编程语言 | 代表 | 主要用途 | |
低级语言 | 汇编 | 微码编程,系统中某些与硬件相关的特定代码,比如驱动程序开发 | |
高级语言 | c c++ | 系统级应用,一部分通用的驱动程序 | |
高级语言 | java python php | 应用程序 |
题外话,选择编程语言的重要性:
现在我们使用的智能手机操作系统,大的阵营有两种:ios 和android
大家会觉得IOS的系统比较流畅,无异常或卡顿;相反android有时会觉得卡顿或发生莫名问题。究其原因,ios系统是用object c编写,android使用linux内核+java虚拟机来写的,但是使用java这样虚拟机的程序,存在一个垃圾回收问题。