- 博客(51)
- 收藏
- 关注
原创 Go 错误处理
五种策略:1. 传播错误:这意味着函数中某个子程序的失败,会变成该函数的失败。2. 重新尝试失败的操作: 如果错误的发生是偶然性的,或由不可预知的问题导致的。一个明智的选择是重新尝试失败的操作。在重试时,我们需要限制重试的时间间隔或重试的次数,防止无限制的重试。3.输出错误信息并结束程序需要注意的是,这种策略只应在main中执行。对库函数而言,应仅向上传播错误,除非该错误意味着程序内部包含不一致性,即遇到了bug,才能在库函数中结束程序...
2021-09-25 16:44:58 173
原创 PowerDNS在ubuntu 20.04 server部署
1. 开始安装配置MariaDBsudo apt install mariadb-server我们需要给ROOT用户设置一个初始密码。方法1: mysql -u root use mysql; update user set password=password("root")where user='root'; flush privileges; exit;方法2:用mysqladmin 格式:mysqla
2021-09-22 20:55:09 761 1
原创 一种利用编译型语言保护Python源码方法
一种利用编译型语言保护Python源码方法在使用Python 开发一段时间发现Python有很多优点,但是Python是解释型语言,Python项目的部署时源码是裸露的,针对这个问题现在也有几种解决方案。在使用以上几种解决方案保护Python源码时不太方便和安全。所以提出一种利用编译型语言保护Python源码方法。思考过程:计划使用纯Python代码利密码学保护源码,随着代码的编写发现无论如何利用对称加密、非对称加密和Hash算法都需要一个入口代码,别人可以利用入口代码一步步的进行破解。(论证无法解
2020-12-04 18:05:48 501 4
原创 计算机论文投稿
系统: OSDI、SOSP、 HOTOS、 Linux Kernel、RT: RTSS、RTAS高性能: HPCA、HPDC、ICS、MASCOTS、performance计算机学院TOP40:一、A类1.ASPL
2017-03-01 15:51:00 1439
原创 linux调度器概述
linux调度器概述一.linux进程的分类1.进程的分类当涉及有关调度的问题时, 传统上把进程分类为”I/O受限(I/O-dound)”或”CPU受限(CPU-bound)”. 另外一种分类法把进程区分为三类: 2.实时进程与普通进程 在linux中, 调度算法可以明确的确认所有实时进程的身份, 但是没办法区分交互式程序和批处理程序(统称为普通进程), linux2.6的调度程序实现了基于
2016-11-19 22:24:30 1116
原创 虚拟内核文件系统概述
虚拟内核文件系统(VirtualKernel File Systems 是指那些是由内核产生但并不存在于硬盘上(存在于内存中)的文件系统,他们被用来与内核进行通信前面介绍的ext2,ext3,jffs2,yaffs2等目录和文件,都是真真正正、实实在在的存储在具体的外部存储设备上的,它们可能是在本机的硬盘、闪存、光盘中,可能保存在不只一个磁盘分区中,也可能保存在网络中其它主机的存储设备中
2016-11-07 10:43:22 764
原创 Vim编辑器的使用
Vim编辑器的使用一.vim的启动 输入vi命令后,便进入全屏幕编辑环境,此时的状态为命令模式。1.vim 进入vim的一个临时缓冲区,光标定位在该缓冲区第1行第1列的位置上。2.vim filename 如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行第1列的位置上。二.退出vim 建议在退出vim前,先按ESC键,以确保当前
2016-10-16 15:57:19 360
原创 调度器
一.调度器概述(内核3.18)1.调度时机:a.调用cond_resche()时。b.显式调用schedule()时。c.从系统调用或者异常中断返回用户空间时。d.从中断上下文返回到用户空间时。2.struct task_group 调度组linux可以以以下两种方式进行进程的分组:用户ID:按照进程的USER ID进行分组,在对应的/sys/ker
2016-09-13 22:30:50 738
原创 linux4.4安装实时补丁性能差异
1、测试实时操作系统使用命令cyclictestcyclictest是rt-tests下的一个测试工具,一般用来测试使用内核的延迟,从而判断内核的实时性。2、案例讲解 $ cyclictest -l100000000 -m -n -t1 -p99 -i200 -h400 -q 使用-m参数锁定内存分配,-n参数使用nanosleep而不是sleep, -t1使用一个线程
2016-08-16 11:20:40 2389
原创 关于linux实时抢占补丁
关于RT-Preempt Patch:标准的Linux内核只达到了软实时的要求:对用户空间的时间处理提供了基本的POSIX操作,但是对硬时间限制没有保证。通过Ingo Molnar的Realtime Preemption patch(简称为RT-Preempt)和Thomas Gleixner的有着高精度支持的通用时钟事件层,内核就获得了硬实时的能力。RT-Preempt patc
2016-07-24 15:20:15 1736
原创 Some questions about RT-preempt
How does the CONFIG_PREEMPT_RT patch work?The RT-Preempt patch converts Linux into a fully preemptible kernel. The magic is done with:Making in-kernel locking-primitives (using spinlocks) pree
2016-07-22 09:32:27 511
原创 实时抢占补丁
一. Linux 在实时方面的不足1. 早期的linux在任何时候。硬中断、软中断、tasklet、bh具有最高优先级,它们能够中断任何其他实时任务,并且在中断处理时,中断可能被长时间地关闭,其他任务得不到调度,会造成很大的延迟。2. 早期的linux不支持抢占3. 早期的linux在操作某些核心数据结构时, 为保证数据的完整性,采取了关闭中断的措施。4. 早期时钟管理系统分辨率很
2016-07-14 22:00:22 529
原创 实时系统概述
一. 实时系统1. 硬实时系统2. 软实时系统二. 性能指标、基本需求和POSIX兼容性1. 服务响应时包括:A.任务启动时间:任务启动时间受影响的因素:a, 外部中断事件 b. 中断延迟 c.中断处理时间 d. 调度器延迟 e. 任务调度时间 。周期性任务通常是通过任务本身设置的定时器到期通知触发。时间管理系统的精确性决定了周期性任务的服务响应时
2016-06-25 22:51:16 926
原创 了解ARM处理器
1. 处理器概要和特征ARM处理器以Berkeley RISC架构为基础。RISC(Reduced Instruction Set Computer, 精简指令系统计算机)比CISC(Complex Instruction Set Computer,复杂指令系统计算机)指令结构更简单,可在一小时间内快速处理指令。ARM采用RISC方式降低指令的复杂度,利用管道提高指令处理速度,由此提升性能。
2016-06-16 20:47:03 470
原创 ARM linux内核-----准备
一: 内核2.6与3.2的差异1. linux子系统结构结构依赖代码:指用于CPU、MMU以及机载(on board)状态的低级(low-level)驱动程序。代码位于arch目录下。设备驱动程序:linux内核一半以上的代码是设备驱动程序代码,linux通常最先封装最新设备。代码位于drivers目录下。进程管理:代码位于kernel目录下。
2016-06-16 17:49:14 383
原创 python 中的字符串转义序列、字符串格式化、操作符、关键字总结
1.字符串转义序列转义字符描述\(在行尾时)续行符\\反斜杠符号\'单引号\"双引号\a响铃\b退格(Backspace)\e转义\000空\n
2016-05-24 17:35:09 25964 6
转载 LINUX内存管理
模块LINUX内存管理代码模块主要分为4个部分:1.Out of memory 代码在mm/oom_kill.c 貌似用于杀进程的时候对内存的操作2.虚拟内存的分配 代码在mm/vmalloc.c3.物理内存页面分配 代码在mm/page_alloc.cVMA(virtual memory addresses)的 创建和进程内的内存区域的管理4.这些模块,贯穿与其他kernel
2016-05-22 22:28:40 482
转载 Linux源代码目录
Linux用来支持各种体系结构的源代码包含大约4500个C语言程序,存放在270个左右的子目录下,总共大约包含200万行代码,大概占用58MB磁盘空间。 源代码所有在目录:/usr/src/linux (大部分linux发行版本中) init 内核初始化代码 kernel 内核核心部分:进程、定时、程序执行、信号、模块。。。 mm 内存处理 arch 平台相关代码
2016-05-16 17:39:28 874
转载 linux工具---用qemu调试linux内核
一.qemu模拟x861.1 qemu的安装 ubuntu 12.04下安装qemu很简单, sudo apt-get install qemu1.2 linux内核的编译 www.kernel.org 下载内核, 以linux-3.0.1为例 sun@ubuntu:/work/x86/kernel$ tar xf ./linux-
2016-05-15 09:54:08 1461
转载 Linux内存寻址和内存管理
1. x86的物理地址空间布局 以x86_32,4G RAM为例:物理地址空间的顶部以下一段空间,被PCI设备的I/O内存映射占据,它们的大小和布局由PCI规范所决定。640K~1M这段地址空间被BIOS和VGA适配器所占据。由于这两段地址空间的存在,导致相应的RAM空间不能被CPU所寻址(当CPU访问该段地址时,北桥会自动将目的物理地址“路由”到相应的I/
2016-05-08 17:18:27 730 1
原创 在服务器上配置Git仓库
第一步,安装git:$ sudo apt-get install git 第二步,创建一个git用户,用来运行git服务:$ sudo adduser git 第三步,初始化Git仓库:因为我打算把git仓库就放在/home/git下面,所以就直接用useradd创建git用户(组)$ sudo git init –bare –share git.git
2016-05-06 10:10:49 680
转载 linux内核调试工具Kprobes
一、kprobe简介kprobe是一个动态地收集调试和性能信息的工具,它从Dprobe项目派生而来,是一种非破坏性工具,用户用它几乎可以跟踪任何函数或被执行的指令以及一些异步事件(如timer)。它的基本工作机制是:用户指定一个探测点,并把一个用户定义的处理函数关联到该探测点,当内核执行到该探测点时,相应的关联函数被执行,然后继续执行正常的代码路径。kprobe实现了三种类型的探测
2016-04-21 15:44:20 673
转载 sprintf()/simple_strtoul()
字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误。无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了。目录函数简介参数说明及应用举例使用sprintf 的常见问题展开函数简介
2016-04-14 16:42:56 415
转载 linux 2.6 中断,异常
什么是中断Linux 内核需要对连接到计算机上的所有硬件设备进行管理,毫无疑问这是它的份内事。如果要管理这些设备,首先得和它们互相通信才行,一般有两种方案可实现这种功能:轮询(polling) 让内核定期对设备的状态进行查询,然后做出相应的处理;中断(interrupt) 让硬件在需要的时候向内核发出信号(变内核主动为硬件主动)。第一种方案会让内核做不少的无用功
2016-04-06 20:35:18 380
转载 Linux 调度器发展简述
引言进程调度是操作系统的核心功能。调度器只是是调度过程中的一部分,进程调度是非常复杂的过程,需要多个系统协同工作完成。本文所关注的仅为调度器,它的主要工作是在所有 RUNNING 进程中选择最合适的一个。作为一个通用操作系统,Linux 调度器将进程分为三类:交互式进程此类进程有大量的人机交互,因此进程不断地处于睡眠状态,等待用户输入。典型的应用比如编辑器 vi。此类进程对系统响应时间
2016-04-05 17:51:28 958
转载 linux进程
linux进程状态浅析 众所周知,现在的分时操作系统能够在一个CPU上运行多个程序,让这些程序表面上看起来是在同时运行的。linux就是这样的一个操作系统。 在linux系统中,每个被运行的程序实例对应一个或多个进程。linux内核需要对这些进程进行管理,以使它们在系统中“同时”运行。linux内核对进程的这种管理分两个方面:进程状态管理,和进程调度。本文主要介绍进程状态管理,进程调度见
2016-04-05 17:43:25 331
转载 ZShell
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:池建强链接:http://zhuanlan.zhihu.com/mactalk/19556676来源:知乎Linux/Unix提供了很多种Shell,为毛要这么多Shell?难道用来炒着吃么?那我问你,你同类型的衣服怎么有那么多件?花色,质地还不一样。写程序比买衣服复杂多了,而且程序员往往负责把复
2016-03-17 17:07:23 853
原创 linux中O(1)调度算法与完全公平(CFS)调度算法
一、O(1)调度算法1.1:优先级数组O(1)算法的:一个核心数据结构即为prio_array结构体。该结构体中有一个用来表示进程动态优先级的数组queue,它包含了每一种优先级进程所形成的链表。1#define MAX_USER_RT_PRIO 1002#define M
2016-03-07 15:37:39 576
原创 linux4.4 实时补丁安装
一.下载内核linux-4.4和内核实时补丁patch-4.4-rt3.patch;二. 打入实时补丁:进入内核目录后patch -p1 像下面这样把它加入到patch文件中:zcat path/to/patch-x.y.z.gz | patch -p1bzcat path/to/patch-x.y.z.bz2 | patch -p1三. 内核配置 $mak
2016-03-04 15:27:49 3804
原创 分析文件系统minix
1. bximage 生成镜像文件 2.mkfs.minix a.img 在镜像文件a.img中写入minix文件系统 3.sudo mount a.img /mnt 挂载文件系统 4.hexdump a.img 查看minix文件系统。2.文件系统任务2:将任务1中的文件系统挂载到/mnt下,然后创建一个目录,名字为bin,然后再将文件系统hexdump,分析创建bin文件后的
2016-03-01 21:50:40 600
转载 linux sed 的用法
linux之sed用法sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,下面先了解一下sed的用法sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有
2016-02-25 09:29:08 229
转载 linux awk命令详解
简介awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。awk其名称得自于它的创始人 Alfred Aho
2016-02-25 09:26:29 307
转载 linux grep命令详解
简介grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更
2016-02-25 09:24:26 261
原创 git diff 比较两个版本的差异
git init #在当前的目录下创建一个新的空的本地仓库Initialized empty Git repository in /home/user/test_proj/.git/$ git add . #把前目录下的所有文件全部添加到暂存区$ git commit -m 'project init' #创建提交[master (root-commit) b36a785] project
2016-01-27 16:15:35 1731
转载 优先级反转
1. 优先级反转(Priority Inversion) 由于多进程共享资源,具有最高优先权的进程被低优先级进程阻塞,反而使具有中优先级的进程先于高优先级的进程执行,导致系统的崩溃。这就是所谓的优先级反转(Priority Inversion)。2. 产生原因 其实,优先级反转是在高优级(假设为A)的任务要访问一个被低优先级任务(假设为C)占有的资源时,被阻塞.而此时又
2016-01-20 20:06:05 279
原创 ctags + tagslist + cscope常用命令
熟练的使用ctags仅需记住下面七条命令: $ctags –R * ($为Linux系统Shell提示符,这个命令上面已经有所介绍) $ vi –t tag (请把tag替换为您欲查找的变量或函数名) :ts (ts助记字:tagslist, “:”开头的命令为VI中命令行模式命令) :tp (tp助记字:tagspreview)—此命令不常用,可以不用
2016-01-05 17:20:42 1028
原创 格式化C语言命令indent
indent是linux下一个能力极强的代码整理软件,使用他,可以轻松的写出代码风格十分精良的代码。但是indent的参数太多,使用起来不是很容易,怎么办呢?查看/usr/src/linux-headers-/scripts/Lindent文件 ,可以看到一行代码:indent -npro -kr -i8 -ts8 -sob -l80
2015-12-29 16:54:12 371
转载 bochs调试linux 0.11内核
赵炯博士已经为我们准备好了bochs,而且还带有linux 0.11的image. http://www.oldlinux.org/Linux.old/bochs/linux-0.11-devel-040329.zip 具体参考http://www.linuxidc.com/Linux/2009-03/18786.htm,这篇文章讲了如何设置boch
2015-12-26 12:42:08 553
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人