您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > OSChap02-进程.
@hotmail.comQQ:215462624计算机的启动……1.上电:加电电源开关被按下时,机器就开始供电,主板的控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU恢复到初始状态。当芯片组检测到电源已经开始稳定供电时就会撤去RESET信号。CPU就从0XFFFF0处开始执行指令。这个地址属于BIOS的地址范围,这里只是一条跳转指令,跳到系统BIOS真正的启动代码处。2.自检:系统BIOS的启动代码首先做POST(上电自检):检测系统中一些关键设备是否存在和能否正常工作,例如内存、显卡等。由于POST是最早进行的检测过程,此时显卡还没有初始化,如果系统BIOS在POST的过程中发现了一些致命错误,那么系统BIOS就会直接控制喇叭发声来报告错误,声音的长短和次数代表了错误的类型。计算机的启动……3.初始化设备:系统BIOS将查找显卡的BIOS,存放显卡BIOS的ROM芯片的起始地址通常设在0xC0000处,系统BIOS在这个地方找到显卡BIOS之后就调用它的初始化代码,由显卡BIOS来初始化显卡,此时多数显卡都会在屏幕上显示出一些初始化信息,介绍生产厂商、图形芯片类型等内容。系统BIOS接着会查找其它设备的BIOS程序,找到之后同样要调用这些BIOS内部的初始化代码来初始化相关的设备。4.检测其他设备,例如硬盘、光驱、并口串口等,分配中断5.更新扩展系统配置信息,是系统BIOS和操作系统交换系统硬件配置信息的一种方式。计算机的启动……6.引导:根据用户指定的启动顺序从USB、硬盘或光驱启动操作系统。以WindowsXP为例,系统BIOS将启动盘(一般是主硬盘)的第一个扇区(BootSector,引导扇区)读入到内存的0x7C00处,并检查0x7DFE地址的内存,如果其内容是0xAA55,跳转到0x7C00处执行MBR(MasterBootRecord,主引导记录),MBR接着从分区表(PartitionTable)中找到第一个活动分区(ActivePartition,一般是C盘分区),然后按照类似方式读取并执行这个活动分区的引导扇区(PartitionBootSector),而引导扇区将负责读取并执行NTLDR(NTLoaDeR,WindowsNT的加载程序),然后主动权就移交给了Windows。如何自己动手引导计算机启动•所需软件–VirtualBox,VMware等虚拟机软件–Ubuntu,RedHat等Linux发行版–Windows–Linux下的汇编编译器nasm–程序源文件编辑器–Internet告诉编译器程序加载到7c00处movax,csmovds,axmoves,axcallDispStr;调用显示字符串例程jmp$;无限循环DispStr:movax,BootMessagemovbp,ax;ES:BP=串地址movcx,16;CX=串长度movax,01301h;AH=13,AL=01hmovbx,000ch;页号为0(BH=0)黑底红字(BL=0Ch,高亮)movdl,0int10h;10h号中断retBootMessage:dbHello,OSworld!times510-($-$$)db0;填充剩下的空间,使生成的二进制代码恰好为512字节dw0xaa55;结束标志程序1:来源于《自己动手写操作系统》•1.编写汇编程序•2.用nasm编译上述汇编程序–nasmboot.asm–oboot.bin–提示:需要先安装nasm工具,在Ubuntu环境下,使用:sudoapt-getinstallnasm即可•3.将bin文件转换成可启动的映像文件–ddif=boot.binof=boot.imgbs=512count=1–ddif=/dev/zeroof=boot.imgskip=1seek=1bs=512count=2879•4.将生成的img文件拷贝出来用于启动虚拟机–sudomkdir/mnt/share–sudomount–tvboxsfKanbox/mnt/share–前提:安装virtualBox的附件•5.新建虚拟机,用img文件启动进程Process•进程是操作系统最核心的概念•现代操作系统的一切都为进程而展开•进程是什么?–一个EXE程序?–一个文本文件(*.c,*.java…)?–……–正在运行的程序的一个抽象(正解)•进程模型–顺序执行–并发执行•伪并行–并行与并发(a)具有4道程序的多道程序设计.(b)抽象为4个独立进程.(c)在一个时刻仅有一个进程是活跃的TheProcessModel.程序的顺序执行S1:a=x+y;S2:b=a-5;S3:c=b+1;.程序顺序执行时的特征(1)顺序性:处理机的操作严格按照程序所规定的顺序执行。(2)封闭性:程序运行时独占全机资源,程序一旦开始执行,其执行结果不受外界因素影响。(3)可再现性:只要程序执行时的环境和初始条件相同,都将获得相同的结果。(不论它是从头到尾不停顿地执行,还是“停停走走”地执行)进程的并发执行S1:a=x+2S2:b=y+4S3:c=a+bS4:d=c+b顺序执行与并发执行•P1:–fp=Open(file1);–Sort(fp);–Print(fp);•P2:–Inta=3,b=4;–Intc=a+b;–Intd=sqrt(c);顺序执行与并发执行•P1:–Inta,b,c=0;–a=5;–b=sqrt(a);–c=a+b+c;•P2:–Inta,b,c=0;–a=5;–b=a*a;–c=a+b+c;=N+1Print(N)N=0Print(N)N=N+1N=0Print(N)N=0N=N+1有两个循环程序A和B它们共享一个变量N:A:N=N+1B:Print(N);N=0;思考•并发执行有没有问题?–YES•如果有,有什么问题?–不可再现•如何解决这样的问题?–进程的控制进程的并发执行•间断性:由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系。相互制约将导致并发程序具有“执行——暂停——执行”这种间断性的活动规律。•失去封闭性:是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行已失去了封闭性。•不可再现性:程序在并发执行时,由于失去了封闭性,导致不可再现性。顺序和并发•思考:各有什么优点与缺点?•思考:适用场合?进程的状态•进程的三种基本状态•就绪(Ready)状态:当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行。•执行状态(Running):进程已获得CPU,其程序正在执行。•阻塞状态(Blocked):正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,把这种暂停状态称为阻塞状态,有时也称为等待状态。单阻塞队列:多阻塞队列:进程的状态•New:进程已经创建,但未被OS接纳为可执行进程,并且程序还在辅存,PCB在内存•Exit:因停止或取消,被OS从执行状态释放进程的挂起状态挂起状态:使执行的进程暂停执行,静止下来,我们把这种静止状态称为挂起状态。引入挂起状态的原因(1)终端用户的请求。(2)父进程请求。(3)负荷调节的需要。当实时系统中的工作负荷较重,把一些不重要的进程挂起,以保证系统能正常运行。(4)操作系统的需要。操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。进程状态的转换•空白→新建–系统调用、用户登陆、用户请求……•新建→就绪–系统尚有空余资源,接纳进程并放入就绪队列•就绪→运行–获得了除了CPU之外的所有资源•运行→完毕–进程正常执行完毕或者被KILL进程状态的转换•运行→就绪–时间片用完、CPU被抢占•运行→阻塞–等待请求完成•阻塞→就绪–请求已经完成•就绪(阻塞)→退出–无偿地被KILL进程状态的转换•阻塞→阻塞挂起–释放内存空间•就绪→就绪挂起–没有阻塞进程,挂起就绪进程以释放空间•就绪挂起→就绪–没有就绪进程或者就绪进程优先级较低•阻塞挂起→阻塞•阻塞挂起→就绪挂起进程状态的转换•深入理解进程的状态转换,有助于深入理解操作系统的内部精髓!•思考:–哪些状态之间是不可以相互转换的?–为什么不存在这些转换?–有没有可能存在这些转换?进程的控制•进程状态(若干状态之间的转换及转换依据)•进程映像•进程控制块PCB(ProcessControlBlock)•进程图进程的控制•思考:–如果你是操作系统的设计者,你如何去控制进程?•进程映像–进程的程序、数据、堆、栈的集合•进程控制块–用于控制进程属性的集合。进程的控制原图来源于《操作系统—精髓与设计原理》进程的控制•进程控制块标识符状态优先级程序计数器内存指针上下文I/O状态审计信息处理器的寄存器数据信息程序代码和进程相关数据指针、共享内存块指针等下一条执行指令的地址处理器的使用时间总和、时间限制等进程的控制•进程标识–标识符•处理器状态信息–用户可见寄存器,控制和状态寄存器,栈指针•进程控制信息–调度和状态信息,进程间通信,特权、存储管理、资源使用情况
本文标题:OSChap02-进程.
链接地址:https://www.777doc.com/doc-2848111 .html