
Linux内核学习
文章平均质量分 63
zzzzzyyyz
这个作者很懒,什么都没留下…
展开
-
虚拟内存和memory.c解析
问题:1.在运行应用程序的时候,是把所有的代码和数据全部加载到内存中么?如果不是,那么在用到一些代码而这些代码不在内存中该肿么办?2.在fork一个进程的时候,我们完全的为子进程拷贝了父进程的内存空间,那么这个进程的拷贝是真的创建了两个完全一个的内存块在物理内存中么?如果不是,那操作系统怎么做的(写时拷贝)memory.c内存管理主要实现了两个重要方式:1.分页机制:缺页重读2.内存读写权限:用时拷贝在页目录和页表表项结构中会空余12位的长度供其它权限使用其中: ...原创 2021-05-16 21:36:48 · 380 阅读 · 0 评论 -
内存管理机制
目的: 1.了解Linux内存的管理机制(分段 分页) 2.了解虚拟内存和物理内存的映射方式 3.了解操作系统内存与磁盘的交互(分页机制--->缺页重读机制,用时拷贝机制) 4.应用程序如何高效使用内存和高级程序的设计方法名词: 内存以页为单位存在,一页为4k的大小 逻辑地址:程序员看到的地址,Linux操作系统分配给每个进程的独立地址 线性地址:总线地址ARM CP...原创 2021-05-16 09:21:24 · 109 阅读 · 0 评论 -
进程的销毁
1.进程的销毁流程 1.1exit是销毁函数------------一个系统调用-------do exit首先该函数会释放进程的代码段和数据段占用的内存 1.2关闭进程打开的所有文件,对当前的目录和i结点进行同步(文件操作) 1.3如果当前要销毁的进程有子进程,那么就让1号进程作为新的父进程(init进程) 1.4如果当前进程是一个会话头进程,则会终止会话中的所有进程 1.5改变当前进程的运行状态,变成...原创 2021-05-15 13:28:08 · 676 阅读 · 0 评论 -
进程调度与进程切换
进程调度void schedule(void) 进程调度函数void schedule (void){ int i, next, c; struct task_struct **p; // 任务结构指针的指针。/* 检测alarm(进程的报警定时值),唤醒任何已得到信号的可中断任务 */// 从任务数组中最后一个任务开始检测alarm。 for (p = &LAST_TASK; p > &FIRST_TASK; --p) if (*p) {//.原创 2021-05-14 16:45:26 · 879 阅读 · 0 评论 -
进程的初始化与创建
main.c入口void main_rename(void) /* 这里确实是void,并没错。 */{ /* 在startup 程序(head.s)中就是这样假设的。 *//* * 此时中断仍被禁止着,做完必要的设置后就将其开启。 */ // 下面这段代码用于保存: // 根设备号 -> ROOT_DEV; 高速缓存末端地址 -> buffer_memory_end; // 机器内存数 -> memory_end;主内存开始地址 -> main_memor原创 2021-05-13 23:59:24 · 743 阅读 · 0 评论 -
进程的数据结构
struct task_struct{/* these are hardcoded - don't touch */ long state; /* -1 unrunnable, 0 runnable, >0 stopped */ long counter; long priority; long signal; struct sigaction sigaction[32]; long blocked; /* bitmap of masked signals *//* var.原创 2021-05-13 23:58:54 · 169 阅读 · 0 评论 -
JIFFIES——系统滴答
CPU内部有一个RTC,会在上电的时候调用mktime函数算出从1970年1月1日0时开始到当前开机点所过的秒数long kernel_mktime (struct tm *tm){ long res; int year; year = tm->tm_year - 70; // 从70 年到现在经过的年数(2 位表示方式), // 因此会有2000 年问题。 /* magic offsets (y+1) needed to get leapyears right. *..原创 2021-05-13 21:23:42 · 352 阅读 · 0 评论 -
中断
目的:1.硬件的中断响应---->内核驱动中的中断2.系统调用的函数响应(sys_call)--->系统调用3.自定义中断---->软件的软中断模式4.信号中断---->对了解信号的使用 创建5.系统的异常和错误---->系统的异常获取 了解系统异常的作用1.Linux的中断机制 1.1 分类:硬件中断 软件中断 硬中断:由电脑主机的B259A类似的硬件中断控制芯片发出的中断...原创 2021-05-13 15:12:54 · 104 阅读 · 0 评论 -
system_call.s
_system_call: cmp eax,nr_system_calls-1 ;// 调用号如果超出范围的话就在eax 中置-1 并退出。 ja bad_sys_call push ds ;// 保存原段寄存器值。 push es push fs push edx ;// ebx,ecx,edx 中放着系统调用相应的C 语言函数的调用参数。 push ecx ;// push %ebx,%ecx,%edx as parameters push ebx ;// to the system .原创 2021-05-13 15:21:06 · 176 阅读 · 0 评论