本文转自:http://www.cppcourse.com/what_is_system_programming.html
谈到系统编程,我们常常会拿应用编程与之相比,它们有不同点,也有共同点。系统编程最突出的特点是要求系统程序员必须对他工作的系统硬件和操作系统有深入和全面的了解,而应用编程则不需要,因为应用编程往往是面向更上层的库来进行开发的。
系统编程
在操作系统之上利用系统调用、C库进行对系统资源进行访问。如apache 、gcc、gdb等
应用编程
在更高层次的编程接口或者库之上构建应用程序。如android程序(android sdk)、iphone程序(iphone sdk)、QT程序设计(QT)、MFC程序设计(MFC)
系统资源
处理器(Processor)
程序是由指令构成的,处理器是执行指令的硬件设备,一个系统可能有多个处理器。内核能够安排一个程序何时开始执行,何时暂时停止、恢复执行,何终止执行。
输入输出(I/O)
程序中所有输入/输出的数据、终端的输入/输出数据还有硬盘输入/输出数据,都必须流经内核,这种集中的处理方式有以下优点:正确性,数据流不会流错地方;有效性,程序员无需考虑不同设备之间的差异;安全性,数据信息不会被未授权的程序非法访问。
进程管理(Process Management)
进程指程序的一次运行,每个进程都有自己的资源,如内存、打开的文件和其他运行时所需的系统资源。内核中与进程相关的服务有新建一个进程、中止进程、进程设等。
内存(Memory)
内存是计算机系统中很重要的资源,程序必须被装载到内存中才可以运行。内核的职责之一是内存管理,在需要的时候给程序分配内存,当程序不需要的时候回收内存,内核还能够保证内存不被其他的进程非法访问。
设备(Device)
计算机系统中可以有各种各样的外设,如磁带机、光驱、鼠标、扫描仪和数码摄像机等,它们的操作方式各不相同,内核能屏蔽掉这种差异,使得对设备的操作方式简单而统一。例如,一个程序想要从数码照相机中取出照片存储在计算机中,它只需向内核提出操作该资源的请求即可。
定时器(Timers)
程序的工作与时间有关,有的需要定时被触发,有的需要等一段时间再开始某个动作,有的需要知道某一个操作消耗的时间,这些都涉及定时器,内核可以通过系统调用向应用程序提供计时器服务。
进程间通信(Interprocess Communication)
在现实生活中人们通过电话、e-mail、信件、广播、电视等互相通信,在计算机的世界中,不同的进程也需要互相通信,内核提供的服务使进程间通信成为可能。就像电信和邮政提供的服务,通信也是资源。
网络(Networking)
网络之间的通信可以看作是进程间通信的特殊形式,通过网络,不同主机上的进程,即使使用的是不同操作系统,也可以互相通信。网络通信也是内核提供的服务。