调试Intel平台的启动脚本。对平台默认采用的EFI启动方式做如下的记录。
Modern-Robotics-位形空间
机器人在最基本的层面上是由刚体通过关节连接而成的,关节由驱动器驱动。基于上面的假设,这里将着重介绍如何表示一个机器人的位形(configuration),它是描述机器人中各点位置的指标。一般来说,平面刚体的位形可以用三个独立的变量(两个位置,一个姿态)来表示。空间刚体则需要6个独立的变量(三个位置,三个姿态)。这里变量的数量就是刚体的自由度(degree of freedom, dof)数,这也是刚体的位形空间(configuration space)的维度,其中位形空间为所有位形组成的空间。
通过github-action搭建博客自动部署
Github Actions是Github提供的一种CI/CD工具,这里介绍如何使用github action来实现项目的自动部署。
CSAPP-并发编程
当逻辑控制流在时间上是重叠的,那么我们就可以说它们是并发的(concurrent)。这种常见的现象称为并发(concurrency),出现在计算机系统的许多不同的层面上。硬件异常处理程序、进程和Linux信号处理程序都是大家熟悉的例子。
CSAPP-网络编程
网络应用随处可见。任何时候浏览Web、发送e-mail信息都是在使用网络应用程序。网络应用程序基本是基于相同的基本编程模型的,有着相似的整体逻辑结构,并且依赖相同的编程接口。
网络应用依赖许多在系统研究中已经学习过的概念。例如,进程、信号、字节顺序、内存映射以及动态内存分配,都扮演着重要的角色。还有一些新概念需要掌握。我们需要理解基本的*客户端-服务器编程模型,以及如何编写使用因特网提供的服务的客户端-服务器程序。
CSAPP-系统级IO
输入/输出(I/O)是在主存和外部设备(如磁盘驱动器,终端和网络)之间复制数据的过程。输入操作是从I/O设备复制数据到主存,而输出操作是从主存复制数据到I/O设备。
CSAPP-虚拟内存
一个系统的进程是与其他进程共享CPU和主存资源的。然而,共享主存会形成一些特殊的挑战。随着对CPU需求的增长,进程以某种合理的平滑方式慢下来。但是如果太多进程需要太多的内存,那么它们中的一些就根本无法运行。同时这种方式内存还十分容易被破坏。如果一个进程不小心写入另一个进程使用的内存,它可能以某种完全和程序逻辑无关的令人迷惑的方式失败。
CSAPP-异常控制流
从给处理器上电开始,知道断电,程序计数器会按照一定的顺序执行指令,从一条指令地址转移到另外一条指令地址的过渡过程称为*控制转移(control transfer)。这样的控制转移序列叫做处理器的控制流(flow of control 或者 control flow)*。
最简单的一种控制流是一个平滑流,即顺序执行的指令在内存中是相邻的。这种平滑流的突变通常是由跳转,调用和返回这样的一些熟悉的程序指令造成的。这样的一些指令都是必要的机制,使得程序能够对应程序变量表示的内部程序状态中的变化做出反应。
CSAPP-存储器的层次结构
到目前为止,在我们对系统的研究中,我们都是依赖于一个简单的计算机系统模型,CPU执行指令,而存储系统为CPU存放指令和数据。。在简单模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器的位置。这并没有正确反应现代系统实际的工作方式。
在现代的系统结构中,*存储器系统(memory system)是一个具有不同容量、成本和访问时间的存储设备的层次结构。这里CPU寄存器中保存着最常用的数据。最靠近CPU的小的、快速的高速缓存存储器(cache memory)*最为一部分存储在相对较慢的主存储器(main memory)中的数据和指令的缓冲区域。主存缓存存储在容量较大的、慢速磁盘上的数据,而这些磁盘又常常作为存储在通过网络连接的其他机器上的磁盘或者磁带上的数据缓冲区域。