From f0552a49fdfe4e40c79dd36d6e54345197550a59 Mon Sep 17 00:00:00 2001 From: Shine wOng <1551885@tongji.edu.cn> Date: Wed, 27 Nov 2019 16:47:25 +0800 Subject: [PATCH] update lab4, lab5 report, update words. --- thu_os/chp11.md | 12 +++--- thu_os/chp15.md | 4 +- thu_os/images/proc_state.png | Bin 50590 -> 47691 bytes thu_os/lab4_report.md | 38 ++++++++-------- thu_os/lab5_report.md | 81 ++++++++++++++++++++++++++++++++--- words.md | 4 +- 6 files changed, 105 insertions(+), 34 deletions(-) diff --git a/thu_os/chp11.md b/thu_os/chp11.md index 38e7e4b..27928f4 100644 --- a/thu_os/chp11.md +++ b/thu_os/chp11.md @@ -7,11 +7,11 @@ 前面在物理内存管理部分,我有提到物理内存管理的一切目的,都是为了多任务的系统,否则对于单道程序的操作系统,直接让那单道程序独占内存和CPU就可以了,自然不需要内存管理,显然也不需要进程的管理。所以,进程概念的产生,其实还是处在多道程序的背景下的。 -正是因为操作系统希望同时运行多道程序,而我们都知道程序运行需要资源,因此操作系统需要合理地把自己的资源组织管理起来,在程序运行的时候分配相应的资源,在程序退出的时候回收那部分资源。那么问题来了?操作系统怎么知道把资源分配给了谁?怎么知道资源的占有者什么时候退出?又怎么知道应该从哪里回收分配出去的资源?因此,需要对每一个运行的任务进行抽象。对每一个运行的程序的抽象,就是这里进程的概念。这样,进程就成了操作系统资源分配的基本单位。 +正是因为操作系统希望同时运行多道程序,而程序运行需要资源,因此操作系统需要合理地把自己的资源组织管理起来,在程序运行的时候分配相应的资源,在程序退出的时候回收那部分资源。那么问题来了?操作系统怎么知道把资源分配给了谁?怎么知道资源的占有者什么时候退出?又怎么知道应该从哪里回收分配出去的资源?因此,需要对每一个运行的任务进行抽象。对每一个运行的程序的抽象,就是这里进程的概念。这样,进程就成了操作系统资源分配的基本单位。 ## 进程与程序的区别 -我们都知道,程序其实就是编译后的代码,机器码,驻留在外存或者内存当中。那么进程呢?其实上面已经提出了,进程本质上就是运行的程序。这句话涵盖了它们之间的全部区别。 +程序其实就是编译后的代码,机器码,驻留在外存或者内存当中。那么进程呢?其实上面已经提出了,进程本质上就是运行的程序。这句话涵盖了它们之间的全部区别。 一方面,进程必然是包含程序的,毕竟它需要运行这个程序,但是程序只是进程的一部分。【进程是运行的程序】,这里的【运行】,就体现了它们之间的区别——既然程序要运行,就必然在代码以外还需要一定的数据,就必然需要占用一定的资源,比如代码和数据驻留的内存资源,就会涉及到程序当前的执行状态,比如一些上下文的信息,还有寄存器的信息。因此,可以概括出,进程是由代码,数据,各个寄存器以及占用的资源所组成的。 @@ -99,7 +99,7 @@ > 状态队列的概念 -前面已经提过,操作系统会为不同状态的进程分别维护一个单独的队列,即状态队列。现在我们知道,随着进程状态的切换,状态队列也会发生相应的变化,进程会从从一个队列加入到另一个队列。在进程状态模型下,状态队列的切换如图所示: +前面已经提过,操作系统会为不同状态的进程分别维护一个单独的队列,即状态队列。随着进程状态的切换,状态队列也会发生相应的变化,进程会从从一个队列加入到另一个队列。在进程状态模型下,状态队列的切换如图所示: ![status_queue](images/status_queue.png) @@ -109,13 +109,13 @@ 设想一种场景。现在我们有一个MP3播放器的应用程序,该应用程序主要有三个核心功能模块,即从MP3音频文件中读取数据,将读取的数据解压缩,将解压缩后的音频数据播放出来。应该如何实现这个应用程序呢? -这里我们主要考虑的指标是音频文件播放是否流畅、连贯。为此,就需要设计的应用程序可以及时将刚读出来的压缩数据解压缩,并且播放出来。一种简明的设计思路如下图所示: +这里主要考虑的指标是音频文件播放是否流畅、连贯。为此,就需要设计的应用程序可以及时将刚读出来的压缩数据解压缩,并且播放出来。一种简明的设计思路如下图所示: ![mp3_version_1](images/mp3_version1.png) -在该设计思路中,我们将读取数据,解压缩,播放文件依次执行。但是不难看出,这种实现存在很致命的缺陷:各个模块之间不能并行进行。可以看到,这里读取压缩音频文件涉及到I/O操作,解压缩是CPU密集型操作,因此这两个模块在理论上是可以并发执行的,即在将压缩文件读取出来的同时,CPU可以对这些数据进行解压缩,这样可以大幅度提高资源的利用效率。此外,按照我们的设想,在播放时应该也可以同时进行读文件和解压的操作,在这种实现方式都却不能做到。在这种实现下,为了播放音频文件连贯,必须一次性将全部音频文件读出并且解压缩,最后才能播放,漫长的等待时间非常影响用户体验。 +在该设计思路中,读取数据,解压缩,播放文件依次执行。但是不难看出,这种实现存在很致命的缺陷:各个模块之间不能并行进行。可以看到,这里读取压缩音频文件涉及到I/O操作,解压缩是CPU密集型操作,因此这两个模块在理论上是可以并发执行的,即在将压缩文件读取出来的同时,CPU可以对这些数据进行解压缩,这样可以大幅度提高资源的利用效率。此外,按照我们的设想,在播放时应该也可以同时进行读文件和解压的操作,在这种实现方式都却不能做到。在这种实现下,为了播放音频文件连贯,必须一次性将全部音频文件读出并且解压缩,最后才能播放,漫长的等待时间非常影响用户体验。 -为了将各个操作并行地推进,我们很自然地联想到将各个核心模块全都加载到一个进程中,即为了运行这个MP3播放器软件,我们同时需要三个进程,这种设计思路如下图所示: +为了将各个操作并行地推进,很自然地联想到将各个核心模块全都加载到一个进程中,即为了运行这个MP3播放器软件,我们同时需要三个进程,这种设计思路如下图所示: ![mp3_version_2](images/mp3_version2.png) diff --git a/thu_os/chp15.md b/thu_os/chp15.md index 889fb99..b9c03c1 100644 --- a/thu_os/chp15.md +++ b/thu_os/chp15.md @@ -27,7 +27,7 @@ 为了提升系统的吞吐量,一方面可以通过减小系统内部的开销,如进程切换时的上下文切换开销,以及操作系统本身的开销。另一方面,则可以通过减小每个进程等待时间来实现。此外,操作系统需要保证吞吐量不受用户交互的影响,即在存在许多交互任务时,还是需要不时进行调度。 -而为了降低系统的相应时间,可以从调度算法的策略来着手,比如让交互式进程具有比较高的优先级,以及时处理用户的请求。此外,还需要减少平均响应时间的波动,让系统具有较好的可预测性。 +而为了降低系统的响应时间,可以从调度算法的策略来着手,比如让交互式进程具有比较高的优先级,以及时处理用户的请求。此外,还需要减少平均响应时间的波动,让系统具有较好的可预测性。 最后,调度策略还有一个公平性指标,比如在多用户的情况下,让各个用户几乎均分CPU的使用权。有一种策略是保证每个进程占用CPU的时间相同,但是这种策略显然经不起推敲,因为如果一个用户创建更多进程,他就可以获得更多的CPU时间。为了解决这个问题,真正的策略应该是保证每个进程的等待时间相同。需要指出的是,为了保证系统的公平性,往往需要付出一定的代价,比如平均响应时间会增加。 @@ -123,7 +123,7 @@ HRRN算法就是在每次调度时,总是选择响应比最高的进程,让 设想一种情况,在基于可抢占式的调度算法中,一个优先级较低的进程$P_1$当前占用CPU在执行,同时它还占用了一个共享资源`S`。此时有一个优先级很高的进程$P_2$在运行中申请共享资源`S`,由于$P_1$已经占用了该资源,$P_2$只能进入阻塞状态等待资源`S`。而这时出现了第三个进程$P_3$,它的优先级介于$P_1, P_2$之间,但是由于它并不需要资源`S`,$P_3$将抢占CPU进入运行。如果$P_3$的执行时间很长,那么$P_2$这个具有最高优先级的进程将不得不一直等待低优先级的进程执行,这就是优先级反置现象。 -为了解决这样一种情况,我们的想法是要占用资源的进程$P_1$迅速得到执行,以释放资源。为此,就需要暂时提升$P_1$的优先级,让它可以不被其他进程抢占。基于这种思想,就产生了下面的两种算法。 +为了解决这样一种情况,我们的想法是让占用资源的进程$P_1$迅速得到执行,以释放资源。为此,就需要暂时提升$P_1$的优先级,让它可以不被其他进程抢占。基于这种思想,就产生了下面的两种算法。 > 优先级继承 diff --git a/thu_os/images/proc_state.png b/thu_os/images/proc_state.png index 1c8625b9c83959187f40471e6b4b97e17fed7c5c..41738d984fc1032c5009fa4da2da856dd24c25fa 100644 GIT binary patch literal 47691 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 LepICLCg6VnS60be literal 50590 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 = PROC_UNINIT; - proc->pid = -1; - proc->runs = 0; - proc->kstack = 0; - proc->cr3 = boot_cr3; - proc->flags = 0; - proc->parent = NULL; - proc->mm = NULL; - proc->tf = NULL; - set_proc_name(proc, "undefined"); - proc->need_resched = 0; - proc->context.eip = 0; - proc->context.esp = 0; - proc->context.ebx = 0; - proc->context.ecx = 0; - proc->context.edx = 0; - proc->context.esi = 0; - proc->context.edi = 0; - proc->context.ebp = 0; + proc->state = PROC_UNINIT; + proc->pid = -1; + proc->runs = 0; + proc->kstack = 0; + proc->cr3 = boot_cr3; + proc->flags = 0; + proc->parent = NULL; + proc->mm = NULL; + proc->tf = NULL; + set_proc_name(proc, "undefined"); + proc->need_resched = 0; + proc->context.eip = 0; + proc->context.esp = 0; + proc->context.ebx = 0; + proc->context.ecx = 0; + proc->context.edx = 0; + proc->context.esi = 0; + proc->context.edi = 0; + proc->context.ebp = 0; } return proc; } diff --git a/thu_os/lab5_report.md b/thu_os/lab5_report.md index 88ec38e..81f60a1 100644 --- a/thu_os/lab5_report.md +++ b/thu_os/lab5_report.md @@ -223,7 +223,7 @@ copy_range(pde_t *to, pde_t *from, uintptr_t start, uintptr_t end, bool share) { ### `COW`机制实现 -简单的版本的话,就是在`do_fork`函数中,只是让子进程拷贝父进程的地址空间。一旦父进程或者子进程试图写它们共享的空间,可以通过`Page Fault`机制,为该页新分配一个空间,并且修改对应进程的页表。这样,被修改的页就只有修改页的那个进程可以看到,对于其他进程修改都是不可见的。当然,要是具体实现的话,需要考虑许多问题,情况比较复杂,我以后再好好专研吧。 +简单的版本的话,就是在`do_fork`函数中,只是让子进程拷贝父进程的地址空间。一旦父进程或者子进程试图写它们共享的空间,可以通过`Page Fault`机制,为该页新分配一个空间,并且修改对应进程的页表。这样,被修改的页就只有修改页的那个进程可以看到,对于其他进程修改都是不可见的。当然,要是具体实现的话,需要考虑许多问题,情况比较复杂,我以后再好好钻研吧。 ## 练习3: 阅读分析源代码,理解进程执行`fork/exec/wait/exit`的实现,以及系统调用的实现(不需要编码) @@ -369,7 +369,7 @@ syscall(void) { 随后,该进程还不能完全退出,而是进入`ZOMBIE`状态,即僵尸态。这是因为,它在完全退出之前,还需要唤醒父进程,并且等待它的父进程对它的处理,只有父进程完成对它处理,或者父进程不存在,比如已经退出了,该进程才能退出。这也是这里的`do_exit`需要一个`error_code`参数的原因,这样父进程就可以根据这个错误码的不同值,来完成不同的处理结果。在父进程完成对它的处理前,该进程需要调用调度函数`schedule`,让出CPU的控制权。 -原理课上就讲到这么多,但是在ucore里面还做了进一步操作。因为当前要退出的进程有可能还有子进程,ucore还完成了这些子进程的移交,从而避免它们成为没有父进程的孩子。具体的操作就是将这些子进程【过继】给了第一个内核线程,其中主要就涉及到几个指针`proc_struct.parent/cptr/optr/yptr`的修改。需要指出的是,这里的`cptr`在进程具有多个孩子的情形下,总是指向最小的一个孩子。具体的代码如下: +原理课上就讲到这么多,但是在ucore里面还做了进一步操作。因为当前要退出的进程有可能还有子进程,ucore还完成了这些子进程的移交,从而避免它们成为没有父进程的孩子。具体的操作就是将这些子进程`过继`给了第一个内核线程,其中主要就涉及到几个指针`proc_struct.parent/cptr/optr/yptr`的修改。需要指出的是,这里的`cptr`在进程具有多个孩子的情形下,总是指向最小的一个孩子。具体的代码如下: ```c // do_exit - called by sys_exit @@ -590,12 +590,83 @@ copy_thread(struct proc_struct *proc, uintptr_t esp, struct trapframe *tf) { ## 进程的切换与退出 -之前我一直很迷惑,这里ucore的进程怎么实现切换的,最后又是怎么退出的,一开始感觉非常神奇,后来发现原来是最朴素的策略。原来这里根本就没有什么所谓的时间片轮转算法,没有抢占机制,一切的切换都是进程自己主动通过系统调用执行的。 +之前我一直很迷惑,这里ucore的进程怎么实现切换的,最后又是怎么退出的,一开始感觉非常神奇,实际上在`lab5`里面是实现了一个简单的`时间片轮转算法`,这里的时间片长度就是`TICK_NUM`个时钟周期: -例如一个进程切换到另一个进程,只有下面几种可能性: +```c +trap_dispatch(struct trapframe *tf) { + char c; + + int ret=0; + + switch (tf->tf_trapno) { + ...... + case IRQ_OFFSET + IRQ_TIMER: + if(++ticks == TICK_NUM){ + ticks = 0; + print_ticks(); + current->need_resched = 1; + } + break; +``` + +在设置了`need_resched`标志位后,在`trap`函数中进行进程的切换: + +```c +void +trap(struct trapframe *tf) { + // dispatch based on what type of trap occurred + // used for previous projects + if (current == NULL) { + trap_dispatch(tf); + } + else { + // keep a trapframe chain in stack + struct trapframe *otf = current->tf; + current->tf = tf; + + bool in_kernel = trap_in_kernel(tf); + + trap_dispatch(tf); + + current->tf = otf; + if (!in_kernel) { + if (current->flags & PF_EXITING) { + do_exit(-E_KILLED); + } + if (current->need_resched) { + schedule(); + } + } + } +} +``` + +此外,一个进程切换到另一个进程,还有下面几种可能性: + 主动调用`schedule`,实现进程的切换。 + 通过`do_wait`函数,在没有子进程退出时,会调用`schedule`来完成切换。 + 通过`do_exit`函数,进入`ZOMBIE`状态后,会调用`schedule`来完成切换。 -此外,进程的退出也是一样,都是自己调用了`exit`系统调用来退出的,这和我们正常的系统不一样,所以一开始不能理解。我们实际用的系统,对于我平时写的沙雕程序,应该是系统或者编译器自动在程序结束时添加了系统调用`exit`,来退出的。 +此外,进程的退出,是自己调用了`exit`系统调用来退出的,这和我们正常的系统不一样,所以一开始不能理解。我们实际用的系统,对于我平时写的沙雕程序,应该是系统或者编译器自动在程序结束时添加了系统调用`exit`来退出的。 + +## 内核线程与用户进程的创建 + +通过`lab4`和`lab5`的讨论,应该可以看到内核线程和用户进程的创建是具有比较大的区别的,同时它们也具有一些共性,在这里做一个简单的总结。 + +对于一般的用户进程的创建(并非第一个用户进程),都是通过它的父进程调用`fork`来实现的,这里应该保证子进程与父进程几乎是相同的,包括执行相同的程序,具有相同的内存,打开文件表等。为了保证父子进程执行同一个程序,在`copy_thread`中将父进程的`tf`拷贝到子进程的`tf`中,并且设置子进程的 + +```c +proc->tf->tf_regs.reg_eax = 0; +proc->tf->tf_esp = esp; + +context.eip = (uintptr_t)forkrets; +context.esp = (uintptr_t)proc->tf; +``` + +这样就可以使子进程中断返回后,是从父进程被中断的位置开始执行,并且`fork`的返回值是零。而父进程的返回值则是子进程的`pid`。 + +对于内核线程的创建(并非第零号内核线程),总是通过某个内核线程调用`kernel_thread`,来将该内核线程的执行位置设置为`kernel_thread_entry`,在其中再跳转到实际执行的代码。可以看到,内核线程的创建没有用到它的父亲线程的`tf`信息,而是通过`kernel_thread`硬构建了一个。因此内核子线程自然不会从父亲线程处开始执行。 + +但是无论如何,两种线程都需要在`do_fork`中调用`copy_thread`函数,设置其上下文信息为`forkrets`,此后再通过`iret`跳转到它们的起始执行位置。这是两种线程的共性。 + +而对于第零个内核线程和第一个用户进程,它们两者的创建却具有相同的思想,即都是硬构造出自己的`tf`帧,然后通过`iret`转入实际执行的位置。它们的区别仅仅在于跳转的位置不同而已,一个是内核空间,而一个是用户空间。 diff --git a/words.md b/words.md index 6b62a0f..175d4e1 100644 --- a/words.md +++ b/words.md @@ -1994,8 +1994,8 @@ Some Words - The committee will appoint an independent auditor to examine the annual accounts. + compulsive -> (adj)doing something wrong or harmful a lot and unable to stop doing it.
(not compulsory) -> (adj)If a film, play, sports event, boot, etc. is compulsive, it is so interesting or exciting that you do not want to stop watching or reading it. +> (adj)doing something wrong or harmful a lot and unable to stop doing it.(not compulsory)
+> (adj)If a film, play, sports event, book, etc. is compulsive, it is so interesting or exciting that you do not want to stop watching or reading it. - a compulsive liar/thief/eater - He was a compulsive gambler and often heavily in debt.