摘要:
操作系统:Ubuntu 16.04 32位 虚拟机:VMware 模拟器:QEMU 之前有一台centos 64位虚拟机,使用源码安装配置环境,出了一些列问题,最终环境都已经配好了,也能够在qemu上运行Xv6,但是想跟着lab做实验的时候,各种编译器内部错误,实在懒得折腾这些了,于是决定新安装一台 阅读全文
posted @ 2019-10-30 22:38
AlexAlex
阅读(3662)
评论(1)
推荐(0)
摘要:
昨天接到同事给安排的新任务,测试系统性能;网上查了些资料,目测perf功能很强大,而且是内核源码自带的,编译安装即可使用;看了下自己的虚拟机,没有内核源码,好吧,装一个; 查看一下系统版本: 1 #cat /etc/redhat-release 2 CentOS Linux release 7.5. 阅读全文
posted @ 2019-10-30 22:35
AlexAlex
阅读(12473)
评论(0)
推荐(0)
摘要:
算法比较 稳定性 插入排序,冒泡排序,二路归并排序和基数排序是稳定的排序方法; 选择排序,希尔排序,快速排序和堆排序是不稳定的排序方法; 复杂度 排序方法 平均时间 最坏情况 辅助空间 插入排序 O(n^2) O(n^2) O(1) 希尔排序 O(nlogn) O(nlogn) O(1) 冒泡排序 阅读全文
posted @ 2019-10-30 22:29
AlexAlex
阅读(220)
评论(0)
推荐(0)
摘要:
每次按下键盘的时候,总觉得自己连一句话都说不明白; 18年勉强也算是我人生中的一次转折了,这一年,经历了很多,也得到了很多; 换工作; 换了工作,转到一个未接触到的领域; 之前跟朋友一起做电商平台,一直很累,付出了非常多的努力,然而收获平平,甚至很多时候,我会怀疑自己为什么要这么努力对待眼前的工作; 阅读全文
posted @ 2019-10-30 19:45
AlexAlex
阅读(233)
评论(0)
推荐(0)
摘要:
最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个; 两个问题: C语言结构体本身没有元数据,这也就没法在生成过程中自动分析类型进行处理,所以,需要生成对应结构体的元数据信息,根据元数据完成对结构 阅读全文
posted @ 2019-10-30 19:44
AlexAlex
阅读(3248)
评论(2)
推荐(0)
摘要:
1 int snprintf(char *str, size_t size, const char *format, ...); 从用snprintf开始,size参数一直传的都是buff_size-1,像这样: 1 int main() 2 { 3 char *a = "hello"; 4 5 c 阅读全文
posted @ 2019-10-30 19:43
AlexAlex
阅读(503)
评论(0)
推荐(0)
摘要:
问题 一段老代码,两个线程,一个线程调用sem_wait等待信号量,另外一个线程在某失败分支会调用sem_init清信号量,结果导致sem_wait线程无法被唤醒; 分析 Linux manpage 从描述中可见,初始化一个已经被初始化的信号量会导致未定义行为; 1 NAME 2 sem_init 阅读全文
posted @ 2019-10-30 19:41
AlexAlex
阅读(1765)
评论(0)
推荐(0)
摘要:
计划没有变化快,周一计划的任务几乎没怎么做,时间完全交给了一个BUG; 最近大家在做新主板的功能,同事说DeviceNet不通,尽管我对DeviceNet一点不懂,不过好歹之前测过CAN模块在新主板上的功能,于是负责起了这个bug; 电脑连上CAN分析仪,包都看不到,上哪通去?搞硬件的同时出差了,没 阅读全文
posted @ 2019-10-30 19:40
AlexAlex
阅读(193)
评论(0)
推荐(0)
摘要:
这周六没去加班做新人作业,因为新人作业已经做完了;开心! 孩子晚上十点多才睡,这才到了真正的自由时间,无人打扰,可以安心学习; 晚上七点多,一个滴滴的朋友给我发了一个问题,向我咨询下这个问题的思路;大概跟他分析了一下问题的可疑点;十点多,他跟我说,我的思路是对的,偶现问题变成了必现,心情大好;然后聊 阅读全文
posted @ 2019-10-30 19:39
AlexAlex
阅读(479)
评论(0)
推荐(1)
摘要:
问题 做了个测试板子的程序,里面有一项写铁电的功能,要求写入之后立即断电,重启后校验数据准确性;铁电设计是通过内存地址直接映射的,于是,使用mmap直接映射了/dev/mem文件,自然地写入之后使用msync进行同步,最后使用munmap解映射; 然而,当我运行这段程序的时候,发现msync的MS_ 阅读全文
posted @ 2019-10-30 19:36
AlexAlex
阅读(2099)
评论(0)
推荐(0)
摘要:
疑问 两个线程分别有不同的调度策略,一个SCHED_FIFO,一个SCHED_OTHER,按照之前的理解,SCHED_FIFO实时线程一定会占用CPU一直运行,导致SCHED_OTHER的普通线程得不到CPU,事实是这样么? 验证 写了一小段代码,一个是验证SCHED_FIFO的高优先级线程会不会抢 阅读全文
posted @ 2019-10-30 19:32
AlexAlex
阅读(8689)
评论(0)
推荐(2)
摘要:
先抱怨一波,大国庆节的放假前一天的下班前15分钟,通知让我加班,因为一个Redis的bug,而这个bug我在1个半小时之前刚听说了个大概,心里很不情愿; 好了,说正事; 问题现象: bug是这样的,两个线程同时请求Redis服务器,但是只有一个线程收到了回复,另一个线程卡死; 拿到这个问题,我先是想 阅读全文
posted @ 2019-10-30 18:07
AlexAlex
阅读(1518)
评论(0)
推荐(0)
摘要:
前几天测试软件在多核上的性能,需要按照比例吃各个CPU,查了查资料,撸了下面一小段代码; 1 #include <unistd.h> 2 #include <stdlib.h> 3 #include <stdio.h> 4 #include <time.h> 5 6 #define __USE_GN 阅读全文
posted @ 2019-10-30 17:59
AlexAlex
阅读(282)
评论(0)
推荐(0)
摘要:
以运动学第一篇文章中的坐标系和DH参数表为基础,可以对其反解进行推导,具体过程如下: 因公式太多,无法直接复制粘贴,故生成图片; 阅读全文
posted @ 2019-10-30 17:58
AlexAlex
阅读(1511)
评论(0)
推荐(0)
摘要:
连杆变换矩阵 概括起来,求正解即是求坐标系{6}相对于坐标系{0}的变换,这个问题可以分解成6个子问题,即确定6个坐标系{i}相对于坐标系{i-1}的表示,每个变换过程又包含4个子过程,即绕X(i-1)轴旋转alpha(i-1),沿X(i-1)轴平移a(i-1),绕Z(i)轴旋转theta(i),沿 阅读全文
posted @ 2019-10-30 17:57
AlexAlex
阅读(2065)
评论(0)
推荐(0)
摘要:
刚来新公司不久,部门给安排了新人作业,我被分到的任务是求标准6轴机器人的正反解,以及利用就近原则选择最优解。从今天开始,逐步将这部分内容总结出来; 本文以及后续文章均使用改进DH法; 连杆坐标系: 坐标系的建立方法(摘自机器人学导论): 找出各个关节轴,并标出这些轴线的延长线; 找出关节轴i和i+1 阅读全文
posted @ 2019-10-30 17:55
AlexAlex
阅读(6026)
评论(0)
推荐(0)
摘要:
快两个月没写博客了; 这两个月做了一个决定,以后一直在沈阳生活了; 全家户口也都迁了过来; 工作上顺利入职了新松; 人到中年,迷茫、焦虑,总归要做一个选择; 既来之,则安之; 好好工作,好好生活; 阅读全文
posted @ 2019-10-30 15:01
AlexAlex
阅读(192)
评论(0)
推荐(0)
摘要:
晚上媳妇儿整理儿子照片,整理了一部分说太累了;问她还有多少没整理,说还有几十个G…问怎么整理,说把图片根据生日按月份分开;我一听,明显是个小脚本就搞定的事情;虽然没怎么太写过python,不过撸起袖子就是干;一边查一边写,轻松搞定;一条命令,几十个G图片一会儿就分好了;媳妇儿很开心; 会写代码的意义 阅读全文
posted @ 2019-10-30 15:00
AlexAlex
阅读(295)
评论(0)
推荐(1)
摘要:
阅读全文
posted @ 2019-10-30 14:58
AlexAlex
阅读(892)
评论(0)
推荐(1)
摘要:
从决定把学习人工智能作为第二方向之后,到现在已经过去一个多月了,做的唯一的工作就是补数学;白天工作,晚上看几个小时数学,算是把微积分看完了,很多习题也刷了几遍;这么多年没碰数学,从开始学数学的恐惧,到现在的平常心,变化很大;有些事情看着困难,一旦动起手来,持续些日子,总归还是有很大收获; 时间真快, 阅读全文
posted @ 2019-10-30 14:55
AlexAlex
阅读(171)
评论(0)
推荐(1)
摘要:
即使pthead_cond_wait()和pthread_cond_timewait()没有错误返回,等待的条件也可能是假的;即使pthread_cond_timewait()返回了超时错误,关联的条件也可能是真的;因为超时和条件改变之间有时间窗口; 在有些实现中,特别是多处理器环境,信号唤醒可能会 阅读全文
posted @ 2019-10-30 14:54
AlexAlex
阅读(367)
评论(0)
推荐(0)
摘要:
在main中创建线程,我们称main线程为主线程,新建线程为子线程(其实没有什么主线程和子线程的父子概念,它们是平行的,为了好理解这样称呼),如果子线程内部执行相对比较耗时的操作,主线程执行的快,而且没有等待子线程执行完毕,此时主线程退出,进程被销毁,就会导致子线程无法执行完毕; 可以采用如下方式确 阅读全文
posted @ 2019-10-30 14:52
AlexAlex
阅读(676)
评论(0)
推荐(0)
摘要:
在信号产生和传递之间有一段时间间隔,称为信号是未决的; 进程可以设置阻塞信号传递;如果进程产生了一个阻塞的信号,并且对该信号的动作是系统默认或者捕捉该信号,则该进程保持此信号为未决状态,直到该进程对此信号接触阻塞,或者将对该信号的动作改为忽略;内核在传递一个原来被阻塞的信号给进程时(而不是产生该信号 阅读全文
posted @ 2019-10-30 14:51
AlexAlex
阅读(190)
评论(0)
推荐(0)
摘要:
SIGCHLD信号是当子进程终止时向父进程发送的信号;它的语义如下: 如果进程明确的将该信号设置为SIG_IGN,则调用进程不会产生僵尸进程;这种情况下,wait是等不到给子进程收尸的,所以wait阻塞到所有子进程终止后,返回-1,并且将errno设置为ECHILD; 如果进程没有明确的设置捕获该信 阅读全文
posted @ 2019-10-30 13:04
AlexAlex
阅读(273)
评论(0)
推荐(0)
摘要:
重入时间点 进程捕捉到信号并对其进行处理时,进程正在执行的正常指令序列就会被信号处理程序临时中断,它首先执行该信号粗合理程序中的指令;如果从信号处理程序返回,则继续执行捕捉到信号时进程正在执行的正常指令序列; ps:如果了解驱动,上面这段信号打断流程与中断打断进程上下文很类似; 不可重入函数 对于有 阅读全文
posted @ 2019-10-30 13:02
AlexAlex
阅读(324)
评论(0)
推荐(0)
摘要:
如果进程在执行一个低速系统调用而阻塞期间捕获到一个信号,则该系统调用就会被中断而不再继续执行;该系统调用返回出错,其errno设置为EINTR; 系统将系统调用分成两类:低速系统调用和其他系统调用;低速系统调用是可能会使进程永远阻塞的一类系统调用,包括: 1. 如果某类型文件(如读管道,终端设备,网 阅读全文
posted @ 2019-10-30 08:31
AlexAlex
阅读(179)
评论(0)
推荐(0)
摘要:
下面这几个函数定义,每次看到都会纠结一阵子,奇怪的是为什么没有参数? 1 #define SIG_ERR (void (*)())-1 2 #define SIG_DFL (void (*)())0 3 #define SIG_IGN (void (*)())1 函数signal的回调明明是下面这样 阅读全文
posted @ 2019-10-30 08:28
AlexAlex
阅读(497)
评论(0)
推荐(0)
摘要:
进程: 是系统中一段程序执行的实体,也是资源分配和调度的基本单位; 进程组: 为了方便管理多个进程,可以将多个进程加入到一个进程组内; 每个进程都属于一个进程组,但是同一个进程组内可以有多个进程; 每个进程组有一个组长ID,进程组ID等于其进程ID; 进程组的存在周期与组长无关,即使进程组长已经停止 阅读全文
posted @ 2019-10-30 08:24
AlexAlex
阅读(215)
评论(0)
推荐(0)
摘要:
link–用于创建一个现有文件的链接;实际上是新建一个目录项,指向当前文件的i节点; unlink–用于删除一个现有文件的连接;实际上是对引用i节点的目录项进行删除,并且对链接计数-1;系统会检查文件被进程的引用计数(如被进程打开,引用计数会+1,关闭则-1),如果该引用计数为0,并且链接计数为0, 阅读全文
posted @ 2019-10-30 08:19
AlexAlex
阅读(365)
评论(0)
推荐(0)
摘要:
umask函数设置当前进程的权限为屏蔽字;系统会有一个默认的屏蔽字,为了确保创建文件具有的权限位成功被设置,需要使用umask将屏蔽字置0; 系统屏蔽字用shell查看,比如得到如下结果,其为八进制表示形式,以0开头;这个屏蔽字表示屏蔽掉了组的写和其他的写权限; 1 0022 下面的例子很好的说明了 阅读全文
posted @ 2019-10-30 08:15
AlexAlex
阅读(182)
评论(0)
推荐(0)
摘要:
文件,目录,权限 1. 用名称打开任一个类型的文件时,对该名字中包含的每一个目录,包括它可能隐含的当前工作目录都应该具有执行权限;这就是目录执行权限通常被称为搜索位的原因; 例如:为了打开文件/usr/include/stdio.h,需要对目录/、/usr、/usr/include具有执行权限;而具 阅读全文
posted @ 2019-10-30 08:12
AlexAlex
阅读(154)
评论(0)
推荐(0)
摘要:
fcntl(File Control)-文件控制 ioctl(In/Out Control)-I/O控制 1. fcntl作用于文件,提供对文件的基础控制;ioctl作用于文件和设备对象,一般用来向设备发送命令,或者控制设备属性; 2. fcntl是系统预先定义好的命令选项,不能自定义;ioctl可 阅读全文
posted @ 2019-10-30 08:11
AlexAlex
阅读(572)
评论(0)
推荐(0)
摘要:
下图为调用dup之后的文件指针状态,包含如下信息: 1. dup选择了一个最小的未使用的描述符3; 2. dup(1)之后,描述符1和描述符3指向同一个文件表项; 3. dup(1)的返回值即为复制得到的描述符3; 4. 补充dup2,dup2可以指定复制的目标描述符,如果该描述符与被复制的描述符相 阅读全文
posted @ 2019-10-30 08:09
AlexAlex
阅读(267)
评论(0)
推荐(0)
摘要:
返回值: 成功返回读到的字节数,如果达到文件尾,则返回0;注意:如果有数据第一次读取会返回全部读到的字节数,下一次读取才会返回0; 出错返回-1; 返回值少于要求读取字节数的情况: 1. 读取普通文件时,在读到要去字节数之前达到了文件尾,如:在达到文件尾之前有30个字节,而要求读取100个字节,则r 阅读全文
posted @ 2019-10-30 08:08
AlexAlex
阅读(307)
评论(0)
推荐(0)
摘要:
lseek使用的注意事项: 1. lseek的返回值,成功返回新的文件偏移量,失败返回-1,不能用<0判断;因为文件偏移量可能是正的,也可能是负的,所以不能使用<0判断成功与否;注意:对于普通文件,偏移量必须是非负的;但比如Intel x86处理器上运行的FreeBSD设备/dev/kmem就支持负 阅读全文
posted @ 2019-10-30 08:07
AlexAlex
阅读(270)
评论(0)
推荐(0)

浙公网安备 33010602011771号