【Linux系统编程】初识系统编程

news2025/3/12 23:35:27

目录

    • 一、什么是系统编程
      • 1. 系统编程的定义
      • 2. 系统编程的特点
      • 3. 系统编程的应用领域
      • 4. 系统编程的核心概念
      • 5. 系统编程的工具和技术
    • 二、操作系统四大基本功能
      • 1. 进程管理(Process Management)
      • 2. 内存管理(Memory Management)
      • 3. 文件系统管理(File System Management)
      • 4. 设备管理(Device Management)
    • 三、计算机系统分层
      • 1. 硬件层(Hardware Layer)
      • 2. 操作系统层(Operating System Layer)
      • 3. 系统软件层(System Software Layer)
      • 4. 应用软件层(Application Software Layer)
      • 5. 用户层(User Layer)
    • 四、我们如何使用呢
      • 1.系统调用接口
      • 2.函数库
      • 3.shell

一、什么是系统编程

系统编程(System Programming)是计算机科学中的一个重要领域,专注于开发与计算机硬件和操作系统直接交互的软件。它涉及底层操作、资源管理、系统服务的实现,以及对硬件资源的直接控制。
系统编程(System Programming)是计算机科学中的一个重要领域,专注于开发与计算机硬件和操作系统直接交互的软件。它涉及底层操作、资源管理、系统服务的实现,以及对硬件资源的直接控制。以下是系统编程的详细介绍:

1. 系统编程的定义

系统编程是指编写与操作系统内核、硬件设备、系统资源(如内存、CPU、I/O设备)直接交互的软件。它的主要目标是提供高效、可靠的基础设施,以支持上层应用程序的运行。

  • 与应用程序编程的区别
    • 应用程序编程:关注用户功能(如Web开发、移动应用开发)。
    • 系统编程:关注底层功能(如内存管理、进程调度、设备驱动)。

2. 系统编程的特点

  1. 与硬件和操作系统紧密相关

    • 直接调用操作系统提供的API(如Linux的系统调用)。
    • 直接操作硬件资源(如内存、寄存器、设备控制器)。
  2. 高效性和性能优化

    • 系统软件是其他应用程序运行的基础,因此对性能要求极高。
    • 需要优化代码以减少资源占用和提高执行效率。
  3. 低级别语言

    • 通常使用C、C++、汇编语言等低级语言,因为它们提供了对硬件的直接控制能力。
    • 高级语言(如Python、Java)通常不适合系统编程,因为它们的抽象层次较高。
  4. 复杂性和难度

    • 涉及复杂的底层逻辑,如并发控制、内存管理、错误处理等。
    • 调试和测试系统程序比普通应用程序更具挑战性。

3. 系统编程的应用领域

  1. 操作系统开发

    • 编写操作系统内核、文件系统、进程调度器等。
    • 例如,Linux、Windows、macOS等操作系统的开发。
  2. 设备驱动程序

    • 编写硬件设备的驱动程序,使操作系统能够与硬件通信。
    • 例如,显卡驱动、网络适配器驱动等。
  3. 嵌入式系统

    • 为嵌入式设备(如智能家居、工业控制器)编写固件和底层软件。
    • 例如,物联网设备的开发。
  4. 系统工具和实用程序

    • 编写系统管理工具,如编译器、调试器、网络协议栈等。
    • 例如,GCC编译器、Wireshark网络分析工具。
  5. 虚拟化和容器技术

    • 实现虚拟机管理程序(如KVM、Xen)和容器引擎(如Docker)。
    • 例如,云计算平台的基础设施开发。

