linux操作系统
文章平均质量分 70
OS技术解密
阿里巴巴
展开
-
深入剖析怎么分析进程crash问题(上)
平台:linux/armv7。原创 2022-09-05 16:28:12 · 1014 阅读 · 0 评论 -
arm ldr/ld/数据加载系列指令和adr指令
可以看到由于采用了[r0,#1]pre-indexed的memoryaccess方式,r4寄存器加载的值来自于地址r0+1。说明最终访问内存的地址=Rn,这种操作后Rn的值=Rn+offset,跟pre-indexed的核心区别在于加载的值来自地址Rn(更新前前),类似于i++,这种操作后Rn的值=Rn+offset,注意加载的值来自地址Rn+offset的值(更新后),类似于++i。说明最终访问内存的地址=Rn+offset,这种操作后Rn的值不会改变。.....................原创 2022-07-30 23:21:21 · 2433 阅读 · 0 评论 -
Linux磁盘挂载
概念:挂在 所谓挂在就是利用一个目录当成进入点,将磁盘分区的数据放在该目录下,也就是说,进入该目录就可以读取该分区的意思。Linux系统最重要的是根目录,因此根目录一定需要挂载到某个分区,至于其他的目录则根据需要挂载到不同的分区: 假设硬盘分区有2个,分区1(partition 1)挂载到根目录,分区2(partition 2)则是挂载到/home这个目录。这也就是说,当把数据放在/home原创 2015-08-12 13:36:56 · 718 阅读 · 0 评论 -
web服务器实现
最近工作中需要客户端和服务器使用https协议进行通信,我负责客户端程序的编写,想到以前在深入理解操作系统中看过web服务器的实现,代码整理如:#include"apue.h"extern char **environ;void clienterror(int fd,char *cause,char *errnum,char *shortmsg,char *longmsg){原创 2014-07-27 13:39:01 · 1158 阅读 · 0 评论 -
ubuntu设置中文输入法
Ubuntu 12.04中文输入法的安装 Ubuntu上的输入法主要有小小输入平台(支持拼音/二笔/五笔等),Fcitx,Ibus,Scim等。其中Scim和Ibus是输入法框架。在Ubuntu的中文系统中自带了中文输入法,通过Ctrl+Space可切换中英文输入法。这里我们主要说下Ubuntu英文系统中,中文输入法的安装。安装输入法的第一步,是安装语言包。我们选择System S原创 2014-06-28 13:51:21 · 822 阅读 · 0 评论 -
32位机内存管理(下)
既然这样,段描述符表放在那里呢?80386中引入了两个新的寄存器来管理描述符表。一个是48位的全局描述符表寄存器GDTR,一个是16位的局部描述符表寄存器LDTR。那么,为什么有两个描述符表寄存器呢?GDTR指向的描述符表为全局描述符表GDT。它包含操作系统中所有任务都可用的段描述符,通常包含描述操作系统所使用的代码段、数据段、堆栈段的描述符及各任务的LDT段等,全局描述符表只有一个。LD原创 2014-05-03 15:56:36 · 1134 阅读 · 0 评论 -
ELF文件格式
1.目标文件可重定位目标文件(main.o例如):包含二进制代码和数据,其形式可以在编译时与其他可重定位目标文件合并,创建一个可执行目标文件可执行目标文件(.exe/a.out):包含二进制代码和数据,其形式可以被直接拷贝到存储器并执行共享目标文件(.dll/.so):一种特殊类型的重定位目标文件,可以在加载或运行时被动态的加载到存储器并连接。编译器和汇编器生成可重定位目标文件(包原创 2014-04-26 10:51:42 · 1087 阅读 · 0 评论 -
守护进程的编程规则
要理解守护进程的编程规则必须先搞明白进程组、会话、组长进程等关系。1.进程组每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或者多个进程的集合。每个进程组都有一个组长进程。组长进程的标识是,其进程ID和进程组ID相等。2.会话会话是一个或者多个进程组的集合。进程可以调用setsid(void)创建一个新会话,如果调用此函数的进程不是一个进程组的组长,则此函数就会创原创 2014-04-24 08:22:51 · 815 阅读 · 0 评论 -
linux进程同步方式总结
1. 上锁和解锁#inlcude int pthread_mutex_lock(pthread_mutex_t *mptr); int pthread_mutex_trylock(pthread_mutex_t *nptr); int pthread_mutex_unlock(pthread_mutex_t *mptr);互斥锁是协作性锁。这就是说,如原创 2014-04-23 16:58:43 · 3501 阅读 · 0 评论 -
进程间通信方法初步总结
主要有如下方式:管道、信号、消息队列、共享内存、信号量、套接字,本文选择几种大概介绍,后续会对比较重要的专门发文介绍。1.管道管道分为有名管道和匿名管道,匿名管道只能在有亲缘关系的进程间通信,有名管道克服这个缺点。值得注意的是,只有在管道有读端时,往管道中写数据才有意义。否则,向管道写数据的进程会接收到内核发出来的SIGPIPE信号;应用程序可以自定义该信号处理函数,或者直接忽略该信号原创 2014-04-23 16:04:57 · 902 阅读 · 0 评论 -
ELF格式的重定位原理分析
前面有篇文章分析了ELF格式,也只是让我们对目标文件有了一个大概的了解,并没有说明一个十分重要的问题:重定位,今天重新看了下重定位的资料,终于弄懂了重定位的过程,下面来做一个分析。我们将使用下面两个源代码中的文件a.c和b.c展开分析://a.cextern int shared;int main(){ int a=100; swap(&a,&shared);}//b.ci原创 2014-05-07 17:14:04 · 5905 阅读 · 0 评论 -
LD_LIBRARY_PATH作用
今天在linux中安装开源项目,安装完毕运行发现缺少libfenc.0.so,这个动态库文件命名就在lib目录下面,然后echo了一下LD_LIBRARY_PATH变量,发现这个变量是空,修改之后程序正常执行。LD_LIBRARY_PATH环境变量主要是用于指定动态链接器(ld)查找ELF可执行文件运行时所依赖的动态库(so)的路径,其内容是以冒号分隔的路径列表。ld链接器将优先在该变原创 2014-04-17 19:31:30 · 3748 阅读 · 0 评论 -
32机的内存分页机制
在实模式下寻址的时候,”段寄存器+偏移地址”进过转换计算以后得到的地址是“物理地址”,也就是在物理内存中的实际地址,而在保护模式下,“段选择器+偏移地址”转换后的地址被称为“线性地址”而不是“物理地址”,那么线性地址就是物理地址吗?答案可能是,也可能不是,这取决于80386的内存分页机制是否被使用。为什么有内存分页机制?我们回顾一下,单任务的DOS系统中,一个应用程序可以使用所有的空闲原创 2014-05-03 17:19:55 · 1234 阅读 · 0 评论 -
32位机内存管理机制(上)
一直有看linux内核的冲动,内核有些部分是汇编编写的,无奈汇编不大懂,所以利用五一三天假期大概走了一边8086CPU架构的汇编,8086CPU还是16位的,我们现在都进入64位时代了,这两者之间有很大的区别,但是看看16位的CPU汇编还是很重要的,这有助于理解32位的80386CPU。这篇文章来分析下80386的内存管理的一些基础知识,包括实模式、保护模式和内存寻址等等。1.实模式原创 2014-05-03 15:05:49 · 1437 阅读 · 0 评论