linux深入理解
文章平均质量分 79
Function_18
这个作者很懒,什么都没留下…
展开
-
define理解
define用法define用法特殊符号: #特殊符号: ##换行符 : \特殊字符: #@这里主要探讨的是关于define的#, ##, #@, \ 这些特殊符号的意义.特殊符号: ## 运算符就是将传入的符号转换为字符串模式.#include <stdio.h>#include <stdlib.h>#d...原创 2018-05-21 14:05:57 · 689 阅读 · 0 评论 -
系统调用
系统调用系统调用的基本流程系统调用是用户态访问内核态的一种常见方法. 系统为让用户能访问内核, 设置了很多的接口, 用户需要调用函数, 函数在连接固定的接口进入内核, 此时内核的函数执行就代替了用户在内核空间执行 用户的函数调用实际上是产生了一个软中断信号, 促使从用户态进入内核态 软中断的接口一般是 %eax = 0x80 调用 sys_call() 函数陷入内...原创 2018-04-28 10:28:39 · 473 阅读 · 0 评论 -
地址空间
地址空间地址空间MMU(内存管理单元)分段单元分页段元实模式与保护模式页页分配地址分配slab层slab结构高速缓存创建小结MMU(内存管理单元)分段单元CPU通过MMU的分段单元将逻辑地址转换为线性地址. 逻辑地址到线性地址的变换过程使用全局描述符表(GDT)和局部描述符表(LDT)在分段单元中, 将逻辑地址分...原创 2018-04-28 10:50:23 · 856 阅读 · 0 评论 -
定时器分析
定时器分析文章目录定时器分析@[toc]时钟分类jiffies变量xtime变量时钟初始化时间更新动态定时器nanosleep动态定时器时钟分类实时时钟(RTC): 在电脑断电后还继续工作, 所以他有一个外置电池的一个硬件设施. 它是一个16位的计数器, 而linux系统的日期和时间也是开机后根据RTC来获取的, 然后获取之后就不再需要RTC来获取时间了, 而是通过软件进行时间的维护, 当关...原创 2018-09-19 15:36:05 · 555 阅读 · 0 评论 -
epoll源码分析(三)
epoll源码分析(三)epoll源码分析(三)epoll_wait函数总结epoll_wait函数SYSCALL_DEFINE4(epoll_wait,…)判断最大值合法性获取匿名文件的文件指针, 取得文件信息调用ep_poll阻塞自己, 等待有消息的到来// epoll_wait()函数的调用SYSCALL_DEFINE4(epo...原创 2018-05-23 15:55:23 · 1133 阅读 · 0 评论 -
epoll源码分析(二)
epoll源码分析(二)epoll源码分析(二)epoll_ctl() 函数实现总结epoll_ctl() 函数实现struct ep_pqueue{ poll_table pt; struct epitem *epi;};调用copy_from_user将数据从用户空间拷贝到内核空间通过fget()获得获得epoll_cre...原创 2018-05-23 15:46:58 · 1246 阅读 · 0 评论 -
epoll源码分析(一)
epoll源码分析(一)epoll源码分析(一)主要数据结构epoll_create()函数实现总结主要数据结构这里讨论的是linux2.6的eventpoll.c文件里面的代码, 所以讲的代码基本都是这个文件的, 其他个别不在里面的代码我已经写出了路径. 这里写的代码后面的描述会用到的数据结构和函数, 这里可以先跳过函数, 只了解一下重要结构体的元...原创 2018-05-22 13:04:12 · 1574 阅读 · 0 评论 -
select源码分析
select源码分析select源码分析select()core_sys_selectdo_select总结select()函数是从SYSCALL_DEFINE5(select, ...)开始. 可以简单的将SYSCALL_DEFINEx理解为系统定义的系统函数, 如果想了解 SYSCALL_DEFINE 可以看一下.具体的执行流程是 :将时间定义从...原创 2018-05-21 20:58:52 · 1604 阅读 · 0 评论 -
中断
中断中断中断上半部中断下半部软中断tasklet工作队列中断内部被细分成了两部分, 中断上半部, 中断下半部.中断不能被相同类型的中断打断,而下半部依然可以被中断打断;中断对于时间非常敏感,而下半部基本上都是一些可以延迟的工作。由于二者的这种区别,所以对于一个工作是放在上半部还是放在下半部去执行,可以参考下面4条:如果一个任务对时间非常敏感,将其放...原创 2018-05-21 20:54:14 · 870 阅读 · 0 评论 -
printf %m 分析
printf %m在了解printf源码的时侯, 突然发现的一个问题. 我在linux环境下写下面的代码时的结果让我很惊讶.#include &lt;stdio.h&gt;int main(){ printf("%m\n"); return 0;}运行结果rpz@funct:~$ ./a.out Success恩? 发现怎么回事儿 …...原创 2018-05-25 16:04:57 · 5026 阅读 · 2 评论 -
系统调用(二)
系统调用(二)系统调用(二)SYSCALL_DEFINEx函数调用__SC_DECL##x宏定义总结SYSCALL_DEFINEx函数调用文件syscall.h在include/linux/中.在select和epoll的分析中, 出现了好几次SYSCALL_DEFINEx()的函数, 这些究竟是些什么呢? 现在我们就来探讨一下源码中他们是什么....原创 2018-05-21 15:54:09 · 671 阅读 · 0 评论 -
全局描述符表 GDT
全局描述符表GDT全局描述符表主要是为了让计算机从实模式到保护模式.在实模式下面访问的地址都是真实的物理地址, 这样的话每个程序都能直接的访问物理地址, 并修改物理地址会很容易的造成系统的崩溃, 死机. 所以为了让用户不能直接的访问物理地址创造了虚拟地址, 而让系统从物理地址映射到逻辑地址就是从实模式到保护模式的过程.(这里的物理地址就是线性地址, 主要因为只分段那么 物理地址=线性地址, ...原创 2018-10-27 21:50:05 · 1174 阅读 · 0 评论