4. 系统编程的核心概念

  1. 系统调用(System Call)

    • 应用程序通过系统调用请求操作系统提供服务,如文件操作、进程管理、网络通信等。
    • 例如,在Linux中,open()read()write()等函数都是系统调用。
  2. 内存管理

    • 管理物理内存和虚拟内存,包括内存分配、释放、分页、分段等。
    • 例如,C语言中的malloc()free()函数。
  3. 进程和线程

    • 管理进程的创建、调度、同步和通信。
    • 例如,Linux中的fork()exec()pthread_create()等函数。
  4. 文件系统

    • 实现文件的存储、检索和管理。
    • 例如,Linux中的ext4NTFS等文件系统。
  5. 网络编程

    • 实现网络协议的栈和通信机制。
    • 例如,TCP/IP协议栈、Socket编程。
  6. 中断处理

    • 处理硬件中断,以响应外部事件(如键盘输入、网络数据到达)。
    • 例如,Linux中的中断处理程序(ISR)。
  7. 并发和同步

    • 管理多个进程或线程的并发执行,确保数据一致性和资源竞争的正确处理。
    • 例如,使用互斥锁(Mutex)、信号量(Semaphore)等同步机制。

5. 系统编程的工具和技术

  1. 编程语言

    • C、C++、汇编语言是系统编程的主要语言。
    • Rust也逐渐成为系统编程的热门选择,因为它提供了内存安全性。
  2. 开发工具

    • 编译器:GCC、Clang
    • 调试器:GDB、LLDB
    • 性能分析工具:Valgrind、Perf
  3. 操作系统API

    • Linux系统调用:syscallopenreadwrite
    • Windows API:CreateProcessReadFileWriteFile
  4. 虚拟化和容器技术

    • 虚拟机管理程序:KVM、Xen
    • 容器引擎:Docker、Kubernetes

二、操作系统四大基本功能

1. 进程管理(Process Management)

  • 操作系统负责创建、调度、终止进程,并管理进程之间的通信和同步。
  • 确保CPU资源的高效利用,通过进程调度算法(如先来先服务、短作业优先、时间片轮转等)分配CPU时间。

2. 内存管理(Memory Management)

  • 操作系统管理计算机的主存(RAM),负责分配和回收内存空间。
  • 实现虚拟内存技术,允许程序使用比物理内存更大的地址空间,并通过页面置换算法(如FIFO、LRU等)管理内存页面。

3. 文件系统管理(File System Management)

  • 操作系统提供文件存储、检索、组织和保护的功能。
  • 管理文件的创建、删除、读写和权限控制,确保数据的安全性和一致性。

4. 设备管理(Device Management)

  • 操作系统管理计算机的硬件设备,包括输入输出设备(如键盘、鼠标、打印机等)。
  • 通过设备驱动程序与硬件交互,提供设备的中断处理、缓冲和调度功能。

三、计算机系统分层

在这里插入图片描述
计算机系统通常可以分为多个层次,每一层都有其特定的功能和职责。

1. 硬件层(Hardware Layer)

  • 这是计算机系统的最底层,包括物理硬件设备,如处理器(CPU)、内存(RAM)、硬盘、输入输出设备(键盘、鼠标、显示器等)。
  • 硬件层提供计算机系统运行所需的物理资源。

2. 操作系统层(Operating System Layer)

  • 操作系统层位于硬件层之上,负责管理硬件资源并提供基本的系统服务。
  • 主要功能包括进程管理、内存管理、文件系统管理、设备管理等。

3. 系统软件层(System Software Layer)

  • 这一层包括各种系统工具和库,如编译器、调试器、链接器、系统库等。
  • 系统软件层为应用程序提供运行环境和开发支持。

4. 应用软件层(Application Software Layer)

  • 这是最上层,包括各种应用程序,如办公软件、浏览器、游戏、数据库管理系统等。
  • 应用软件层直接为用户提供服务,满足用户的具体需求。

5. 用户层(User Layer)

  • 用户层包括最终用户,他们通过应用软件与计算机系统进行交互。
  • 用户层是计算机系统的最终服务对象。

这些层次之间通过接口进行交互,每一层都依赖于下层的服务,并为上层提供支持。这种分层结构使得计算机系统的设计、开发、维护和扩展更加模块化和高效。


