`

(第6章 1)最简单的进程

 
阅读更多


 

 

第一步——ring0 --> ring1

(汇编和C的相互调用,见P121. )

 

r/kernel/kernel.asm ==>

...

extern   p_proc_ready     ; 这里是怎么在调用的啊??? 

 

restart:

     mov  esp,  [p_proc_ready]   ; r/include/global.h有EXTERN PROCESS* p_proc_ready,r/include/有如下定义:

                                                       ; typedef struct s_proc {

 

                                                       ;  STACK_FRAME regs;          /* process registers saved in stack frame */

                                                       ; 

 

                                                       ;  u16 ldt_sel;               /* gdt selector giving ldt base and limit */

 

                                                       ;  DESCRIPTOR ldts[LDT_SIZE]; /* local descriptors for code and data */

                                                       ; 

 

                                                       ;         int ticks;                 /* remained ticks */

 

                                                       ;         int priority;

                                                       ; 

 

                                                       ;  u32 pid;                   /* process id passed in from MM */

 

                                                       ;  char p_name[16];           /* name of the process */

 

                                                       ; }PROCESS;

     lldt    [esp+P_LDT_SEL]       ; 把“内核栈”中一个“进程表”的u16 ldt_sel的内容载入ldtr

 

     lea    eax,  [esp+P_STACKTOP]     ; eax被赋予esp+P_STACKTOP

     mov  dword  [tss+TSS3_S_SP0],  eax

restart_reenter:

     dec   dword  [k_reenter]

     pop  gs

     pop  fs

     pop  es

     pop  ds

     popad

     add  esp,  4

     iretd

 

 

r/kernel/main.c ==>

#include "proto.h"    // 声明了 void restart(); 因此在下面的C代码中可以直接用汇编函数restart (r/kernel/kernel.asm中)

...

 

PUBLIC int kernel_main(){

     restart();

}

  • 大小: 17 KB
分享到:
评论

相关推荐

    第2章 进程管理总结.pdf

    进程是操作系统中最基本的执行单元,每个进程都有自己的内存空间和系统资源。进程管理的主要任务是确保进程之间的同步和互斥,以避免资源的竞争和冲突。 二、进程同步技术 进程同步技术是指在多进程环境下,为了...

    第四章 进程调度程序

    ### 第四章 进程调度程序 #### 一、进程调度程序概述 进程调度程序是操作系统内核的一个关键组成部分,负责在多个可运行状态的进程间分配处理器的时间资源。它是多任务操作系统的基础,通过合理的调度策略来提高...

    操作系统--第七章进程同步

    1. **互斥锁**:互斥锁是一种最简单的同步机制,它确保任何时候只有一个进程可以持有锁并访问共享资源。一旦某个进程获得了锁,其他所有试图获取该锁的进程都将被阻塞,直到锁被释放。 2. **信号量**:信号量是一种...

    第2章 进程管理3.pdf

    - **整型信号量**:整型信号量是最简单的信号量类型,它包含一个整数值,通过 `wait(S)` 和 `signal(S)` 原子操作来进行访问。其中 `wait(S)` 操作会在信号量值小于等于零时阻塞当前进程,直到信号量值大于零;`...

    操作系统期中练习题第2章进程管理习题(无答案)

    ### 操作系统期中练习题第2章进程管理习题解析 #### 1. 进程与临界区 **题目解析**: 1. **题目描述**:在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区。所谓临界区是指。 - **正确答案**...

    怎么快速判断哪些进程是系统进程最简单的方法.docx

    6. **使用其他工具**:除了任务管理器,还可以借助第三方工具,如Process Explorer或Process Hacker,它们提供了更详细的信息,如进程的父进程、关联的DLLs等,有助于识别系统进程。 7. **在线查询**:虽然在描述中...

    计算机操作系统课件:第3章进程与进程管理-进程调度03.ppt

    6. 前后台调度:用于区分交互式进程和批处理进程,保证交互式进程的响应时间。 7. 多级反馈队列:根据进程的行为动态调整优先级,兼顾长短作业。 这些算法各有优缺点,适用于不同的操作环境和系统需求。在实际应用...

    北大青鸟linux 第一章到第8章

    【第六章:用户与组管理】 了解Linux的用户账户体系,学习如何创建、删除和管理用户及用户组。掌握passwd、useradd、userdel、groupadd、groupmod等命令的使用,确保系统的安全性和访问控制。 【第七章:软件包...

    操作系统实验报告(进程管理)

    1. 先来先服务(FCFS)调度算法:这种算法按照进程到达的顺序进行服务,是最简单的调度策略。每个进程在没有其他进程阻塞其执行的情况下,会一直运行直到完成。 2. 时间片轮转(RR)调度算法:该算法将处理机时间...

    模拟进程调度(C++)

    其次,先来先服务算法是最简单的调度策略,它按照进程到达系统的顺序分配CPU。在C++中,我们可以使用链表或数组来存储进程,按照它们到达的顺序进行排列。当需要调度时,从链表或数组的头部取出第一个进程进行执行。...

    易语言源码易语言多种结束进程方法源码.rar

    结束`: 这是最基本的结束进程方法,通过指定进程ID来结束目标进程。例如,`进程.结束(进程ID)`,这里的`进程ID`是需要结束的进程的唯一标识。 3. **多途径查找进程** - `进程表.获取进程`: 通过进程名称查找进程,...

    API枚举进程例程.rar

    2. **Process32First/Process32Next**: 这两个函数配合使用,用于从由CreateToolhelp32Snapshot创建的快照中获取第一个进程信息,以及之后的每一个进程信息。Process32First初始化遍历,返回第一个进程的结构体;...

    操作系统进程调度算法实现

    1. **先来先服务(FCFS,First-Come, First-Served)**:这是最简单的调度策略,按照进程到达的顺序进行调度。FCFS保证了公平性,但可能导致短进程等待时间过长,影响系统效率。 2. **短作业优先(SJF,Shortest ...

    进程清理.rar 清理掉不必要的进程

    1. **任务管理器**:在Windows系统中,可以通过任务管理器查看当前运行的进程,选择不熟悉的或者高资源占用的进程结束。在MacOS中,可以使用活动监视器进行类似操作。这是最直接的清理方式,适合对计算机有一定了解...

    计算机网络课件-第六章-应用层.ppt

    计算机网络课件-第六章-应用层 本资源是关于计算机网络的应用层的课件,主要介绍了应用层的协议和概念,包括域名系统(DNS)、文件传送协议(FTP)、远程终端协议(TELNET)、万维网(WWW)、电子邮件、动态主机...

    操作系统第三章课后答案

    ### 操作系统第三章课后答案解析 #### 第三章 处理机调度与死锁 **1. 高级调度与低级调度的主要任务是什么?为什么要引入中级调度?** **高级调度的主要任务:** 高级调度是操作系统内核管理部分的重要功能之一,...

    第6章 CPU调度练习题1

    在本章的CPU调度练习题中,我们关注了多种调度算法及其特点。 1. 批处理作业通常需要通过作业控制语言(A)来定义其执行步骤和要求,而非程序设计语言、操作控制命令或特权指令。 2. 在调度算法中,响应比高者优先...

    实现进程间通讯功能(以记事本为例子)

    这一步骤是实现IPC的第一步,我们需要知道目标进程(记事本)的PID以便与其通信。 4. **发送消息**:在Windows API中,可以使用`FindWindow`函数找到指定类名或窗口标题的窗口句柄,然后用`SendMessage`或`Post...

    UNIX环境高级编程(第十四章)

    【UNIX环境高级编程(第十四章)】章节主要讲解了UNIX系统中进程间通信(IPC,InterProcess Communication)的各种机制,这些机制允许不同进程之间高效地交换信息,超越了简单的文件共享和进程创建。以下是对各知识...

Global site tag (gtag.js) - Google Analytics