随笔分类 -  163博客部分迁移

1 2 下一页

若干编码说明
摘要:一、gb2312现在我们大部分的中国程序员编译的程序可执行代码中包含的都是gb2312编码,这些编码通常体现在代码中的字符串里。编译器对于这些字符串的内容并不做特殊解释,因为gb2312中的常用英文字符是和ASCII码兼容的。根据编码的约定,通常的前32个字符是作为控制字符,也就是无法在屏幕上直接对 阅读全文

posted @ 2019-03-07 09:20 tsecer 阅读(161) 评论(0) 推荐(0) 编辑

匿名管道之“第三者插足”
摘要:一、管道管道是unix系统的一个重要特征,也正是管道让shell可以把各种不同功能的程序和谐的连接在一起。匿名管道并不是通过open系统调用来创建的,也不是用mknod创建,使用了自己的一个专用通道pipe系统调用。由于匿名管道没有名字,所以只能在父进程和子进程之间共享,当然进程也可以在多线程中用管 阅读全文

posted @ 2019-03-06 21:16 tsecer 阅读(115) 评论(0) 推荐(0) 编辑

文件内部修改之后编辑器(vim)写回
摘要:一、文件中间修改写回这个不是问题,只是一个偶尔想起的一个事儿。因为我经常看帖子回帖的时候看到精彩的内容都会记录到一个txt文件中,而且我还有一个好习惯,就是每次把新收集的内容放在文件的开始而不是像论坛的帖子一样后来的回复追加在最后,因为我还有一个习惯,看这个文件都是从后向前看的,所以也没有问题。随着 阅读全文

posted @ 2019-03-06 21:16 tsecer 阅读(190) 评论(0) 推荐(0) 编辑

bash中命令前设置子进程变量的绿色方法
摘要:一、语法这其实是一个比较小的细节问题,但是觉得比较有创意(而且一用就会让人产生“当时我就震惊鸟”了感觉),而且bash的这个功能的实现代码为bash代码的晦涩性也做了不少贡献,所以这里还是看一下这个比较有创意的语法。这个功能和管道一样,感觉是一个绿色环保的命令,说它绿色,就是它"事了拂衣去,深藏身与 阅读全文

posted @ 2019-03-06 21:13 tsecer 阅读(317) 评论(0) 推荐(0) 编辑

内存管理(1)---匿名页面
摘要:一、匿名页面这些内存页面保存了一些通常所说的机动性最强的内容,或者可以认为是银行的活期存款,这些内存可以随时被使用,随时被归还。例如用户通过malloc-->>mmap申请的内存,或者通过brk/sbrk扩大的堆空间。相对于mmap文件、文件系统元数据之类的内容,这些空间对用户来说最为顺手,也最为常 阅读全文

posted @ 2019-03-06 21:07 tsecer 阅读(289) 评论(0) 推荐(0) 编辑

