摘要: 教材内容总结 进程调度的时机 中断处理过程(包括时钟中断、I/O中断、系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(); 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作 阅读全文
posted @ 2018-12-09 22:53 张子松20189229 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 一、实验要求: 1.理解编译链接的过程和ELF可执行文件格式,详细内容参考本周第一节; 2.编程使用exec 库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式,详细内容参考本周第二节; 3.使用gdb跟踪分析一个execve系统调用内 阅读全文
posted @ 2018-12-02 23:19 张子松20189229 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 进程的描述和进程的创建 操作系统内核实现的操作系统三大管理功能: 进程管理 内存管理 文件系统 进程描述符 linux中用一个数据结构struct task_struct来描述进程,称为进程描述符,具体结构示意图如下: 其中 state 运行状态 stack 进程堆栈 struct list_hea 阅读全文
posted @ 2018-11-25 22:33 张子松20189229 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 系统调用的三层机制(下) 本章主要讲解在内核态跟踪调试一个系统调用,进一步分析系统调用的内核处理过程。 给MenuOS增加命令 重现克隆新版本的meun,其中已添加了time/time asm两个系统调用函数,time为C语言方式显示系统时间,time asm为使用汇编方式显示系统时间。如图: 使用 阅读全文
posted @ 2018-11-18 23:15 张子松20189229 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 系统调用的三层机制(上) 用户态、内核态和中断 内核态:高执行级别,代码可以执行特权指令,访问任意的物理内存,CPU的执行级别对应的就是内核态。 用户态:与内核态相对应的低级别指令,代码能够掌控的范围会受到限制。 中断:中断处理是用户态进入内核态的主要方式。系统调用是特殊的中断(用户态程序在执行过程 阅读全文
posted @ 2018-11-11 22:05 张子松20189229 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 本次写博客之前,先看了看其他已经交了的同学的博客,顿时觉得自己对本章内容理解还不到位,于是又回去重新整理了一遍,将本章内容汇总如下: MenuOS的构造 基于Linux内核源代码构造一个简单的操作系统MenuOS。 Linux内核源代码简介 计算机的“3大法宝” 存储程序计算机 函数调用堆栈 中断 阅读全文
posted @ 2018-11-04 16:40 张子松20189229 阅读(198) 评论(1) 推荐(0) 编辑
摘要: 一. mykernel实验指导(操作系统是如何工作的) 运行并分析一个精简的操作系统内核,理解操作系统是如何工作的 使用实验楼的虚拟机打开shell 1.cd LinuxKernel/linux 3.9.4 2.qemu kernel arch/x86/boot/bzImage 然后cd myker 阅读全文
posted @ 2018-10-28 23:10 张子松20189229 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 计算机是如何工作的_试验一 汇编一个简单的程序 初始程序如下: 之后,在终端中输入命令:gcc S o main.s main.c m32 S目的为输出汇编文件, o后跟输出目标文件名称, m32用来产生32位汇编代码。 打开main.s后为汇编代码,如图: 汇编文件中有一些“.”打头的字符串是编译 阅读全文
posted @ 2018-10-21 20:40 张子松20189229 阅读(212) 评论(1) 推荐(0) 编辑
摘要: 学习实验楼《linux基础入门》课程,虽名为基础,但学习起来仍很吃力,又由于预留时间不足,基础较差,所以未能完全学完,下周会专门拿出时间完成课程。下面就已学部分中之前思路不是很清晰的知识点做一下汇总: linux系统简介 分时操作系统 不仅可以交互,还能使多个用户从不同的终端同时操作主机。 shel 阅读全文
posted @ 2018-10-14 23:06 张子松20189229 阅读(152) 评论(1) 推荐(0) 编辑