摘要: 这是我在学习Linux0.11内核时做的笔记,以作为以后复习使用。本文解释为什么fork()函数会调用一次,返回两次。以及为什么返回给父进程的是子进程的pid,而返回给子进程的是0。 大致过程 用户程序调用fork()函数(标准库)->中断处理程序(system_call.s)->sys_fork( 阅读全文
posted @ 2018-04-04 15:03 SAIKA 阅读(373) 评论(0) 推荐(0) 编辑
摘要: 在Linux0.11中,进程的切换是基于intel提供的TSS机制的,要从一个进程切换到别的进程,就是切换TSS这个结构。但是,这样的切换方式效率太低,所以后来Linux和Windows都改成采用基于内核栈来切换这种方式。由于TSS机制比较简单,所以大部分精力用于讲解基于内核栈机制。 以下的基于内核 阅读全文
posted @ 2018-01-28 00:05 SAIKA 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 在应用程序中,很多时候都会调用到系统调用来完成一些操作,可是系统调用是在内核态下才能调用,用户态下的应用程序是无法直接调用到的,那么操作系统是怎么处理这一过程的呢? 本文的环境是基于Linux 0.11,没有查证现代操作系统是否有所变化,不过基本思路应该差不多。 过程: 先来看一张图,有个大概的理解 阅读全文
posted @ 2018-01-20 00:05 SAIKA 阅读(543) 评论(0) 推荐(0) 编辑