• Ubuntu 14.04 下安装和配置 Terminator

    Terminator 介绍 Ubuntu 中默认使用的 shell 终端工具是 gnome-terminal,虽然它已经很好用了,但有时还是无法满足我们程序员各种各样的需求,例如在同一个窗口中启动多个终端! 但是!但是!但是!Terminator 就可以完美地实现了在 Ubuntu在同一窗口中启动多个终端,并且可以自由的在一个窗口中分割区域建立新终端,还可以通过鼠标拉伸调整每个终端的大小。 效果图如下: Terminator 安装 Terminator 的安装非常方便,在 Ubuntu 中只需要用 apt 的包管理工具就能轻松地进行安装: $...


  • 硬盘--你所不知道的事

    努力扯到硬盘上 对于新一代的有理想有追求有抱负又血气方刚的青年来说,谁的硬盘里没住过几个来自岛国“女朋友”呢,说不定有的还被你一直珍藏着吧?哈哈,但是本篇文章的话题不是硬盘里住着的“女朋友”,而是“女朋友”所住着的“房子” -- 硬盘。 本来我与硬盘是不会有任何过多的关注的,我好好地写我的代码,它好好地保存好我的代码。直到最近迫于自己电脑的速度慢地像蜗牛一样,就想入手一台 Macbook Pro with Retina, 但是迫于经济(毕竟是学生党)压力,就一直在考虑买 128 GB 的版本还是买 256 GB 的版本,毕竟多了 128 GB 的硬盘容量就要多画 1000...


  • 《Linux 内核分析》完成一个简单的时间片轮转多道程序内核代码

    1. 概要 上周我在网易云课堂上学习了孟宁老师的《Linux 内核分析》第二周的课程内容:操作系统是如何工作的?课程的重点内容就是介绍了函数调用堆栈的过程、Linux 中内联汇编的使用方法,以及一个基于 Linux 3.9.4 内核自己实现的时间片轮转多道程序内核。 本文就主要对最后一个重点内容:一个简单的时间片轮转多道程序内核代码 进行一个分析。 2. 实验环境搭建 首先,当然是要搭建好实验的环境,实验中使用到的主要是在 qemu 模拟器中运行我们自己编写的非常简单的内核。实验环境的具体的搭建过程在孟宁老师的 github 中的 mykernel 项目中的 README...


  • Sublime-Text-3-插件安装

    Package Control 简介 Sublime Text 3 之所以强大在于它有许许多多的功能非常丰富的插件,可以适用不同的编程语言的需要。 而 Package Control 就是安装并管理这些插件的工具。在安装好 Package Control 之后,我们就可以通过它来安装其他一系列的插件了。 Package Control 安装 Package Control 的安装方法也非常简单,官方安装文档:Package...


  • Linux make 和 Makefile 详解

    1. 前言 如果你有手动从源码编译过linux应用程序的经历,那么你肯定不会对”./configure“,”make”,”make install”这些命令感到陌生。下面我们就来探索一下这个过程中的每一都发生了什么。 在Linux系统环境中使用GNU的make工具可以很方便地构建和编译一个大型的工程,整个工程的编译只需要一个命令”make”就可以完成编译、链接和运行。不过在使用”make”命令之前,我们需要完成一个叫做”Makefile”文件的编写,这个文件详细描述了我们整个工程该如何取编译、链接以及最后生成一个可执行的文件,以及这个过程中所需要依赖的文件和其他工具软件。 在介绍make和Makefile之前,我们来补充说明一下linux下一个简单C语言源程序的编译、链接的过程。 编译: 编译就是把文本形式的源代码翻译称为及其语言形式的目标文件的过程。 链接: 链接就是把目标文件和使用到的库文件进行组织,最终形成可执行代码的过程。 整个编译和链接的过程的图解如下: 从上图可知,整个代码编译的过程分为编译和链接两个阶段,其中编译对应的是大括号对应的部分,其余则是链接过程。 在这里我们还要特别说明一下linux中的库文件! 库: 库是一组预先编译好的函数的集合,这些函数都是按照可重用的原则编写的。 在linux中库文件可以分为静态库和共享库(有的地方也叫做动态库)。 静态库: 它也称为归档文件(archive file),按照惯例它们的文件都是以”.a”结尾,比如标准C语言函数库”/usr/lib/libc.a”。静态库在程序链接时会使用,链接器会将程序中使用到函数的代码从静态库文件中拷贝到应用程序中。一旦链接完成,在执行程序的时候就不需要静态库了。由于每个使用静态库的应用程序都需要拷贝所用到函数的代码,所以静态链接生成的可执行文件都会比较大。 共享库:...