首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >系统编程究竟是什么?

系统编程究竟是什么?
EN

Software Engineering用户
提问于 2012-06-05 13:13:21
回答 7查看 61.6K关注 0票数 36

我从来不明白系统编程是什么意思。通常给出的定义是"...doing一些接近Os的东西或扩展Os特性.“。

直接使用Windows而不是某些库来表示do文件i/o使其成为系统编程吗?是在编写Android操作系统编程吗?如果我写的东西可以通过控制台公开linux内核,比如Android上的应用程序,我是在做系统编程吗?如果我正在编写软件来控制洗衣机,我是在编写系统编程吗?

我是一个程序初学者,这让我困惑不已。请解释它与“应用程序编程”的对比。

EN

回答 7

Software Engineering用户

发布于 2012-06-05 14:47:06

我个人喜欢维基百科的定义

系统编程(或系统编程)是对系统软件进行编程的活动。与应用程序编程相比,系统编程的主要区别在于,应用程序编程的目的是生产向用户提供服务的软件(例如字处理器),而系统编程的目的是生产向计算机硬件(例如磁盘碎片整理器)提供服务的软件。它需要更高程度的硬件意识。

票数 25
EN

Software Engineering用户

发布于 2012-06-05 13:31:33

有几个问题,你可以问自己,以获得实践,在决定这个问题。

  • 该系统最初是在没有此程序的情况下销售的吗?“愤怒的小鸟”可能是智能手机的“杀手应用程序”(有人买它的原因),但它仍然是一个独立的第三方应用程序,在手机推出很久之后编写。编写它将是应用程序编程。但是,同一款智能手机的显示驱动程序对于使用它至关重要,所以它应该是系统编程。
  • 您能想象将代码移植到另一个平台而不大量重写它吗?TeX和troff已经移植到几乎没有什么变化的任何系统上,所以它们是应用程序,尽管它们位于人们通常使用的工具链的底部。TeX将其输出写入的文件系统(例如UFS或VFAT )是一个边框。如果一个文件系统非常棒,你可以将它移植到不同的操作系统上,但通常人们只会接受一些很棒的想法,并为自己的操作系统编写自己的文件系统。这使得文件系统软件。
  • 该功能是在内核中实现的还是在单独的二进制文件中实现的?(文件系统在这里也占据了一个中间位置。许多文件系统的许多部分实际上是内核代码,但许多文件系统在用户空间中有大量的部分。)图形显示驱动程序原则上可以是可插拔的外部组件,但它们通常是在内核中实现的,或者至少是通过特权直接访问内核(甚至硬件)实现的。那将是系统编程。另一方面,使用图形显示堆栈的电脑游戏是应用程序。

对于您的问题,编写Android操作系统绝对是系统编程。编写使用Windows调用的程序是应用程序编程。它不像使用跨平台库(如SDL或OpenGL )那样可移植,但原则上可以移植,它是第三方代码,并且在用户空间中运行。一个公开Linux内核状态的控制台应用程序是一个有趣的思考实验。我肯定地说,它涉及到系统编程,因为您必须了解Linux的结构(请注意,"Linux“只是内核,而不是发行版)才能编写,甚至可能使用它!

票数 18
EN

Software Engineering用户

发布于 2012-06-05 14:51:11

简而言之:编写扩展或增强OS功能的软件,比如驱动程序、系统实用程序更新到OS‘OS,甚至是全新的OS’OS。

它主要涉及内存管理;最广泛意义上的I/O操作,如网络、文件访问和设备管理;进程管理(多任务处理、进程管理等);用户<->系统交互方法(包括进出)和用户管理。基本上,所有不是应用程序的操作系统的一部分都是系统编程。

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/151610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档