四、我们如何使用呢

1.系统调用接口

操作系统提供的函数,我们称之为系统调用函数或系统调用接口,比如ls命令就是一个封装好的程序(和我们知道的a.out本质上没区别),会调用内核接口,fopen()也会调用系统库中的open()

应用程序不能直接访问内核代码和数据,只能通过系统调用接口

2.函数库

1)标准C库下的printf()scanf()等,可以跨平台使用。windows和linux都可以使用。
绝大多数标准C库的函数会调用操作系统的提供的函数,比如printf()会调用系统库中的write(),再比如fopen()调用系统库中的open()
2)但是linux系统库下的函数不能跨平台使用,我们这里使用linux提供的。

3.shell

俗称壳,shell是用户和系统交互的媒介,终端窗口不等于shell,只是打开终端会运行shell。我们敲的命令比如ls,借助shell就可以执行。shell是个统称,不同的Linux发行版运行shell不同,比如我们进程在Ubuntu运行的shell就是bash

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2311600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-列表和元组

列表 列表是什么, 元组是什么 编程中, 经常需要使用变量, 来保存/表示数据. 如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可. 但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候, 就需要用到列表. 列表是一种让程序猿在代…

ISA-95(S95)标准详解

目录 1. 什么是ISA-95? 2. 为什么需要ISA-95? 3. ISA-95模型结构 3.1 功能层次(Purdue CIM模型) 3.2 信息流模型 3.3 控制功能模型 3.4 生产活动定义(Part 3) 4. ISA-95与ISA-88(S88&am…

透视京东物流财报:一个长期主义的产业样本

“企业的使命不是预测未来,而是创造未来。但创造的前提是理解什么值得坚守百年。” 从某种角度来说,京东物流恰在成为当下国内研究长期主义的一个样本。这些亮眼的财报数据背后,对应的不仅是向上的业务增长本身,其中更需要被看见…

时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍

化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。通过应用 TDengine,力川科技助力化工企业实现…

Networking Based ISAC Hardware Testbed and Performance Evaluation

文章目录 Applications and Challenges of Networked SensingCooperation Mechanism in Networked SensingChallenges and Key Enabling Technologies 5G NR Frame Structure Based ISAC ApproachSignals Available for Radio SensingMulti-Dimensiona Resource Optimization S…

【音视频】ffplay简单过滤器

一、ffplay简单过滤器 视频旋转:借助transpose滤镜 ffplay -i 1.mp4 -vf transpose1这里选择不同的数字是不同的方向: 视频翻转:借助hflip/vflip实现水平和垂直翻转: 水平翻转 ffplay 1.mp4 -vf hflip垂直翻转 ffplay 1.mp4 …

力扣HOT100之哈希:1. 两数之和

这道题之前刷代码随想录的时候已经刷过好几遍了&#xff0c;看到就直接秒了。这道题主要是通过unordered_map<int, int>来建立哈希表&#xff0c;其中键用来保存向量中的元素&#xff0c;而对应的值则为元素的下标。遍历整个向量&#xff0c;当遍历到nums[i]时&#xff0…

TON基金会确认冠名赞助2025香港Web3嘉年华,并将于4月8日重磅呈现“TON生态日”

近日&#xff0c;由万向区块链实验室与HashKey Group联合推出的Web3年度盛典——2025香港Web3嘉年华正式宣布&#xff0c;TON基金会确认成为本届嘉年华的冠名赞助商&#xff0c;并将于4月8日在主会场特别举办“TON生态日”专题Side Event&#xff0c;集中展现TON生态的最新技术…

Raspberry pi4 realsense图像发送和自动启动服务

测试realsense安装&#xff1a; import pyrealsense2 as rs import numpy as np import cv2def main():# 配置RealSense管道pipeline rs.pipeline()config rs.config()# 启用RGB和彩色深度流config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30)config.ena…

Git - 补充工作中常用的一些命令

Git - 补充工作中常用的一些命令 1 一些场景1.1 场景11.2 场景21.3 场景31.4 场景41.5 场景51.6 场景61.7 场景71.8 场景81.9 场景91.10 场景101.11 场景111.12 场景121.13 场景131.14 场景141.15 场景15 2 git cherry-pick \<commit-hash\> 和 git checkout branch \-\-…

电脑网络出现问题!简单的几种方法解除电脑飞行模式

在某些情况下&#xff0c;您可能需要关闭电脑上的飞行模式以便重新连接到 Wi-Fi、蓝牙或其他无线网络。本教程中简鹿办公将指导您如何在 Windows 和 macO S操作系统上解除飞行模式。 一、Windows 系统下解除飞行模式 通过快捷操作中心 步骤一&#xff1a;点击屏幕右下角的通知…

PQL查询和监控各类中间件

1 prometheus的PQL查询 1.1 Metrics数据介绍 prometheus监控中采集过来的数据统一称为Metrics数据&#xff0c;其并不是代表具体的数据格式&#xff0c;而是一种统计度量计算单位当需要为某个系统或者某个服务做监控时&#xff0c;就需要使用到 metrics prometheus支持的met…

【从零开始学习计算机科学】数字逻辑(九)有限状态机

【从零开始学习计算机科学】数字逻辑(九)有限状态机 有限状态机状态机的表示方法有限状态机的Verilog描述有限状态机 有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状…

java错题总结

本篇文章用来记录学习javaSE以来的错题 解答&#xff1a;重载要求俩个方法的名字相同&#xff0c;但参数的类型或者个数不同&#xff0c;但是不要求返回类型相同&#xff0c;所以A正确。 重写还需要要求返回类型相同&#xff08;呈现父子类关系也可以&#xff0c;但是属于特例&…

新编大学应用英语综合教程2 U校园全套参考答案

全套答案获取&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/389618f53143

STM32之软件SPI

SPI传输更快&#xff0c;最大可达80MHz&#xff0c;而I2C最大只有3.4MHz。输入输出是分开的&#xff0c;可以同时输出输入。是同步全双工。仅支持一主多从。SS是从机选择线。每个从机一根。SPI无应答机制的设计。 注意&#xff1a;所有设备需要共地&#xff0c;时钟线主机输出&…

从零开始实现大语言模型(十三):预训练大语言模型GPTModel

1. 前言 使用梯度下降算法通过下一个token预测任务预训练大语言模型GPTModel&#xff0c;前向传播流程每次会输入一个batch的长度均为context_len的训练样本&#xff0c;执行 batch_size context_len \text{batch\_size}\times\text{context\_len} batch_sizecontext_len次下…

Permute for Mac v3.12.1 文件格式转换器 支持M、Intel芯片

Mac毒搜集到的Permute 提供简单的视频格式转换功能&#xff0c;可以简单的将视频文件转换为你想要的格式。将你想要转换的视频拖到软件窗口内&#xff0c;然后选择你想要转换的格式即可。 应用介绍 Permute是一款Mac上易用的媒体格式转换工具&#xff0c;支持视频、音乐和图像…

智慧消防新篇章:4G液位/压力传感器,筑牢安全防线!

火灾无情&#xff0c;防患未“燃”&#xff01;在智慧消防时代&#xff0c;如何实现消防水系统的实时监测、预警&#xff0c;保障人民生命财产安全&#xff1f;山东一二三物联网深耕物联网领域&#xff0c;自主研发4G液位、4G压力智能传感器&#xff0c;为智慧消防水位、水压无…

C++ primier plus 函数探幽第二部分

系列文章目录 C primer plus 第一节 步入C-CSDN博客 C primer plus 第二节 hello world刨析-CSDN博客 C primer plus 第三节 数据处理-CSDN博客 C primer plus 第四节 复合类型-CSDN博客 C primer plus 第五节 循环-CSDN博客 C primier plus 第七节 函数探幽第一部分-CSDN博客 …