27.进程概述

简介

在单CPU计算机中进程是模拟多CPU实现多个任务“同时”运行的机制。单CPU计算机中CPU在任意时刻只能执行一个功能,如果CPU在多个功能之间快速的切换就实现了一种“同时”运行的错觉,给人一种同时运行的假象,能同时听歌、同时浏览网页。

目标

实现一个简单的进程,初步建立进程切换和保存相关进程信息的概念!

1.发生任务切换时,CPU需要保存正在运行进程的相关信息如cs、eip等,将来任务切换回来后还可以继续执行。实现这样的功能intel X86架构的CPU专门提供任务门描述符,数据结构描述如下:
新建multi_task.h

typedef struct _TSS32 {
	int backlink, esp0, ss0, esp1, ss1, esp2, ss2, cr3;
	int eip, eflags, eax, ecx, edx, ebx, esp, ebp, esi, edi;
	int es, cs, ss, ds, fs, gs;
	int ldtr, iomap;
}TSS32;

实现任务的切换还需要称为任务门的全局描述符指向相关的TSS32 数据结构(共104字节长度),只不过该描述符在进入保护模式后可以使用C语言实现相关数据的填充、初始化。
multi_task.h 增加段描述符如下:

//全局描述符数据结构
//与汇编全局描述符的数据结构定义完全是等价
typedef struct _SEG_DESC {
    short limit_low, base_low;
    char base_mid, access_right;
    char limit_high, base_high;
}SEG_DESC;


//设置描述符信息
//seg		描述符
//limit		段偏移
//base		段基质
//ar		段属性	
void set_segd
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值