分享此博文wordpress/百度推广优化排名怎么收费

分享此博文wordpress,百度推广优化排名怎么收费,邢台网站建设包括哪些,南京各区房价一览表程序 状态机 gdb 单步执行 状态迁移 状态里有什么?gdb 可以打印有一些特殊的状态迁移 硬件 状态机 指令执行 状态迁移 从 CPU Reset 开始执行 FirmwareFirmware 加载操作系统 (程序) 操作系统 状态机 (毫无疑问) 程序是一种真正意义上的 “数学严格” 的…

程序 = 状态机

  • gdb 单步执行 = 状态迁移
    • 状态里有什么?gdb 可以打印
    • 有一些特殊的状态迁移

硬件 = 状态机

  • 指令执行 = 状态迁移
    • 从 CPU Reset 开始执行 Firmware
    • Firmware 加载操作系统 (程序)

操作系统 = 状态机 (毫无疑问)


程序是一种真正意义上的 “数学严格” 的对象

  • Everything is a state machine
    • 程序 = 初始状态 + 迁移函数
    • 在这个视角下,程序和数学对象已经无限接近了:

Quick Quiz

  • 怎样给出 f 的定义? (《离散数学》课程内容)
  • 用数学严格的语言描述计算机世界中的对象
    • 《计算机科学的数学基础》
      • Proof Assistant (妄想)

为什么会有程序?

  • 是因为程序必须在无情执行指令的机器上执行
  • 只有程序才配得上它

程序天生是 “人类” 的,也是 “反人类” 的

  • 人类的一面:程序连接了人类世界需求
    • 语言模型有非常惊艳的编程能力
  • 反人类的一面:程序会在机器上执行
    • 语言模型还是经常有幻觉
      • (对程序的行为的 100% 掌控就是非常困难的)
  • “Maintainability”: 代码字面意义实际行为直接关联
  • 软件:物理世界实际的事 在 计算机世界的需求投影

所以我们要 尽量写出写 绝对正确的代码

  • 我们能证明程序的正确性吗?
int popcount(int x) {int count = 0;while (x) {x -= (x & -x);count++;}return count;
}
  • 我们还需要 “什么叫对”
  • Specification: 不 crash; 没有 UB; assert satisfy, ...
