linux内核
aweii
这个作者很懒,什么都没留下…
展开
-
linux kernel2.6中软中断运行线程ksoftirqd的创建
1、软中断由内核线程ksoftirqd处理,下面说一下它的创建过程。start_kernel()创建init线程,init()调用do_pre_smp_initcalls()->spawn_ksoftirqd(),spawn_ksoftirqd()分两次调用cpu_callback(),分别使用参数CPU_UP_PREPARE和CPU_ONLINE。使用CPU_UP_PREPARE调用原创 2011-11-12 17:02:28 · 2026 阅读 · 0 评论 -
linux-1.2.13内核的编译生成和引导
在linux目录下运行命令 make zimage即生成内核,过程是这样的。linux/makefile中有这一句:include arch/$(ARCH)/Makefile,指向了linux/arch/i386/makefile,其中有目标:--linux/makefile--MAKEBOOT = $(MAKE) -C arch/$(ARCH)/bootzImage: vmlin原创 2012-12-08 21:56:43 · 1236 阅读 · 2 评论 -
vsyscall page
-----------------------------------vsyscall page-------------------------------------内核中有一个永久固定映射页面(位于0xffffe000-0xffffefff),名为vsyscall页。这个区域存放了系统调用入口kernel_vsyscall的代码,以及信号处理程序的返回代码kernel_sigretu原创 2012-01-15 11:08:28 · 1968 阅读 · 0 评论 -
linux-2.0.35的打开文件系统调用sys_open分析
----sys_open:linux\fs\open.c----asmlinkage int sys_open(const char * filename,int flags,int mode){char * tmp;int fd, error;//获取打开文件描述符(进程打开文件结构指针数组的下标)fd = get_unused_fd();if (fd < 0)return fd原创 2012-12-08 21:58:36 · 1622 阅读 · 4 评论 -
linux2.6.11的工作队列机制分析
一、概述 工作队列提供了一种通过线程同步或者异步运行内核函数的通用机制。通过completion和等待队列实现了同步运行功能(调用者等待被调用函数执行完毕),不使用completion则可实现异步运行的功能。相关的定义和代码主要在以下文件中:linux\kernel\Workqueue.clinux\include\linux\Workqueue.h二、数据结构原创 2011-12-01 23:24:00 · 1130 阅读 · 0 评论 -
2.6.11内核CPU频率(khz)的计算
CPU频率的计算使用了两个函数init_cpu_khz()和calibrate_tsc() ----------------------------arch/i386/kernel/timers/Common.c--------------------//tsc_quotient中保存通过calibrate_tsc()计算得出(CPU单个时钟周期的微秒数)*(2^32)的值,然后原创 2013-03-17 11:07:32 · 2013 阅读 · 0 评论 -
Linux内核PROC文件系统的初始化和主要函数分析
简要介绍了linux2.4.0内核proc文件系统的初始化和部分函数代码。原创 2017-04-01 22:57:18 · 2543 阅读 · 0 评论 -
两种文件写操作的页缓存数据刷出操作和函数调用路径分析
一、内存映射文件的写操作(MAP_SHARED模式):1、写内存时按以下流程标记页为脏:pte_mkdirty(pte),swap_out->……->try_to_swap_out时set_page_dirty(page)2、文件映射内存同步到磁盘(调用sys_msync)(1)sys_msync->msync_interval:调用filemap_sync、filemap_fdata原创 2017-04-04 13:06:31 · 525 阅读 · 0 评论 -
Linux内核2.4.18创建硬链接的系统调用sys_link
1、磁盘目录项结构/* * The new version of the directory entry. Since EXT2 structures are * stored in intel byte order, and the name_len field could never be * bigger than 255 chars, it's safe to recla原创 2017-04-05 22:27:16 · 945 阅读 · 0 评论