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

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

  • 操作系统
  • 编译器
    • 词法分析
    • AST语法树生成
    • 语法优化
    • 生成机器码
  • 云原生容器开发
    • 一般遇到的岗位描述
    • RDMA、DPDK是什么东西
    • NFV和VNF是什么
    • RisingWave云原生存储引擎开发实践
  • 单片机、嵌入式
    • 雷达
    • 路线规划
  • 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) {/
函数体/},中间是函数名,左边是参数值,右边是函数体,且挂靠孙子节点为返回值类型。

语法优化

生成机器码

要点:

  • 寄存器的分配,通过变量-图的着色算法RCG(Register 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是什么东西

RDMA(Remote Direct Memory Access)和DPDK(Data Plane Development Kit)是在多核平台下进行开发和性能调优的两个重要技术。

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

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

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

NFV和VNF是什么

NFV(Network Functions Virtualization)和VNF(Virtualized Network Function)是与网络功能虚拟化相关的两个概念。

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

  2. VNF(Virtualized Network
    Function):VNF是在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 AJOIN Bid BON 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芯片开发,也会分为前后端,需要掌握底层软硬件知识,是混合了电路设计和硬件编程的开发岗位。

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

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

相关文章

云原生Docker镜像管理

目录 Docker 概述 Docker是什么 Docker的设计宗旨 Docker的特性 Docker的特性 Docker与虚拟机的区别 容器在内核中支持2种重要技术 Linux 的namespace (命名空间) Docker核心概念 安装 Docker Docker 镜像操作 #搜索镜像 获取镜像 镜像加速下…

计算机竞赛YOLOv7 目标检测网络解读

文章目录 0 前言1 yolov7的整体结构2 关键点 - backbone关键点 - head3 训练4 使用效果5 最后 0 前言 世界变化太快,YOLOv6还没用熟YOLOv7就来了,如果有同学的毕设项目想用上最新的技术,不妨看看学长的这篇文章,学长带大家简单的…

2023年软考网工上半年下午真题

试题一: 阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。 [说明] 某企业办公楼网络拓扑如图1-1所示。该网络中交换机Switch1-Switch 4均是二层设备,分布在办公楼的各层,上联采用干兆光纤。核心交换…

Jenkins对应java版本

官网地址:Java Support Policy 运行jenkins时,需要使用下列Java版本:

Linux 基本指令及 Xshell 常用热键操作

文章目录 Linux 基本指令入门指令文件/目录 相关文件操作文件基本操作文件处理文件压缩/解压压缩/解压 为 .zip 文件解压/压缩 为.tgz 文件 时间相关指令 Xshell 常用热键Linux系统关机 windows 和 Linux 文件互传/Linux 系统之间文件互传Linux 传入WindowsWindows 传入Linuxli…

【m98】视频帧的 jitterbuffer 1:

VCMJitterBuffer D:\XTRANS\m98_rtc\rtc-webrtc\src\modules\video_coding\jitter_buffer.h使用2个map和一个list管理VCMFrameBuffer 指针对象:UnorderedFrameList free_frames_ RTC_GUARDED_BY(mutex_);FrameList decodable_frames_ RTC_GUARDED_BY(mutex_);FrameList incomp…

导致 JVM 内存泄露的 ThreadLocal 详解

为什么要有 ThreadLocal 当我们在学习JDBC时获取数据库连接时,每次CRUD的时候都需要再一次的获取连接对象,并把我们的sql交给连接对象实现操作。 在实际的工作中,我们不会每次执行 SQL 语句时临时去建立连接,而是会借助数据库连接…

扩展表空间(PDB数据库):add_tbs.sh

#!/bin/bash source ~/.bash_profile export pdb_namepdb #PDB名称 export ts_namedefault_tbs #表空间 export inc_size_gb1 #需要增加的GB数,单位G #单次增长上限 inc_size_mb_threshold$((32 * 1024)) inc_size_mb$((${inc_size_gb} * 1024)) pdb_name$(ec…

学习css 伪类:has

学习抖音: 渡一前端提薪课 首先我们看下:has(selector)是什么 匹配包含(相对于 selector 的 :scope)指定选择器的元素。可以认为 selector 的前面有一个看不见的 :scope 伪类。它的强大之处是,可以实现父选择器和前面兄弟选择器…

常见工具指令【Vim | GIT | ZIP | UNZIP | IDEA】

VIM 快捷键说明Ctrl U (up)向上翻动半页Ctrl B (back)向上翻动一页Ctrl D (down)向下翻页半页Ctrl F (forward)向下翻动一页 GIT 指令解释git init 使用指定目录作为Git仓库git add filename向资源库添加文件filenamegit rm file从资源库中删除文件git branch 分支名称创…

linux系统部署jar脚本编译

一 shell脚本 #启动参数 START_OPTS=$3#AppName=biz-score-service ##!/bin/bash SpringBoot=$2#JVM参数 JVM_OPTS="-Dname=$SpringBoot -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=512M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX…

TWDS车辆轮对故障、尺寸动态检测系统

随着我国铁路的建设发展,客运专线网络形成,既有铁路的货运能力得到释放,货物运输向重载方向发展,运输组织呈现长交路、运转周期短、编组固定的特点。 跟踪调查表明重载车辆车轮磨耗较普通车辆更为严重。大秦线c80型车辆在不到1个…

sudo -i与sudo su的区别

sudo -i 和 sudo su 都用于以超级用户(root)的身份运行命令,但两者有以下区别: 参数: sudo -i 中的 -i 表示以交互式方式登录为超级用户,会执行超级用户的登录脚本(例如.bashrc)&…

mac(M1)安装anaconda3

首先下载 然后正常安装即可,之所以我现在测试了anaconda,因为我发现miniconda后,jupyter notebook的安装就出现问题,所以就直接卸载miniconda,而直接安装anaconda了 (base) yxkbogon ~ % pip list Package …

代码规范问题,“static“ base class members should not be accessed via derived types

代码规范问题,“static” base class members should not be accessed via derived types 例如在使用fastjson时 LinkedHashMap days JSONObject.parseObject(JSONObject.toJSONString(data.get(CommonConstant.AQIW)),LinkedHashMap.class);这里使用了JSONObject来调用parse…

汽车一键启动点火开关按键一键启动按钮型号规格

汽车点火开关/移动管家一键启动按键/汽车改装引擎启动按钮型号:YD828溥款开关 一键启动按钮(适用于配套启动主机使用或原车一键启动开关更换) 1.适合配套专用板板安装 2.开孔器开孔安装 3.原车钥匙位安装 外观:黑色 按钮上有3种不…

基于位置的前馈神经网络

目录 1、什么是前馈全连接层 2、前馈全连接层的作用 3、代码实现FFN 1、什么是前馈全连接层 在Transformers中前馈全连接层就是具有两层线性层的全连接网络 2、前馈全连接层的作用 考虑注意力机制可能对复杂过程的拟合程度不够,通过增加家两层网络来增强模型的能…

MVCC和BufferPool缓存机制

文章目录 1. MVCC多版本并发控制机制2. BufferPool缓存机制 1. MVCC多版本并发控制机制 Mysql可以在可重复读隔离级别下可以保证事务较高的隔离性,这个隔离性是由MVCC机制来保证的,对一行数据的读和写两个操作默认是不会通过加锁互斥来保证隔离性&#…

机器学习与模式识别作业----决策树属性划分计算

文章目录 1.决策树划分原理1.1.特征选择1--信息增益1.2.特征选择2--信息增益比1.3.特征选择3--基尼系数 2.决策树属性划分计算题2.1.信息增益计算2.2.1.属性1的信息增益计算2.2.2.属性2的信息增益计算2.2.3.属性信息增益比较 2.2.信息增益比计算2.3.基尼系数计算 1.决策树划分原…

设计模式 - 解释器模式

目录 一. 前言 二. 实现 三. 优缺点 一. 前言 解释器模式(Interpreter Pattern)指给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子,属于行为型设计模式。是…