int popcount(int x) {int count = 0;while (x) {x -= (x & -x);count++;}return count;
}void popcount_spec() {for (uint64_t x = 0; x <= 0xffffffff; x++) {assert( ((x >> 0) & 1) + ((x >> 1) & 1) + ...((x >> 31) & 1) == popcount(x) );}

For all executions of ff, the specification is satisfied.

暴力枚举

  • 写一个 driver code,枚举所有的 xx,运行 f(x)f(x)
    • Testing: 选一些有代表性的

写出证明

  • 直接证明 “For all executions of ff, the specification is satisfied.”
    • 就和在《离散数学》课上的证明一样

“Proof Assistant” (Coq, Lean, ...)

  • 它会拒绝一切伪证
    • EMMS Lecture by Terence Tao


计算机辅助证明

这并不是一个新概念:我们不再用自然语言,而是用严格的、机器可检查的逻辑语言书写证明,核心技术是 揭示了数学证明与类型系统之间的深刻联系的 Curry-Howard Correspondence:

  1. 命题即类型:逻辑中的命题 (如 A→B) 对应函数类型 A→B。
  2. 证明即程序:命题的构造性证明过程对应该类型的一个具体程序(例如,一个实现 A→B的函数即为 “A 蕴含 B” 的证明)。

逻辑中的蕴含消除规则对应函数调用:若有一个类型为 A→B的函数 (证明),且输入类型 AA的值 (前提),则输出类型 B 的值 (结论)。而对于一阶谓词,例如 ∃x.P(x),就必须提供一个 x 的实例,这构成了基于构造的 “直觉逻辑” 的基础。

Proof assistant 是人工智能时代堪称完美的辅助工具:如果我们要信任 AI 产生的结果,可以让它们给出一个 proof assistant 认可的证明!延伸阅读:科普文章: “Formal verification doesn’t result in perfect code; it simply narrows the possibility for errors and vulnerabilities to creep in,” Parno says. “What makes the technique so attractive is that you push the uncertainty or scope of problems down to smaller and smaller windows”

<<正式的软件验证措施>>


4.2 数学视角的操作系统

程序 = 状态机

  • 状态
    • 栈帧中的变量和 PC ; 局部变量
  • 初始状态
    • main(argc, argv)
  • 状态迁移
    • 执行 “当前栈帧 PC” 的语句
    • 有一种特殊的语句:syscall
  • (我们不妨就认可状态机是可以 “数学定义” 的)

操作系统 = 状态机的管理者

  • 可以同时容纳多个 “程序状态机”
    • 程序内计算:选一个程序执行一步
    • 系统调用:创建新状态机、退出状态机、打印字符……

有了一个有趣的想法……

  • 能不能我们自己定义 “状态机”
    • 用我们喜欢的语言、喜欢的方式
    • 不要受限于 C、汇编……
  • 自己模拟状态机的执行
    • 不就有了一个 “玩具操作系统” 吗?

Life is short, you need Python!

def StateMachine():b = sys_read()if b == 0:sys_write('I got a zero.')else:sys_write('I got a one.')def main():sys_spawn(StateMachine)

操作系统中的对象

  • 状态机 (进程)
    • Python 代码
    • 初始时,仅有一个状态机 (main)
    • 允许执行计算或 read, write, spawn 系统调用
  • 一个进程间共享的 buffer (“设备”)

系统调用

  • read(): 返回随机的 0 或 1
  • write(s): 向 buffer 输出字符串 s
  • spawn(f): 创建一个可运行的状态机 f

难点是多状态机的管理

  • 如何在状态机之前来回切换
  • 实现我们单 CPU 上运行多个程序的效果?

一些途径

  • 用一个模拟器去解释执行语句 (2022 年的实现)
    • 创建多个模拟器对象单步执行 (J2ME KVM 就是如此)
    • “虚拟机” (QEMU TCG)
  • 是否有语言机制能 “暂存” 函数的运行状态,并且之后回复?
    • 有:Generators/Coroutines

30 行代码讲完 UNIX 系统的基本模型

  • 进程
  • 系统调用
  • 上下文切换
  • 调度

你会在 Linux Kernel 中看到 “类似” 的代码

  • “procs” → cpu->runqueue
  • “current” → current = (current_thread_info()->task)

借助 py 来看看

操作系统是最早的实用并发程序

  • 每个进程 (程序) 都是顺序状态机
    • 但发生中断/系统调用以后,操作系统代码直接执行
    • 如果有多个处理器 (或者允许此时切换到另一个程序执行),就有了并发

4.3 状态机模型与模型检查器

Mosaic Model and Checker

状态

  • 多个 “应用程序” 状态机
    • 当然,可以是模型

初始状态

  • 仅有一个 “main” 状态机
    • 这个状态机处于初始状态

迁移

  • 选择一个状态机执行一步
    • 就像我们在操作系统模型上看到的那样

计算机系统中的不确定性 (non-determinism)

程序中的不确定性都是操作系统给的

调度:状态机的选择不确定

  • 多处理器的 “选择” 是无法控制的
  • 操作系统可以主动随机选择状态机执行一步

I/O:系统外的输入不确定

  • read 返回的结果也有两种可能性

这样程序的执行就不是 “一条线” 了

  • 从初始状态出发,可能有多个可能的 “下一个状态”

这就是为什么 并发 程序难以预测了


Mosaic Model and Checker

看到并发的这个模型图,《离散数学》忽然更有用了

程序定义了状态机 G(V,E)

  • 加上一个起点 v0
  • 再加上 F⊆V是 “坏” (faulty) 的状态
    • 程序正确 ≡ 不存在从 v0到 v∈F 的路径

  • 也可以通过这个来理解 网络安全的 验证思路

还记得你们怎么在 G 里找路径吗

  • DFS/BFS 啊!
  • 恭喜你!你离图灵奖进了一步 (迈出了重要的第一步 Bush)
    • 要有一个疯狂的想法:软件是可以自动证明的
    • Turing Award Lecture: Model checking: algorithmic verification and debugging

插曲:如果你想得图灵奖?

需要找一个 tractable 的问题

  • F⊆V+ 暴力枚举 显然太 trivial 了
    • 我们有更好的方式表达规约 (temporal logic)
    • G(A→FB)
      • “如果 A 发生,则最终 B 会发生”
      • 哦!你需要构建一个好的逻辑系统
  • 提出一些有趣的检查算法

在软件系统里又是 useful

  • 要走很多弯路,而且今天 temporal logic(时序逻辑) 也没落了
  • 但 Verification(验证) 没有死,而且在 AI 时代肯定会走得更远

Putting Them Together

模型

  • 理论上,我们可以建模任何系统调用
  • 当然,我们选择建模最重要的那些
    • Three Easy Pieces!

检查器

  • 最简单的 BFS 就行 (只要能获得状态机的状态)

可视化

  • 我们就是绘制一个顶点是状态的图 G(V,E)

于是,我们有了一个更复杂的“玩具”

模块

系统调用

行为

基础

choose(xs)

返回一个 xs 中的随机的选择

基础

write(s)

向调试终端输出字符串 s

基础

sched()

切换到随机的线程/进程执行

虚拟化

fork()

创建当前状态机的完整复制

并发

spawn(fn)

创建从 fn 开始执行的线程

持久化

bread(k)

读取虚拟设磁盘块 kk 的数据

持久化

bwrite(k, v)

向虚拟磁盘块 kk 写入数据 vv

持久化

sync()

将所有向虚拟磁盘的数据写入落盘

持久化

crash()

模拟系统崩溃


操作系统模型和检查器

我们可以把 “状态机的管理者” 这个思想在 Python 世界中构造出来:

  • 我们用 Python 的函数来声明状态机,并且实现状态空间的遍历。
  • 所有的实现都是 “最简” 的——但它真的能用来澄清 Three Easy Pieces 里的概念:Concurrency, Virtualization, 和 Persistence。

下面是我们绘制一个 “Hello World” 状态空间的例子。Hello 会调用一个有趣的系统调用 fork,它的行为是复制状态机的当前状态:

  • 将会在这个专栏里,同时分析模型和真实操作系统 (Linux) 系统调用的行为,在概念 (抽象) 和具体 (实现) 层面理解操作系统。

4.4 总结

Take-away Messages: 程序就是状态机;状态机可以用程序表示。因此:我们可以用更 “简单” 的方式 (例如 Python) 描述状态机、建模操作系统 的应用,并且实现操作系统的可执行模型。而一旦把操作系统、应用程序当做 “数学对象” 处理,那么我们图论、数理逻辑中的工具就能被应用于处理程序,甚至可以用图遍历的方法证明程序的正确性。

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

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

相关文章

互联网的“神经中枢”域名根服务器是如何演变的?

互联网如同一条隐形的纽带&#xff0c;将全球数十亿人的生活和工作紧密相连。而在这庞大的网络体系中&#xff0c;域名根服务器则是支撑其平稳运行的“神经中枢”。那么域名根服务器是如何演变的呢&#xff1f; 一、域名根服务器互联网的“地址簿” 想象一下&#xff0c;当你…

6.2、认证主要产品与应用

目录 认证主要产品认证产品主要技术指标认证技术应用认证技术应用 - 校园网应用认证技术应用 - 网络路由认证认证技术应用 - 用户登录设备认证技术应用 - 人脸识别门禁与eID 认证主要产品 应用认证产品主要形态有三种&#xff0c;硬件模式、软件模式和软硬相结合。硬件比如说认…

一套SaaS多租户医疗云his源码,基于云计算的医院信息管理系统(云HIS)

基于云计算的医院信息管理系统&#xff08;云HIS&#xff09;&#xff0c;通过SaaS服务模式提供。这种云HIS系统设计考虑了模板化、配置化、智能化和可扩展性&#xff0c;覆盖了基层医疗机构的核心工作流程&#xff0c;并且能够与监管系统无缝对接&#xff0c;满足未来的扩展需…

基于杜鹃鸟鲶鱼优化(Cuckoo Catfish Optimizer,CCO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、杜鹃鸟鲶鱼优化算法 杜鹃鸟鲶鱼优化&#xff08;Cuckoo Catfish Optimizer&#xff0c;CCO&#xff09;算法模拟了杜鹃鸟鲶鱼的搜索、捕食和寄生慈鲷行为。该算法的早期迭代侧重于执行多维包络搜索策略和压缩空间策略&#xff0c;并结合辅助搜索策略来有效限制慈鳔的逃逸空…

FPGA_DDS_IP核

接下来对FPGA的DDS的ip核进行学习。 首先对DDS需要有些了解 DDS信号发生器采用直接数字频率合成&#xff08;Direct Digital Synthesis&#xff0c;简称DDS&#xff09;技术&#xff0c;简单来说就是 需要一个系统频率和一个输入的数字数据 &#xff0c;用这个系统频率计算出…

libpng-1.6.47-windows编译

本文操作按照《c&c开源库编译指南》中内容规范编写&#xff0c;编译环境配置、工具下载、目录规划&#xff0c;及更多其他开源库编译方法请参考该文章。 c&c开源库编译指南&#xff1a;https://blog.csdn.net/binary0006/article/details/144086155 本文章中的源代码已…

linux安装配置Nacos

环境&#xff1a;centos7、mysql8.0、nacos2.5.1 1.下载Nacos安装包 https://github.com/alibaba/nacos/releases?spm5238cd80.72a042d5.0.0.46bacd36C42EfG 我这边选的是最新的稳定版本2.5.1 2. 放到 linux 服务器中解压安装 解压 tar -xvf nacos-server-2.5.1.tar.gz 进入…

元宇宙浪潮下,数字孪生如何“乘风破浪”?

在当今科技飞速发展的时代&#xff0c;元宇宙的概念如同一颗璀璨的新星&#xff0c;吸引了全球的目光。元宇宙被描绘为一个平行于现实世界、又与现实世界相互影响且始终在线的虚拟空间&#xff0c;它整合了多种前沿技术&#xff0c;为人们带来沉浸式的交互体验。而数字孪生&…

[Effective C++]条款24:若所有参数皆需类型转换,请为此采用non-menber函数

. 1、操作符重载&隐式类型转换 C中&#xff0c;操作符重载可以通过成员函数或非成员函数来实现。当操作符重载是成员函数时&#xff0c;左操作数必须是该类的对象。如果左操作数不是该类的对象&#xff0c;而是需要进行隐式转换的类型&#xff0c;编译器将无法找到匹配的成…

C++———— Vector

一、vector的介绍及使用 1.1 vector的介绍 1.2 vector 的使用 1.21 vector的定义 演示&#xff1a; 1.22 vector iterator 的使用 1.beginend 主要作用&#xff1a;获取第一个数据位置的迭代器和最后一个数据的下一个位置的迭代器。 演示&#xff1a; 2.rbeginrend 主要…

STL入门

STL入门 作者&#xff1a;blue 时间&#xff1a;2024.3 文章目录 STL入门0.概述1.pair2.set(集合)3.vector4.string字符串类型5.queue&#xff0c;deque&#xff0c;priority_queue6.list的用法 0.概述 本文讨论部分常用的STL的运用 1.pair pair是将2个数据组合成一组数据…

从声源定位(DOA)算法仿真到工程源码实现-第八节

一、概述 本节我们记录在respeaker core v2 开发板上部署一个完整的声源定位(DOA)系统&#xff0c;演示可以看第一节中的视频。整个模块可以分为三部分&#xff0c;第一部分为控制开发板上的LED灯显示&#xff0c;这样可以实时的测试算法的效果&#xff1b;第二部分为从ALSA上取…

Java后端API限流秘籍:高并发的防护伞与实战指南

目录导航 📜 🛡️ 为什么需要API限流?🧠 主流限流算法大解析👩‍💻 阿里巴巴的限流实践📏 四大黄金定律🤼 限流策略组合拳🏆 限流场景实战💻 技术实现方案🌟 最佳实践分享📈 结语与展望📚 推荐阅读 1. 🛡️ 为什么需要API限流? 在高并发环境中,未…

【计算机网络】计算机网络协议、接口与服务全面解析——结合生活化案例与图文详解

协议、接口与服务 导读一、协议1.1 定义1.2 组成 二、接口三、服务3.1 定义3.2 服务与协议的区别3.3 分类3.3.1 面向连接服务于无连接服务3.3.2 可靠服务和不可靠服务3.3.3 有应答服务和无应答服务 结语 导读 大家好&#xff0c;很高兴又和大家见面啦&#xff01;&#xff01;…

vue数字公式篇 Tinymce结合使用(二)

继上一篇的数字公式 &#xff0c; 这次的功能是将公式能插入编辑器以及修改 1、Tinymce 自定义 LateX 按钮&#xff0c;打开公式编辑器窗口 LateX.vue window.tinymce.init({...//基础配置这里我就不写了setup(ed) {//自定义 LateX 按钮ed.ui.registry.addButton(LateX, {text:…

数据结构初阶-二叉树链式

目录 1.概念与结构 2.二叉数链式的实现 2.1遍历规则 2.2申请内存空间 2.3手动构建一棵二叉树 2.4二叉树结点的个数 2.5二叉树叶子结点的个数 2.6二叉树第K层结点个数 2.7二叉树的高度 2.8二叉树中查找值为x的结点 2.9二叉树的销毁 3.层序遍历 3.1概念 3.2层序遍历…

鸿蒙HarmonyOS NEXT之无感监听

鸿蒙中存在一些无感监听&#xff0c;这些监听经过系统API封装使用很简单&#xff0c;但是对实际业务开发中有很重要&#xff0c;例如埋点业务、数据统计、行为上报、切面拦截等。 Navigation的页面切换 在鸿蒙中Navigation被用来作为路由栈进行页面跳转&#xff0c;如果你想知…

批量处理word里面表格的空白行

1&#xff0c;随便打开一个word文档。 2&#xff0c;按下Alt F11 VBA编辑器,在左侧的「工程资源管理器」窗口中找到Normal 项目,右键选择插入->模块。 弹出一下弹窗 3&#xff0c;输入一下代码 代码&#xff1a; Sub RemoveEmptyTableRows()Dim tbl As TableDim row As R…

3ds Max 2026 新功能全面解析

一、视口性能与交互体验升级 1. Hydra 2.0 视口渲染引擎 3ds Max 2026 引入了 Hydra 2.0&#xff0c;大幅优化了视口渲染性能&#xff0c;尤其是在处理复杂场景和高质量实时预览时&#xff0c;流畅度提升显著。 支持USD&#xff08;通用场景描述&#xff09;格式&#xff0c…

JVM垃圾回收笔记02-垃圾回收器

文章目录 前言1.串行(Serial 收集器/Serial Old 收集器)Serial 收集器Serial Old 收集器相关参数-XX:UseSerialGC 2.吞吐量优先(Parallel Scavenge 收集器/Parallel Old 收集器)Parallel Scavenge 收集器Parallel Old 收集器相关参数-XX:UseParallelGC ~ -XX:UseParallelOldGC-…