基础架构开发-操作系统、编译器、云原生、嵌入式、ic

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

基础架构开发-操作系统、编译器、云原生、嵌入式、ic

操作系统

以C和Rust为主。
开发上一般是基于Linux开源版本进行重构或者二次开发也有为了学习或者科研的目的从头开始构建但依旧会借鉴Linux系统。

在操作系统之下有几种软件架构开发是比较重要的——编译器、云原生容器、数据库等。

编译器

编译器算是一种基于操作系统的软件开发任何高级开发语言都是基于编译器才能编译成机器码或者汇编给操作系统执行。

词法分析

先分类例如关键字、数值、字符、变量名/函数名、符号、运算符符号和运算符可能有重叠等再进行语法分析得出变量/函数/类/结构体的声明与定义、指针、赋值、判断、循环、函数。
之后对其上下文和指针在栈进行处理。
这个解析过程是使用正则进行大部分判断可以把输入都当作一个个单词来考虑例如int关键字正则就是int\s
函数式的判断例如void add(int a, int b) {}使用正则是void\s[^(_|[a-b]){1}a-bA-Z_0-9]*\([^\)]*\)\{[^\}]*\}
而数值要注意可以根据开头或者结尾区分二进制、四进制、八进制、十进制、十六进制等也要根据符号位区分正数、负数根据小数点区分整数、浮点数。
词法和语法分析其实与AST语法树生成有紧密联系只不过同时这种分析也要用于编辑器ide本身的即时提示和纠错。

AST语法树生成

一般是先中间后两边的树结构例如a=1的赋值语法父节点就是=左节点是a右节点是1同理扩展到函数定义void main(int num) {/
函数体/}中间是函数名左边是参数值右边是函数体且挂靠孙子节点为返回值类型。

语法优化

生成机器码

要点

  • 寄存器的分配通过变量-图的着色算法RCGRegister Conflict
    Graph来整理适用范围、冲突从而决定寄存器的分配高级点的系统有16~32个寄存器低级系统只有8个寄存器。
  • 指令码的生成查CPU手册
  • 特殊处理如循环需要考虑具体的机器码生成由于同一条指令最多只能使用3个寄存器因此会出现对寄存器的预分配导致循环体内的代码顺序与实际处理后的顺序不一致的情况会出现例如代码赋值是在真假判断里而生成后是在判断外面内存失去控制。

云原生容器开发

以C++、Rust和Golang较为常见。

一般遇到的岗位描述

基础架构小组致力于研发资源架构技术跟进最前沿的云原生网络场景参与云原生开源社区最前沿的技术
工作职责

  1. 负责云计算网络转发面架构与研发包括、容器网络、虚拟化、软硬件结合等云网络和云原生技术
  2. 负责云网络数据化、网络优化以及线上运维等工作
    任职要求
  3. 精通C/C++/Go中的一种或者多种高级语言熟悉一种或者多种脚本语言如shell、python等
  4. 深刻理解路由交换原理及二三层网络协议栈实现
  5. 深刻理解操作系统原理有较好的系统架构和设计能力
  6. 有多核平台下开发及性能调优经验如RDMA、DPDK等或有丰富的高性能服务器网络编程经验
  7. 喜欢挑战性的工作饱满的工作激情能承受工作压力有较强的自我驱动能力
    有以下经验者优先
  8. 有Kubernetes/Cilium/Calico/eBPF/CNI 等开源社区贡献者优先
  9. 有 NFV和VNF 经验者优先

RDMA、DPDK是什么东西

RDMARemote Direct Memory Access和DPDKData Plane Development Kit是在多核平台下进行开发和性能调优的两个重要技术。

RDMARDMA是一种网络通信技术它允许在不经过CPU的情况下直接在内存之间进行数据传输。RDMA技术通过绕过操作系统内核将数据传输的负载从CPU转移到网络适配器上从而提高了网络传输的效率和性能。RDMA常用于高性能计算、云计算和大数据等领域可以显著提升数据传输的速度和降低延迟。

DPDKDPDK是一个用于数据平面开发的软件开发工具包。它提供了一组优化的用户态库和驱动程序用于加速数据包处理和网络应用的性能。DPDK通过绕过操作系统内核直接在用户态进行数据包处理从而减少了系统调用和上下文切换的开销提高了网络应用的吞吐量和响应速度。DPDK常用于网络功能虚拟化NFV、软件定义网络SDN和高性能网络应用等领域。

这些技术在多核平台下的开发和性能调优中发挥了重要作用。它们可以提高系统的吞吐量、降低延迟并充分利用多核处理器的计算能力。然而使用这些技术需要深入理解底层硬件和网络协议并进行相应的编程和配置。在实际应用中需要根据具体的场景和需求选择合适的技术和优化策略以达到最佳的性能和效果。

NFV和VNF是什么

