<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fryingpan的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fryingpan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fryingpan]]></copyright><item><title><![CDATA[chromium编译避坑日记]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/134748919</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/134748919</guid><author>fryingpan</author><pubDate>Sat, 02 Dec 2023 10:56:58 +0800</pubDate><description><![CDATA[修改${SRC}\third_party\llvm-build\clang.gni文件中default_clang_base_path = "//third_party/llvm-build/LLVM"* 拷贝安装好的LLVM到${SRC}\third_party\llvm-build\LLVM。* 原因：该版本的chromium代码自带的clang版本为14，编译环境要求clang 16+* chromiu版本：99.0.4844.94。* 有其他的方法还请告知。* 编译器：LLVM 17.0.6。]]></description><category></category></item><item><title><![CDATA[Ubuntu Linux下通过代理(proxy)使用git上github.com]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/79000449</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/79000449</guid><author>fryingpan</author><pubDate>Mon, 08 Jan 2018 10:49:35 +0800</pubDate><description><![CDATA[配制过程分为以下几步：
1. 安装socat，在ubuntu下使用以下命令安装





[html] 
view plain

copy


print?


sudo apt-get install socat  

sudo apt-get install socat
2. 编辑一个脚本文件，名字为git-proxy ，内容如下




[ht]]></description><category></category></item><item><title><![CDATA[SWT,Swing,AWT及最小公分母问题（LCD）]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/44343519</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/44343519</guid><author>fryingpan</author><pubDate>Tue, 17 Mar 2015 16:15:25 +0800</pubDate><description><![CDATA[转自：http://le5u.net/blog/1845.html]]></description><category></category></item><item><title><![CDATA[Linux 0.12 内核对内存的管理]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/44040133</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/44040133</guid><author>fryingpan</author><pubDate>Tue, 03 Mar 2015 16:50:19 +0800</pubDate><description><![CDATA[其着重点在于分段，用分段的机制把进程间的虚拟地址分隔开。

每个进程都有一张段表LDT，整个系统有一张GDT表，且整个系统只有一个总页表。






 

其地址翻译过程为：

程序中给出的32位地址（实际上被看做段内偏移地址），再根据代码段寄存器CS中的16位段选择子，可在GDT或LDT中查找相应的段描述符。从段描述符中提取段的基地址，与程序给出的32位地址相加，得到]]></description><category></category></item><item><title><![CDATA[Linux 2.x 内核对内存的管理]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/44040059</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/44040059</guid><author>fryingpan</author><pubDate>Tue, 03 Mar 2015 16:45:18 +0800</pubDate><description><![CDATA[其着重点在于分页，用分页的机制把进程间的虚拟地址分隔开来。

每个进程都有一套页表，整个系统有一张GDT表（此机制由逻辑地址到线性地址变换，实际上是走了个形式，变换前后地址不变）

每个进程都有一套页表用于从线性地址到物理地址的映射变换。这样，每个进程都有一个4GB的逻辑空间。

（两进程的逻辑地址相同，但它们有不同的页表，故最终会映射到不同的物理位置）

实际上，此机制的地址翻译]]></description><category></category></item><item><title><![CDATA[操作系统内存管理]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/44040037</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/44040037</guid><author>fryingpan</author><pubDate>Tue, 03 Mar 2015 16:44:03 +0800</pubDate><description><![CDATA[物理内存

Linux为了有效使用机器中的物理内存，在系统初始化阶段内存被划分成几个功能区域：




其中，Linux内核程序占据在物理内存的开始部分，接下来是供硬盘等块设备使用的高速缓冲区部分（其中要扣除显卡内存和ROM BIOS所占用的内存地址范围）

当一个进程需要读取块设备中的数据时，系统会首先把数据读到高速缓冲区中。当有数据需要写到块设备上去时，系统也是先将数据放到高]]></description><category></category></item><item><title><![CDATA[操作系统对内存的管理]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/44039749</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/44039749</guid><author>fryingpan</author><pubDate>Tue, 03 Mar 2015 16:24:58 +0800</pubDate><description><![CDATA[简介
    内存是计算机中最重要的资源之一,通常情况下，物理内存无法容纳下所有的进程。虽然物理内存的增长现在达到了N个GB，但比物理内存增长还快的是程序，所以无论物理内存如何增长，都赶不上程序增长的速度，所以操作系统如何有效的管理内存便显得尤为重要。本文讲述操作系统对于内存的管理的过去和现在，以及一些页替换的算法的介绍。
对于进程的简单介绍
    在开始之前,首先从操作系统的角度简单介绍]]></description><category></category></item><item><title><![CDATA[cmake与autoconf+automake的对比]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/44037979</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/44037979</guid><author>fryingpan</author><pubDate>Tue, 03 Mar 2015 14:37:09 +0800</pubDate><description><![CDATA[首先，拿他们对比本身没有太多的意义，他们都是产生makefile文件的工具。cmake产生的晚，解决了很多autotools工具的问题。autotools是一个工具集具有强大的灵活性，但是因为步骤太多，配置繁琐，产生了很多的替代方案，cmake是其中最优秀的之一。当然很多其他替代品不会产生makefile文件而直接具有make的功能了。看到下图，你是不是感觉有些发晕。




不过还好，]]></description><category></category></item><item><title><![CDATA[Linux ELF文件学习]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/43672183</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/43672183</guid><author>fryingpan</author><pubDate>Mon, 09 Feb 2015 16:23:20 +0800</pubDate><description><![CDATA[ELF头文件学习
ELF文件原名Executable and Linking Format，译为“可执行可连接格式”。
ELF规范中把ELF文件宽泛的称为“目标文件”，这与我们平时的理解不同。一般的，我们把编译但没有链接的文件(比如Linux下的.o文件)称为目标文件。而ELF文件仅指链接好的可执行文件。在ELF规范中，所用符合ELF规范的文件都成为ELF文件，也成为目标文件，这两个名字意义相]]></description><category></category></item><item><title><![CDATA[ld中文使用手册完全版]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42678021</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42678021</guid><author>fryingpan</author><pubDate>Tue, 13 Jan 2015 16:11:53 +0800</pubDate><description><![CDATA['ld'把一定量的目标文件跟档案文件连接起来,并重定位它们的数据,连接符号引用.一般,在编译一个程序时,最后一步就是运行'ld'.'ld'能接受连接命令语言文件,这是一种用AT&T的连接编辑命令语言的超集写成的文件,用来在连接的整个过程中提供显式的,全局的控制.
使用ld
********
本文档介绍GNU连接器ld的2.14版本.
本文档在GNU自由文档许可证下发行.在"GNU自由文档许]]></description><category></category></item><item><title><![CDATA[ld文件]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42676533</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42676533</guid><author>fryingpan</author><pubDate>Tue, 13 Jan 2015 14:42:26 +0800</pubDate><description><![CDATA[OUTPUT_FORMAT("elf32-tradlittlemips")
OUTPUT_ARCH(mips)
ENTRY(_start)
SECTIONS
{
  . = 0x80100000;
  .text: 
  {
      _ftext = . ;
      *(.text)
      *(.rodata)
      *(.rodata1)]]></description><category></category></item><item><title><![CDATA[禁用 baloo_file_extractor 加速 ubuntu 14.04 (KDE)]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42641999</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42641999</guid><author>fryingpan</author><pubDate>Mon, 12 Jan 2015 14:16:40 +0800</pubDate><description><![CDATA[在复制了一堆零散文件后，系统同然变得奇卡，看看cpu和ram都占用不高，但看到这个进程 baloo_file_extractor 时不时地冒一下泡，怀疑是它在频繁访问硬盘。禁止它自动启动的方式：

$ cp /usr/share/autostart/baloo_file.desktop ~/.kde/share/autostart/ 
$ echo "Hidden=True" >> ~/.kd]]></description><category></category></item><item><title><![CDATA[Terminator]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42586055</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42586055</guid><author>fryingpan</author><pubDate>Sat, 10 Jan 2015 20:01:05 +0800</pubDate><description><![CDATA[简介
在linux下编程怎能缺少一个功能强大的终端，这里向大家介绍一款广受好评的终端——Terminator(终结者).
Terminator 是CrunchBang的默认终端，该终端基于 GNOME terminal。Terminator最大的特点就是可以在一个窗口中打开多个终端,可以自由的将一个终端区域横向或纵向分割建立新终端，通过鼠标拉伸调整每个终端的大小，对需要同时使用多个终端的用户非]]></description><category></category></item><item><title><![CDATA[ARM汇编指令]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42550553</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42550553</guid><author>fryingpan</author><pubDate>Fri, 09 Jan 2015 09:23:26 +0800</pubDate><description><![CDATA[ARM汇编指令

ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器（PSR）处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。

一、跳转指令
　　跳转指令用于实现程序流程的跳转，在ARM程序中有以下两种方法可以实现程序流程的跳转。
Ⅰ.使用专门的跳转指令；
Ⅱ.直接向程序计数器PC写入跳转地址值，通过向程序计数器PC写入跳转地址值，可以实现在4GB的地]]></description><category></category></item><item><title><![CDATA[返回连接寄存器【LR】详解]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42520267</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42520267</guid><author>fryingpan</author><pubDate>Thu, 08 Jan 2015 09:45:29 +0800</pubDate><description><![CDATA[异常的发生会导致程序正常运行的被打断， 并将控制流转移到相应的异常处理（异常响应），有些异常（fiq、irq）事件处理后，系统还希望能回 到当初异常发生时被打断的源程序断点处继续完成源程序的执行（异常返回），这就需要一种解决方案， 用于记录源程序的断点位置，以便正确的异常返回。

　　类似的还有子程序的调用和 返回。在主程序中（通过子程序调用指令）调用子程序时，也需要记录下主程序中的调用点位置]]></description><category></category></item><item><title><![CDATA[__attribute__ 知多少]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42494029</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42494029</guid><author>fryingpan</author><pubDate>Wed, 07 Jan 2015 15:44:19 +0800</pubDate><description><![CDATA[GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性（Function Attribute ）、变量属性（Variable Attribute ）和类型属性（Type
 Attribute ）。
__attribute__ 书写特征是：__attribute__ 前后都有两个下划线，并切后面会紧跟一对原括弧，括弧里面是相应的__attribu]]></description><category></category></item><item><title><![CDATA[GCC在C语言中内嵌汇编 asm __volatile__]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42491383</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42491383</guid><author>fryingpan</author><pubDate>Wed, 07 Jan 2015 13:52:15 +0800</pubDate><description><![CDATA[在内嵌汇编中，可以将C语言表达式指定为汇编指令的操作数，而且不用去管如何将C语言表达式的值读入哪个寄存器，以及如何将计算结果写回C 变量，你只要告诉程序中C语言表达式与汇编指令操作数之间的对应关系即可， GCC会自动插入代码完成必要的操作。

一、简单的内嵌汇编
例：
　　__asm__ __volatile__("hlt"); "__asm__"表示后面的代码为内嵌汇编，"asm"是"_]]></description><category></category></item><item><title><![CDATA[linux下的eclipse修改project explorer字体]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/42424321</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/42424321</guid><author>fryingpan</author><pubDate>Mon, 05 Jan 2015 16:09:57 +0800</pubDate><description><![CDATA[普通的字体修改：
Preferences -> General -> Appearance -> Colors and Fonts
但是Project Explorer的修改就没这么简单了，以下是好容易找到的一个方法：
编辑~/.gtkrc-2.0，写入如下内容：
style "eclipse" {
font_name = "Arial 8"
    bg[NORMAL] = "#D6]]></description><category></category></item><item><title><![CDATA[段式存储管理]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/41842843</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/41842843</guid><author>fryingpan</author><pubDate>Wed, 10 Dec 2014 10:10:57 +0800</pubDate><description><![CDATA[一、基本原理
　　前面介绍的各种存储管理中,供用户使用的逻辑地址都是连续的，用户在编制大型程序时就会感到不方便。一个实际的程序往往是由若干段组成的，例如一个主程序段、若干子程序段、若干数据段和工作区段组成，如图3.22所示。

每个段都具有完整的逻辑意义，因此都可以独立编程，且给每个段一个段名。用户程序可以用符号形式（段名和入口）调用一个段的功能,如图3.21主程序中“调用[X]段入口Ｅ”。]]></description><category></category></item><item><title><![CDATA[内存管理单元（MMU）介绍]]></title><link>https://blog.youkuaiyun.com/fryingpan/article/details/41805847</link><guid>https://blog.youkuaiyun.com/fryingpan/article/details/41805847</guid><author>fryingpan</author><pubDate>Mon, 08 Dec 2014 17:10:43 +0800</pubDate><description><![CDATA[MMU是存储器管理单元的缩写，是用来管理虚拟内存系统的器件。MMU通常是CPU的一部分，本身有少量存储空间存放从虚拟地址到物理地址的匹配表。此表称作TLB(转换旁置缓冲区)。所有数据请求都送往MMU，由MMU决定数据是在RAM内还是在大容量存储器设备内。如果数据不在存储空间内，MMU将产生页面错误中断。
MMU的两个主要功能是:
1. 将虚地址转换成物理地址。 
2. 控制存储器存取允许。M]]></description><category></category></item></channel></rss>