本文转自: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)

网络之间的通信可以看作是进程间通信的特殊形式,通过网络,不同主机上的进程,即使使用的是不同操作系统,也可以互相通信。网络通信也是内核提供的服务。

什么是linux系统编程相关推荐

  1. 外网访问arm嵌入式linux_嵌入式Linux系统编程——文件读写访问、属性、描述符、API

    Linux 的文件模型是从 Unix 的继承而来,所以 Linux 继承了 UNIX 本身的大部分特性,然后加以扩展,本章从 UNIX 系统接口来描述 Linux 系统结构的特性. 操作系统是通过一系 ...

  2. linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...

    信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...

  3. Linux系统编程——进程基础知识

    Linux系统编程--进程基础知识 1.程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁-) 进程,是一个抽象的概念,与操作系统原理联系紧密.进程 ...

  4. Linux系统编程——线程私有数据

    在多线程程序中.常常要用全局变量来实现多个函数间的数据共享.因为数据空间是共享的,因此全局变量也为全部线程共同拥有. 測试代码例如以下: #include <stdio.h> #inclu ...

  5. vbs结束进程代码_物联网学习教程—Linux系统编程之进程控制

    Linux系统编程之进程控制 一.结束进程 首先,我们回顾一下 C 语言中 continue, break, return 的作用: continue: 结束本次循环 break: 跳出整个循环,或跳 ...

  6. Linux 系统编程总结 (未完待续)

    前言 我记得去年说过要讲一些干货分享给大家,Linux 系统编程是linux 驱动开发入门的条件 有人说为什么? mmap select read write open ioctl socket po ...

  7. Linux系统编程之查看文件大小的方法(lseek_fseek_stat)

    Linux系统编程之查看文件大小的方法(lseek.fseek.stat)三种方法: #include <stdio.h> #include <fcntl.h> #includ ...

  8. Linux系统编程之进程与线程控制原语对比

    Linux系统编程之进程与线程控制原语对比 进程 线程 fork pthread_create exit pthread_exit wait pthread_join kill pthread_can ...

  9. Linux系统编程之查看文件大小的方法(lseek and stat)

    Linux系统编程之查看文件大小的方法:1.使用lseek函数,2.使用stat函数.直接上代码 #include <stdio.h> #include <stdlib.h> ...

  10. linux线程并不真正并行,Linux系统编程学习札记(十二)线程1

    Linux系统编程学习笔记(十二)线程1 线程1: 线程和进程类似,但是线程之间能够共享更多的信息.一个进程中的所有线程可以共享进程文件描述符和内存. 有了多线程控制,我们可以把我们的程序设计成为在一 ...

最新文章

  1. 【Go】Go基础(六):数组、切片slice、映射map
  2. android studio快捷键大全
  3. eclipse打开过的工程信息保存路径
  4. oracle 查看日志组切换状态_Oracle 逻辑结构篇 之 重做日志和归档日志管理(一)...
  5. redis module模块简单使用
  6. Python基础教程:Python pass语句详解
  7. 重磅!英特尔终于挤出10nm芯片 六大技术战略,震动芯片届
  8. 3dmax物体轴心点坐标和unity3d不一样_Unity3D新手必看:几个让你相见恨晚的小技巧...
  9. 剧情很有趣:安全专家被骗记
  10. docker使用阿里云镜像仓库docker
  11. JDK源码解析--ArrayList
  12. Sql Create Function简单例子
  13. 两台笔记本用wifi建立局域网_无线通信技术——WiFi
  14. Win7安装英文语言包(图文)
  15. 硕思闪客精灵怎么导出flash(gif)动画,flash游戏源文件疑难问题解答(注册码)
  16. IE可以实现的浏览器js下载文件的方法
  17. 获取按键精灵论坛网页源文件
  18. 服务器虚拟机的c盘怎么加,xp虚拟机c盘怎么扩容
  19. adguard自定义_openwrt上装adguard以及实用教程
  20. 全球与中国矿物加工工程市场深度研究分析报告

热门文章

  1. Java八股文(Java基础面试题)
  2. Python雪花代码
  3. Linux 文件编码问题及iconv命令
  4. 【2022南京大学操作系统(蒋岩炎)】(一)操作系统概述 | 操作系统上的程序
  5. 使用Java实现数据库编程
  6. mac 上安装mysql5.6
  7. Mybatis添加SQL打印
  8. sessionid会被拦截吗_服务 | 拦截80%骚扰电话?仅需1招!
  9. 【算法三】排序算法之冒泡排序
  10. thinkphp使用echarts_插件highcharts在thinkphp中的使用