NFVNetwork Functions Virtualization和VNFVirtualized Network Function是与网络功能虚拟化相关的两个概念。

  1. NFVNetwork Functions
    VirtualizationNFV是一种网络架构和技术范式旨在将传统的专用网络设备如路由器、防火墙、负载均衡器等转变为基于通用服务器和虚拟化技术的软件实现。NFV的目标是通过将网络功能从专用硬件中解耦将其作为虚拟化的软件实例在通用服务器上运行从而提高网络的灵活性、可扩展性和成本效益。

  2. VNFVirtualized Network
    FunctionVNF是在NFV架构中运行的虚拟化网络功能。它代表了传统网络设备的虚拟化实例可以在通用服务器上以软件的形式运行。VNF可以包括各种网络功能如路由、防火墙、负载均衡、加密解密等。通过将这些网络功能虚拟化为软件实例VNF可以根据需要进行动态部署、配置和管理从而提供更高的灵活性和可定制性。

NFV和VNF的引入使得网络的部署和管理更加灵活和高效。它们可以帮助提供商在网络中快速部署和调整各种网络功能同时降低了硬件成本和维护成本。这些概念在网络领域中得到广泛应用特别是在云计算、软件定义网络SDN和网络运营商等领域。

RisingWave云原生存储引擎开发实践

云原生流式数据库特点是数据通过流的方式不断写入难点在于保留数据库特性例如一致性和持久化。
假设现在有以下表结构

# 出价表
CREATE TABLE Bid
(
    auction BIGINT COMMENT ‘拍品’,
    price   BIGINT COMMENT ‘单次出价价格’
);
# 拍品表
CREATE TABLE Auction
(
    id        BIGINT COMMENT ‘标识’,
    item_name VARCHAR COMMENT ‘拍品名称’
);

执行关联查询拿到拍品的一些信息和均价

SELECT A.id                            AS auction_id,
       A.item_name                     AS auction_item_name,
       COUNT(B.auction)                as bid_count,
       SUM(B.price) / COUNT(B.auction) as bid_avg_price
FROM Auction A
         JOIN Bid B
              ON A.id == B.auction
GROUP BY A.id, A.item_name;

若每张表都有几百万数据这么计算可能延迟性比较大更常见的是做成VIEW视图查询。
云原生中会将两个源数据这里是两张表进行雾化成视图的形式再进行聚合操作过程中视图会使用流式传输持续加入新的数据从而对下游形成新的聚合结果。
这个过程中会利用Hash对数据更新进行一个判断并且状态会使用一些key-value的抽象化存储模型。

需要完成状态一致性

  • source无界数据流实际是有界的利用这点是可以计算出是否一致
  • source从开头到任意范围内的数据位有界数据子集
  • 流式计算中所有的状态和source对应的范围是一致的
  • 系统初始化后则达到一致性的状态
  • 集群出错后可以恢复到一致性的状态
  • 查询和实际的source必须保持一致而不是source增加了新数据后查询依旧是旧的状态

这种状态流更新是利用Inject Barrier的方式将source切片计算Hash等值确认后再进行传输处理。
利用分布式模型分别处理这些切片这里再次利用Hash计算source主键来确保各自处理的切片段数据只被处理了一次而不会重复。
以上过程利用key-value将这些抽象化存储模型按照一定大小存储为本地持久化不可变的索引文件而为满足要求大小的新数据则继续保持创建为新的barrier。
这种方式就是可以依靠barrier作为边界来来维护一致性也可以从错误中快速恢复和完成异步检查也可以并行完成各种操作。

整体是分享+分布式集群方式嫁接在多个数据源之上统一调度完成计算而不需要用户关心多个数据源或者拆分的数据库如何聚合统计的问题。

单片机、嵌入式

一般是汇编、C/C++和Android的领地充斥各种大小型家电设备、电动玩具、无人机、车载系统、柜台、LED展板等。
嵌入式设备一般内存有限还可能是定制电路板有自己一套编程规则但大体都是用汇编或者基础C车载设备和柜台、电视盒子等智能家电则是Android制霸。
工作中需要大量与各种协议、雷达/摄像头等传感器打交道。
也有特化赛道就是智能机器人

雷达

机器人是通过各种感应器持续反馈进行雷达式检测周围环境从而完成2D乃至3D建模地图从而可以执行后续的路线规划和行进动作。

具体可以参考
扫地机器人的两种测距方式TOF激光雷达和三角测距

路线规划

如果不是完全动态的线路而是先建立好了地图则机器人需要通过gps等定位自己当前的位置从而按照预规划好的路线行进。
而一般机器人会搭载一个基础操作系统完成大部分与硬件交互和基础工作。如Autolabor的ROS系统
就可以完成“雷达-导航-地盘”的系统操作。

ROS编程教程

用ROS程序发布导航目标点

ic开发

ic即集成系统ic开发一般是指ic芯片开发也会分为前后端需要掌握底层软硬件知识是混合了电路设计和硬件编程的开发岗位。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6