摘要: 第一部分 课程进行知识点总结 进程的启动和进程的切换机制: 初始化进程的数据结构 (可以初始化很多进程)start开始执行0号进程 搭建好CPU运行环境(进程搭建好堆栈和建立好入口), 完成了内核的初始化 ret 之后进程正式启动 如何切换?: switch to next process 将当前进 阅读全文
posted @ 2016-04-30 15:22 20135331文艺 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 一、调度时机 不同类型的进程有不同的调度需求 第一种分类: I/O-bound 频繁的进行I/O 通常会花费很多时间等待I/O操作的完成 CPU-bound 计算密集型 需要大量的CPU时间进行运算 第二种分类 批处理进程(batch process) 不必与用户交互,通常在后台运行 不必很快响应 阅读全文
posted @ 2016-04-17 08:53 20135331文艺 阅读(190) 评论(0) 推荐(0) 编辑
摘要: Linux中,可以从c源代码生产一个可执行程序,这其中要经过预处理、编译和链接的过程。可以参考以下图来理解这个过程: 其中,目标文件中至少有编译后的机器指令代码、数据,也还包括了链接时所须要的一些信息,比如符号表、调试信息、字符串等。这Linux中,可执行文件的格式现在主要是ELF格式(对应于Win 阅读全文
posted @ 2016-04-09 18:54 20135331文艺 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 分析fork函数对应的内核处理过程sys_clone,理解创建一个新进程如何创建和修改task_struct数据结构 Linux中创建进程一共有三个函数: fork :创建子进程 vfork:和fork类似 clone:创建线程 进程创建过程: SYSCALL_DEFINE0(fork){ retu 阅读全文
posted @ 2016-04-03 11:56 20135331文艺 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 进程 进程就是处于执行期的程序。进程就是正在执行的程序代码的实时结果。进程是处于执行期的程序以及相关的资源的总称。进程包括代码段和其他资源。 线程 执行线程,简称线程,是在进程中活动的对象。内核调度的对象是线程而不是进程。Linux对线程并不特别区分,视其为特殊的进程。 虚拟处理器和虚拟内存 在现代 阅读全文
posted @ 2016-04-03 11:38 20135331文艺 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 一、知识概要 (一)给MenuOS增加time和time-asm命令 (二)使用gdb跟踪系统调用内核函数sys_time (三)系统调用在内核代码中的工作机制和初始化 1. 系统调用在内核代码中的工作机制和初始化 2. 简化后便于理解的system_call伪代码 3. 简单浏览system_ca 阅读全文
posted @ 2016-03-25 19:17 20135331文艺 阅读(159) 评论(1) 推荐(0) 编辑
摘要: 使用C代码中嵌入汇编代码触发系统调用获取系统当前时间 首先 选定20号getpid系统调用 源代码如下: 在命令行中对main.c 文件进行编译 输入 gcc main.c -o main -m32 编译成功后 运行程序 : 运行成功后 出现 pid=18761 嵌入汇编代码:源代码如下: 进行编译 阅读全文
posted @ 2016-03-19 13:17 20135331文艺 阅读(268) 评论(0) 推荐(0) 编辑
摘要: Linux内核简介 1.3 操作系统和内核简介 操作系统 :是指在整个系统中负责完成最基本功能和系统管理的那些部分 它包括:内核 设备驱动 启动引导程序 命令行shell或者其他种类的用户界面 基本的文件管理工具和系统工具 内核:由负责响应中断的中断服务程序,负责管理多个进程从而分享处理器的时间调度 阅读全文
posted @ 2016-03-16 13:29 20135331文艺 阅读(163) 评论(1) 推荐(0) 编辑
摘要: 20135331文艺 首先 在上周内容中我们学习了 计算机三个法宝: 1、存储程序计算机 2、函数调用堆栈 3、中断 本周中得知 操作系统两把宝剑: 1、中断上下文的切换:保存现场和恢复现场 2、进程上下文的切换 跟踪分析Linux内核的启动过程 在Linux的内核结构目录中 arch中x86较为重 阅读全文
posted @ 2016-03-10 16:40 20135331文艺 阅读(218) 评论(0) 推荐(0) 编辑
摘要: mykernel源代码分析: 执行了my _start_kernel(void), 开始启动操作系统,这里作为操作系统的入口 代码中有一个循环 每循环10000次 便打印 一个my _start_kernel (值越大打印更慢) 每次时钟中断都调用一次printk 输出my interrupe ke 阅读全文
posted @ 2016-03-02 21:34 20135331文艺 阅读(118) 评论(0) 推荐(0) 编辑