IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux系统编程概述 -> 正文阅读

[系统运维]Linux系统编程概述

1 系统编程概念

操作系统的主要任务是什么?💻📑

计算机用户与计算机操作系统的交互类似于银行客户与银行的交互。对应关系如下:计算机硬件—金库,操作系统—银行,系统接口—办事窗口,计算机程序—银行客户。类比银行通过办事窗口向客户提供服务,操作系统通过系统接口向用户提供服务。

image-20220206135957781

为什么要有操作系统呢?如果大家都能直接操作硬件,将会导致数据混乱不安全,同时也会提高使用计算机的难度。操作系统本质上也是一个软件(系统软件),它能够充分组织利用计算机的各种硬件资源(CPU、内存、硬盘、网络等),使资源利用效率最大化。操作系统的设计者为普通用户提供了一些方便使用的接口(系统调用),用户可以通过这些接口编写计算机程序高效利用计算机硬件,以实现特定的功能;类似于银行办事窗口的存取款业务,只要用户提供特定的信息,如身份证信息、存取款信息,银行便会借助金库为客户实现存取款功能。

总之,操作系统的主要任务就是为用户提供方便使用、功能强大的服务

什么是系统编程?💻📑

系统编程就是利用操作系统提供的系统调用(system call,即所谓的接口、函数)进行编程,以达到操作各种计算机硬件资源(如磁盘、终端、网络等)的目的

image-20220206143459125

计算机开机时,首先运行一段名为boot loader的小程序,其主要功能是检查各种硬件,为操作系统内核的运行提供正确的环境。随后,计算机将操作系统内核加载到内存中(内核空间),这也是计算机一开机便会被占用一部分内存的原因。内存中除内核空间之外的空间叫做用户空间,主要运行用户程序等。系统编程主要研究操作系统提供的系统调用,包括系统调用的分类、功能、调用方法等,同时还要掌握系统调用的原理。

2 系统编程特点

  • 无法跨平台(OS)。类比于不同银行内部的运作机制大同小异,不同操作系统底层运行的机制也会有所差别,其向用户提供的系统调用也各有千秋,如 Linux 和 Windows 都有自己独特的系统调用,调用方法、功能也不一样。

  • 速度慢。用户空间到内核空间的切换需要时间,所以系统编程本身并不高效。

  • 更加底层,接口更复杂。系统调用的功能十分强大、可操作性高,但是使用起来极其复杂。

    调用 Glibc 库时,库文件和函数原型为:

#include <stdio.h>
FILE *fopen(const char *path, const char *mode);

???????进行系统调用时,库文件和函数原型为:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

3 Linux系统编程内容

  • 文件I/O,缓冲I/O
    • 文件的打开、关闭、读写
    • 阻塞与非阻塞IO
    • 同步IO
    • 内核内幕:虚拟文件系统
    • 标准I/O
    • 流的打开、关闭与读写
    • 控制缓冲
    • 线程安全:对文件加锁
  • 多进程编程(进程:正在运行的程序)
    • 进程体系:进程ID、父子进程关系
    • 运行新的进程:fork、exec
    • 终止进程
    • 等待子进程推出
    • 特殊进程:僵尸进程、孤儿进程、守护进程
  • 高级进程管理
    • 进程调度
    • 完全公平调度算法
    • 实时系统的原理与实现
  • 进程间通信IPC
    • 基于文件的简单进程间通信
    • 共享内存:互斥锁、条件变量
    • 管道:匿名管道与命名管道(理解为用管子将两个进程连接起来,将一个进程的输出作为另一个进程的输入)
    • 共享存储映射
    • 消息队列
    • 信号量
    • 套接字
  • 多线程编程
    • 线程与进程的对比(一个进程的生命周期类似于一个人的一生,多线程即一个进程同时处理多个任务,类似于一个人同时做多件事情)
    • 线程模型
    • 线程API
    • 线程模式
      • 一个连接对应一个线程
      • 事件驱动
    • 并发、并行与竞争
    • 同步:互斥与死锁
  • 线程池的实现
  • 信号
    • 基本信号管理
    • 发送信号
    • 信号集
    • 高级信号管理
  • 时间
    • 时间的表示
    • 睡眠与等待
    • 定时器
  • 终端IO编程
    • 终端驱动程序的模式
    • ncurses库的使用

4 网络编程内容

  • 计算机网络知识补充
    • 计算机网络概论
    • 应用层协议
    • 传输层协议:TCP与UDP
    • 网络层协议、数据链路层协议
  • TCP网络通信剖析
    • 三次握手与四次挥手
    • TCP流量控制
    • TCP拥塞避免
    • TCP状态转换
  • socket网络编程接口
    • socket的创建与关闭
    • Server端:bind、listen、accept
    • Client端:connect
    • 数据的发送与接收:send、recv
  • UDP编程实现
    • 在UDP中使用connect
  • 基于CS模型的TCP客户端与服务端设计与实现
  • P2P模型网络服务的实现
  • HTTP与BS模型
  • 简单的网络并发模型
  • 基于多进程与多线程
    • 简单的IO多路复用机制
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-07 14:03:25  更:2022-02-07 14:03:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:58:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码