内存管理(2)---块设备的页面缓冲
摘要:一、块设备这里从文件和页面管理的角度来看块设备。在Linux系统下,根据“一切皆文件”的思想,可以把一个磁盘当做一个文件来读取。为了看一个磁盘,例如第一块硬盘,可以通过hexdump这种通用的工具来显示一个硬盘的原始数据(没有验证是否需要root权限),例如对于一个文件系统来说[root@Harry 阅读全文

posted @ 2019-03-06 21:07 tsecer 阅读(387) 评论(0) 推荐(0) 编辑

文件写入前的读取
摘要:一、写入前可能需要读取在前一篇博客中看ramfs文件的时候想到一个问题:内存缓冲是以page为单位的,而许多磁盘设备是以block(sector)为单位的,当然这都不是重点。重点是现在假设有一个文件,它大概有两个页面,现在我只在文件的开始写入(修改)一点点数据,比方说10个字节,然后再seek到文件 阅读全文

posted @ 2019-03-06 21:05 tsecer 阅读(327) 评论(0) 推荐(0) 编辑

线程退出时如何通知等待者
摘要:一、线程退出在之前的一篇博客(http://tsecer.blog.163.com/blog/static/150181720120175027358/)中说明了一个进程描述符的回收过程,其中可以看到,只有主线程有权利通知父进程整个线程组已经退出,也就宣告整个任务的结束,其它的线程(一般通过pthr 阅读全文

posted @ 2019-03-06 21:04 tsecer 阅读(530) 评论(0) 推荐(0) 编辑

进程描述符回收
摘要:一、进程消亡一个进程消亡之后,它在内核中的户口task_struct结构需要被回收,这个回收必须是主动的通过系统调用来回收,也就是waitpid或者wait4之类的系统调用。但是很多时候,我们并没有关心这个子进程的退出,比如我写的一些测试程序,如果这些进程没有被wait,那么它们是否真的像僵尸一样在 阅读全文

posted @ 2019-03-06 21:02 tsecer 阅读(267) 评论(0) 推荐(0) 编辑

pthread_mutex的任务间同步
摘要:一、说明 在linux下,这个pthread_mutex是posix多线程编程的一个规范,从名字上看,它也是一个线程间的同步机制。狭义上理解就是一个任务内部的多个线程之间的一个同步机制,这一点对于Linux系统下的futex机制实现可以产生很大影响。因为如果是同一进程的线程,那么所有线程使用的都是相 阅读全文

posted @ 2019-03-06 20:49 tsecer 阅读(351) 评论(0) 推荐(0) 编辑

mmap文件修改内容的写回
摘要:一、问题 在Linux下,使用mmap是操作文件内容的一个非常方便的方法,它可以将相对受限的文件操作接口转换为大家喜闻乐见的内存操作。这个本身可以引申出很多方便的操作,比如,我们可以将这个内存地址(也就是对应的文件的某个部分)转换为一个特定的数据结构指针,从而可以方便的进行结构的读取和修改。 大部分 阅读全文

posted @ 2019-03-06 20:48 tsecer 阅读(4054) 评论(0) 推荐(0) 编辑

信号处理之物理信号和软件信号
摘要:一、概述 题目有些绕,因为不知道这两种信号的学名是什么。我想表达的意思就是两种不同来源的信号:一种是实实在在发生的信号,例如程序运行的过程中遇到了一个非法地址访问,最为典型的就是 *(int *) 0 = 0; 此时程序一定会收到一个SIGSEGV信号的,因为此时程序不能再继续运行下去了。用拟人的语 阅读全文

posted @ 2019-03-06 20:47 tsecer 阅读(594) 评论(0) 推荐(0) 编辑

PowerPC下连接器--relax选项实现
摘要:一、问题 在编译一些大的工程的可执行文件的时候,可以发现如果使用DEBUG版本,代码段加上和代码段放在一起的只读数据(字符串或者常量全局变量等)数量将会比较庞大,而在glibc的crti中会有一个对GLABAL_OFF_TABLE(GOT)表的重定向,这个重定向类型为为,从网络上可以看到这种错误类型 阅读全文

posted @ 2019-03-06 20:42 tsecer 阅读(1006) 评论(0) 推荐(0) 编辑

Linux下符号版本原理及实现
摘要:一、问题 这个就是在一些使用了共享目标文件的可执行文件编译时环境和运行时环境不同(比方说,编译的时候在一个较高版本的环境中编译的,此时使用的C库版本较新,然后将生成的可执行文件放在一个较低版本的系统中运行,此时可能会提示符号版本错误,从而可执行文件加载失败)而导致的可执行文件夹加载失败,这种问题在网 阅读全文

posted @ 2019-03-06 20:41 tsecer 阅读(3413) 评论(0) 推荐(0) 编辑

信号间优先级及线程优先级对信号的影响
摘要:一、问题引出 为了精确定位一个任务退出的时候是何种原因,例如是看门狗复位,或者是受到了某些人为主动复位(kill 指定任务,或者reboot导致的简介SIGTERM+SIGKILL组合),或者是某些第三方库中执行了exit导致了线程的退出等原因。这就需要内核进行介入,记录指定感兴趣任务(之后称为受控 阅读全文

posted @ 2019-03-06 20:41 tsecer 阅读(651) 评论(0) 推荐(0) 编辑

从pthread_self看GNU ld链接器
摘要:一、问题引出 对于主线程(也就是main函数对应的线程),它并不是通过pthread_create创建的线程,所以我们没有这个主线程对应的pthread_t结构,这个结构也就是pthread_create的第一个参数。这当然只是最为直观的一个结论,事实上系统不会这么羸弱,在main函数中通过pthr 阅读全文

posted @ 2019-03-06 20:40 tsecer 阅读(537) 评论(0) 推荐(0) 编辑

从根文件系统制作看loop设备
摘要:一、引出 在Linux系统下,通过 dd + losetup + mkfs 创建一个根文件系统已经是创建一个Linux根文件系统的一个常规方法。由于这个是通过一个loop设备来创建的文件,所以这个loop文件是把一个文件看做是一个设备,这个还是一个相对比较高难度的一个适配,因为上层肯定是使用了块设备 阅读全文

posted @ 2019-03-06 20:38 tsecer 阅读(812) 评论(0) 推荐(0) 编辑

i386 relocatable内核实现
摘要:一、问题的引出 在Linux系统中,当内核发生panic的时候,我们可能希望能够保留内核的现场,就像当用户态程序异常的时候内核对应用程序的“吐核”一样(注意,不是吐槽)。但是应用程序的吐核是由内核来完成的,那么内核自己真正的吐自己该如何完成呢? 二、实现方法 这个实现是和kdump结合来实现的,这个 阅读全文

posted @ 2019-03-06 20:37 tsecer 阅读(612) 评论(0) 推荐(0) 编辑

Linux中多CPU的runqueue及抢占
摘要:一、引出 在在嵌入式操作系统中,很多线程都可以为实时任务,因为毕竟这些线程很少和人接触,而是面向任务的。所有就有一个抢占的时机问题。特别是2.6内核中引入了新的内核态抢占任务,所以就可以说一下这个内核态抢占的实现。 内核态抢占主要发生在两个时机,一个是主动的检测是否需要抢占,另一个就是在异常处理完之 阅读全文

posted @ 2019-03-06 20:36 tsecer 阅读(4472) 评论(0) 推荐(1) 编辑

Linux下386中断处理
摘要:一、中断和异常 这两个概念虽然处理的方式大致相同,但是本质上是有很大差别的,而且在386下它们的处理和语义对系统中最为重要的内容的理解是很重要的。 首先一个最为重要的差别就是: 当中断发生的时候,处理器在执行了Cs IP EFLAGS(可能还由用户态的SS和ESP)这个一气呵成的寄存器保存之后,处理 阅读全文

posted @ 2019-03-06 20:35 tsecer 阅读(461) 评论(0) 推荐(0) 编辑

1 2 下一页

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示