`
redheart_2006
  • 浏览: 22429 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类

进程总结

 
阅读更多
http://www.cnblogs.com/wanghj-dz/p/3991997.html
第六章 进程总结
http://blog.csdn.net/begginghard/article/details/7389329

进程总结

挂起一个进程,需要把程序运行信息保存到进程控制块PCB中

进程恢复,运行程序时,需要用到该程序LDT中的段描述符,所以需要在PCB中有LDT描述符,LDT选择子,所以需要对PCB中的LDT描述符,LDT选择子作初始化.

进而需要在GDT中初始化该进程的LDT.

进程挂起或恢复过程中,需要用到三个堆栈:ring3级的程序堆栈,ring0级的PCB堆栈即REGS, 中断程序继续运行所需的ring0级的内核栈.所以需要用到TSS,需要初始化TSS.以及在GDT中初始化TSS描述符.

------------------------

所以总结如下:一个进程所涉及到的无非是:PCB,进程体,GDT,LDT,TSS

所以新建立一个进程时,需要新建一个该进程的PCB,加入到进程表中,并对该PCB进行初始化.同时修改GDT,LDT,TSS

----------------------

init_descriptor(&gdt[INDEX_LDT_FIRST],                                             参数1  INDEX_LDT_FIRST是LDT在GDT中索引为5,定义在protect.h中。见书236页

vir2phys(seg2phys(SELECTOR_KERNEL_DS),proc_table[0].ldts),           参数2   KERNEL_DS段基址+proc_table[0].ldts的偏移量得到进程ldt的基址

LDT_SIZE * sizeof(DESCRIPTOR),                                                       参数3   将进程ldt的基址放到gdt[index_ldt_first]处

DA_LDT                                                                                           参数4

);

初始化GDT中的LDT描述符

--------------------------------

http://www.cnblogs.com/wanghj-dz/archive/2011/05/20/2051641.html   这个我自己总结的还是很不错的。

http://www.cnblogs.com/wanghj-dz/archive/2011/05/19/2051173.html    restart()中的一些固定值需要了解,如 P_STACKTOP 指向进程PCB中regs的最尾端

--------------------------------------------------------------------------------------------------------------

只有调用进程运行在ring1,其他都运行在ring0。包括对进程PCB赋值初始化,中断处理,压入寄存器的值,挂起或恢复等等。

中断发生时,cpu会自动把cs ip,ss ,sp ,eflags压入堆栈,这个是系统自动完成的,不需要代码。

所以进程从ring1到ring0时,cpu已经压入了cs,ip,ss,sp到进程PCB的regs里了,到了retAdrr要跳过所以esp-4,然后再压入其他的。

补充一下:压入寄存器值,恢复寄存器值都是使用进程PCB中的regs堆栈。 压入之后,在中断处理程序中需要调用函数啊,就不能再使用进程的regs堆栈了,而是要跳到内核堆栈。

跳到内核堆栈后,才开始对中断的真正处理。

http://www.cnblogs.com/wanghj-dz/archive/2011/05/20/2052025.html

http://www.cnblogs.com/wanghj-dz/p/3986583.html

http://www.cnblogs.com/wanghj-dz/archive/2011/05/16/2047747.html

--------------------------------------------------------------------------------------------------------------

call之前的push 是调用函数的参数。

call之后的add,是将之前的push导致的esp恢复原位。



CLI禁止中断发生
STL允许中断发生

clock_int_msg 是个"^” 符号。

call  clock_handler   clock_handler函数调用里面,修改p_proc_ready,p_proc_ready自加1,将p_proc_ready所指向的地址赋值给TSS中的ESP,会导致TSS里面的ESP值改变,
; 中断返回时,根据TSS里面的ESP值恢复寄存器的值,就会导致进程切换

分类: 自己动手写操作系统,自己动手写操作系统第二次回顾
分享到:
评论

相关推荐

    Linux进程总结草稿[定义].pdf

    这篇文档主要总结了Linux进程的构成和80x86架构CPU对进程切换的支持机制。 1.1 进程的构成 一个进程通常由以下几个部分组成: 1. **task_struct**:这是进程控制块,包含了描述进程状态、资源分配、调度信息等核心...

    Linux 进程 总结

    Linux进程是操作系统中的一种基本抽象,它代表正在执行或等待执行的程序。进程不仅包括了程序的汇编代码,还包括程序的数据、状态以及各种资源,如文件、信号和内存等。在Linux内核中,每个进程都由一个task_struct...

    进程管理与通信总结

    ### 进程管理与通信总结 #### 基础概念 **进程与程序的区别:** - **进程**:是程序的一次动态执行过程,在内存中运行。进程具有生命周期,从创建到终止,其状态(如运行态、等待态等)会随时间而变化。 - **程序...

    进程的同步与互斥问题总结.doc

    进程的同步与互斥问题总结 进程的同步与互斥问题是操作系统中一个非常重要的概念。它解决了多个进程之间的资源竞争和相互制约关系问题。本文总结了进程的同步与互斥问题的分析和解决方法,并给出了十一个经典问题的...

    第2章 进程管理总结.pdf

    进程管理总结 本资源摘要信息将对进程管理的重要概念和技术进行总结,并结合实践例题来加深理解。 一、进程管理概念 进程管理是操作系统中的一部分,负责管理和调度系统中的进程。进程是操作系统中最基本的执行...

    操作系统进程间通信总结

    别人自己写的总结,内容是常用进程间通信方法及函数

    操作系统进程管理演示

    在这个"操作系统进程管理演示"中,我们将深入探讨几个关键的概念,包括进程的创建、时间片调度、阻塞与唤醒、进程撤销,以及如何显示就绪、阻塞和内存状态。 首先,我们来看**进程**。在操作系统中,进程是程序的...

    操作系统实验 进程的创建

    "操作系统实验 进程的创建" 在操作系统中,进程的创建是一个非常重要的概念。通过本次实验,我们可以加深对操作系统系统调用功能和进程概念的理解,明确进程和程序的区别,并掌握Linux中进程的创建方法,进一步理解...

    批处理文件.bat文件终止进程即杀死进程语句总结

    批处理文件.bat文件终止进程即杀死进程语句总结 bat文件中终止进程的命令如下: 成功: taskkill /pid %~1% /f taskkill /F /IM xxxx.exe /T 失败: taskkill /FI "IMAGENAME eq xxx.exe" 失败者,并不是所有程序...

    进程线程及堆栈关系的总结

    ### 进程线程及堆栈关系的总结 #### 一、进程与线程的概念及其关系 **进程**是具有一定独立功能的程序在一个特定数据集合上的运行活动,是系统进行资源分配和调度的一个独立单位。进程是操作系统进行管理和调度的...

    进程编程总结

    在这个总结中,我们将深入探讨进程的性质、编程技巧以及进程的退出机制,这些都是初学者在学习多任务处理时必须掌握的基础知识。 首先,我们要理解什么是进程。进程是计算机中运行的程序的一个实例,它包括程序代码...

    操作系统进程控制实验报告.doc

    下面是对实验报告的详细解读和知识点总结: 1. 进程概念: 进程是操作系统中的一种基本概念,指的是一段程序代码加上当前活动的集合,包括程序计数器和寄存器中的内容、进程堆栈段和数据段等。进程是操作系统中最...

    进程通讯总结及测试

    进程间的通信(IPC,Inter-Process Communication)是操作系统中一种重要的功能,允许不同进程之间交换信息,协同工作。本文将重点讨论其中的共享内存方式。 共享内存是一种高效的数据交换机制,它允许多个进程共享...

    从系统进程列表中根据进程名称查找指定进程及其模块

    总结来说,理解并掌握如何根据进程名称查找指定进程及其模块,是提高系统管理和维护能力的关键一步。通过学习相关的API调用和系统机制,开发者可以更有效地分析和控制系统的运行状态,确保系统的稳定和安全。

    一个简单的进程管理系统(总结报告)

    #### 四、总结 通过本次实验,不仅加深了对操作系统中进程管理基本原理的理解,还学会了如何利用C语言编程技术实现这些理论知识。虽然存在一些不足之处,但通过不断地迭代改进,可以进一步提高系统的稳定性和效率。

    进程操作 关闭进程 进程ID

    总结来说,VC++开发中,进程操作是系统编程的重要部分,涉及到枚举系统中运行的进程、关闭指定进程以及使用进程ID进行各种操作。通过学习和熟练掌握这些技术,开发者可以更好地控制和管理应用程序与其他进程的交互。...

    华清进程资料总结(含代码、试题)

    华清进程资料总结涵盖了这一领域的深入理解,包括理论知识、代码实现以及相关的试题,旨在帮助学习者全面掌握这一主题。 1. **进程**:进程是操作系统资源分配的基本单位,它拥有独立的内存空间,包括代码段、数据...

    linux高级编程知识点总结——进程线程

    ### Linux高级编程知识点总结——进程线程 #### 进程与程序的区别及PCB - **进程与程序的区别**: - **程序**:指一组指令的有序集合,以文件形式存储在磁盘等存储媒介上,是一个静态的概念。 - **进程**:是一...

    进程、线程知识点总结

    进程和线程是操作系统中两个核心概念,它们与程序的执行和系统资源的管理密切相关。 首先,进程是一个动态的概念,代表一个程序在特定数据集上的运行实例。它由代码、数据以及操作系统为管理进程所创建的进程控制块...

Global site tag (gtag.js) - Google Analytics