1. 进程的内容
一个计算机系统进程包括(或者说“拥有”)下列数据:
那个程序的可运行机器码的一个在存储器的映像。 分配到的存储器(通常包括虚拟内存的一个区域)。存储器的内容包括可运行代码、特定于进程的数据(输入、输出)、调用堆栈、堆栈(用于保存运行时运数中途产生的数据)。 分配给该进程的资源的操作系统描述符,诸如文件描述符(Unix术语)或文件句柄(Windows)、数据源和数据终端。 安全特性,诸如进程拥有者和进程的权限集(可以容许的操作)。 处理器状态(内文),诸如寄存器内容、物理存储器寻址等。当进程正在运行时,状态通常储存在寄存器,其他情况在存储器。 进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。
这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。那么被中止运行进程的中间数据存在何处好呢?当然这个地方应该是进程的私有堆栈。
让进程来占用处理器,实质上是把某个进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。
这就像多个同学要分时使用同一张课桌一样,所谓要收回正在使用课桌同学的课桌使用权,实质上就是让他把属于他的东西拿走;而赋予某个同学课桌使用权,只不过就是让他把他的东西放到课桌上罢了。
在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的 切换实质上就是被中止运行进程与待运行进程上下文的切换。在进程未占用处理器时,进程 的上下文是存储在进程的私有堆栈中的。 进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。
1)就绪状态(Ready):
进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
2)运行状态(Running):
进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
3)阻塞状态(Blocked):
由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行。 程序
程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
进程更能真实地描述并发,而程序不能;
进程是由进程控制块、程序段、数据段三部分组成;
进程具有创建其他进程的功能,而程序没有。
同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程。
在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。
线程
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
当下推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。 进程控制是进程管理中最基本的功能。它用于创建一个新进程,终止一个已完成的进程,或者去终止一个因出现某事件而使其无法运行下去的进程,还可负责进程运行中的状态转换。
创建进程
1.引起创建进程的事件
在多道程序环境中,只有(作为)进程(时)才能在系统中运行。因此,为使程序能运行,就必须为它创建进程。导致一个进程去创建另一个进程的典型事件,可以有以下四类:
1) 用户登录
在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中。
2)作业调度
在批处理系统中,当作业调度程序按照一定的算法调度到某作业时,便将该作业装入到内存,为它分配必要的资源,并立即为它创建进程,再插入到就绪队列中。
3) 提供服务
当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务,例如,用户程序要求进行文件打印,操作系统将为它创建一个打印进程,这样,不仅可以使打印进程与该用户进程并发执行,而且还便于计算出为完成打印任务所花费的时间。
4) 应用请求
在上述三种情况中,都是由系统内核为它创建一个新进程,而这一类事件则是基于应用进程的需求,由它创建一个新的进程,以便使新进程以并发的运行方式完成特定任务。
2.进程的创建过程
一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语create()按下述步骤创建一个新进程。
1) 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
2) 为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。显然,此时操作系统必须知道新进程所需要的内存大小。
3) 初始化进程控制块。PCB的初始化包括:
①初始化标识信息,将系统分配的标识符和父进程标识符,填入新的PCB中。
②初始化处理机状态信息,使程序计数器指向程序的入口地址,使栈指针指向栈顶。
③初始化处理机控制信息,将进程的状态设置为就绪状态或静止就绪状态,对于优先级,通常是将它设置为最低优先级,除非用户以显式的方式提出高优先级要求。
4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中。
进程终止
1.引起进程终止的事件
1)正常结束
在任何计算机系统中,都应该有一个表示进程已经运行完成的指示。例如,在批处理系统中,通常在程序的最后安排一条Hold指令或终止的系统调用。当程序运行到Hold指令时,将产生一个中断,去通知OS本进程已经完成。
2)异常结束
在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有:越界错误,保护错,非法指令,特权指令错,运行超时,等待超时,算术运算错,I/O故障。
3)外界干预
外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行。这些干预有:操作员或操作系统干预,父进程请求,父进程终止。
2. 进程的终止过程
如果系统发生了上述要求终止进程的某事件后,OS便调用进程终止原语,按下述过程去终止指定的进程。
1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。
2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真。用于指示该进程被终止后应重新进行调度。
3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。
4)将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。
阻塞唤醒
1.引起进程阻塞和唤醒的事件
1)请求系统服务
当正在执行的进程请求操作系统提供服务时,由于某种原因,操作系统并不立即满足该进程的要求时,该进程只能转变为阻塞状态来等待,一旦要求得到满足后,进程被唤醒。
2)启动某种操作
当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成,该操作完成后,将该进程唤醒。
3)新数据尚未到达
对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据才能运行以对数据进行处理,则是要其所需数据尚未到达,该进程只有(等待)阻塞,等到数据到达后,该进程被唤醒。
4)无新工作可做
系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来,新任务到达后,该进程被唤醒。
2.进程阻塞过程
正在执行的进程,当发现上述某事件后,由于无法继续执行,于是进程便通过调用阻塞原语block()把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞(等待)队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU环境。
3. 进程唤醒过程
当被阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。 进程的调度算法包括:
实时系统中:FIFO(First Input First Output,先进先出算法),SJF(Shortest Job First,最短作业优先算法),SRTF(Shortest Remaining Time First,最短剩余时间优先算法)。
交互式系统中:RR(Round Robin,时间片轮转算法),HPF(Highest Priority First,最高优先级算法),多级队列,最短进程优先,保证调度,彩票调度,公平分享调度。 进程是由进程控制块、程序段、数据段三部分组成。一个进程可以包含若干线程(Thread),线程可以帮助应用程序同时做几件事(比如一个线程向磁盘写入文件,另一个则接收用户的按键操作并及时做出反应,互相不干扰),在程序被运行后,系统首先要做的就是为该程序进程建立一个默认线程,然后程序可以根据需要自行添加或删除相关的线程。是可并发执行的程序。在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位,也是称活动、路径或任务,它有两方面性质:活动性、并发性。进程可以划分为运行、阻塞、就绪三种状态,并随一定条件而相互转化:就绪--运行,运行--阻塞,阻塞--就绪。
进程为应用程序的运行实例,是应用程序的一次动态执行。看似高深,我们可以简单地理解为:它是操作系统当前运行的执行程序。在系统当前运行的执行程序里包括:系统管理计算机个体和完成各种操作所必需的程序;用户开启、执行的额外程序,当然也包括用户不知道,而自动运行的非法程序(它们就有可能是病毒程序)。
2. 在C++中,用new申请了指针指向某内存却不用delete销毁,直到整个应用程序结束,会发生什么后果试详述原
这个要分情况讨论:
1。在一般情况下,若你写的程序是应用程序,那么如果不用delete销毁,操作系统会帮你销毁……因为每一个程序都有一个4GB虚拟内存,程序关闭后会自动解除这个程序所有用过的对象…
2。在内核情况下,也就是说你的程序是驱动程序,调用的是native API的话,不delete却关闭了程序,那么这块内存必须等到重新启动后才能释放,系统是不会自动释放它的…
其实一般你只要知道1。就行了,如果想知道更多的内容,就先看一下IntelCPU的保护模式,弄清楚操作系统多线程的原理,然后再参考一些驱动开发的书籍,或者rootkit获取ring0级权限程序的原代码(比如CIH)等……
3. 急求操作系统试题的答案
《操作系统》练习题及参考答案一、单项选择题(每小题1分,共15分)
1.操作系统是一种()
A.系统软件B.系统硬件C.应用软件D.支援软件
2.MS—DOS的存贮管理采用了()
A.段式存贮管理B.段页式存贮管理C.单用户连续存贮管理D.固定式分区存贮管理
3.用户程序在目态下使用特权指令将引起的中断是属于()
A.硬件故障中断B.程序中断C.外部中断D.访管中断
4.MS—DOS中用于软盘整盘复制的命令是()
A.COMP B.DISKCOPY C.SYS D.BACKUP
5.位示图方法可用于()
A.盘空间的管理B.盘的驱动调度C.文件目录的查找D.页式虚拟存贮管理中的页面调度
6.下列算法中用于磁盘移臂调度的是()
A.时间片轮转法B.LRU算法C.最短寻找时间优先算法D.优先级高者优先算法
7.在以下存贮管理方案中,不适用于多道程序设计系统的是()
A.单用户连续分配B.固定式分区分配C.可变式分区分配D.页式存贮管理
8.已知,作业的周转时间=作业完成时间-作业的到达时间。现有三个同时到达的作业J1,J2和J3,它们的执行时间分别是T1,T2和T3,且T1
A.T1+T2+T3 B.(T1+T2+T3)C.T1+T2+T3 D. T1+T2+T3
9.任何两个并发进程之间()
A.一定存在互斥关系B.一定存在同步关系C.一定彼此独立无关D.可能存在同步或互斥关系
10.进程从运行状态进入就绪状态的原因可能是()
A.被选中占有处理机B.等待某一事件C.等待的事件已发生D.时间片用完
11.用磁带作为文件存贮介质时,文件只能组织成()
A.顺序文件B.链接文件C.索引文件D.目录文件
12.一作业8:00到达系统,估计运行时间为1小时,若10:00开始执行该作业,其响应比是()
A.2 B.1 C.3 D.0.5
13.多道程序设计是指()
A.在实时系统中并发运行多个程序B.在分布系统中同一时刻运行多个程序C.在一台处理机上同一时刻运行多个程序D.在一台处理机上并发运行多个程序
14.文件系统采用多级目录结构后,对于不同用户的文件,其文件名()
A.应该相同B.应该不同C.可以相同,也可以不同D.受系统约束
15.在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是()
A.无上邻空闲区,也无下邻空闲区B.有上邻空闲区,但无下邻空闲区C.有下邻空闲区,但无上邻空闲区D.有上邻空闲区,也有下邻空闲区
二、双项选择题(每小题2分,共16分)
1.能影响中断响应次序的技术是()和()。
A.时间片B.中断C.中断优先级D.中断屏蔽E.特权指令
2.文件的二级目录结构由()和()组成。
A.根目录B.子目录C.主文件目录D.用户文件目录E.当前目录
3.驱动调度算法中()和()算法可能会随时改变移动臂的运动方向。
A.电梯调度B.先来先服务C.扫描D.单向扫描E.最短寻找时间优先
4.有关设备管理概念的下列叙述中,()和()是不正确的。
A.通道是处理输入、输出的软件B.所有外围设备的启动工作都由系统统一来做C.来自通道的I/O中断事件由设备管理负责处理D.编制好的通道程序是存放在主存贮器中的E.由用户给出的设备编号是设备的绝对号
5.一进程刚获得三个主存块的使用权,若该进程访问页面的次序是{1321215123}.当采用先进先出调度算法时,发生缺页次数是()次,而采用LRU算法时,缺页数是()次。
A.1 B.3 C.4 D.5 E.6
6.作业与进程的主要区别是()和()。
A.前者是由用户提交,后者是由系统自动生成B.两者执行不同的程序段C.前者以用户任务为单位,后者是操作系统控制的单位D.前者是批处理的,后者是分时的E.后者可并发执行,前者则不行
7.下述MS—DOS的文件中()和()是有关设备管理的程序。
A.BOOT B.COMMAND.COM C.IBMBIO.COM D.IBMDOS.COM E.ROMBIOS
8.MS—DOS的文件类型为()和()的文件是不可执行的。
A……OBJ B……EXE C……COM D……BAK E……BAT
三、填空题(每空1分,共15分)
1.用户程序使用_____________请求操作系统服务。
2.存贮管理应实现的功能是:主存空间的分配与保护,_________,主存空间的共享和___________.
3.分页式存贮管理中,页表是用来指出作业的____________与_____________的对应关系。
4.每个索引文件都至少有一张索引表,其中的每一个表项应包括能标识该记录的_______________和该记录的_____________.
5.分时系统必须为用户提供__________以实现_________控制方式。
6.斯普林系统中,作业执行时,从磁盘上的__________中读取信息,并把作业的执行结果暂时存放在磁盘上的____________中。
7.并发进程中涉及到___________的程序段称为临界区,两个进程同时进入相关的临界区会造成的错误。
8.MS—DOS中有三个文件:DOSIP.EXE,DOSIP.DAT和DOSZP.COM,____________若使用系统提供的替代符‘*’和‘?’,则这三个文件可统一表示为___________.
9.拼音码是一种汉字__________码。
四、改错题(每小题2分,共10分)
1.以批处理方式和交互方式控制作业运行都需要注册(LOGON)。
2.分时系统中,时间片越小越好。
3.银行家算法是防止死锁发生的方法之一。
4.若无进程处于运行状态,则就绪队列和等待队列均为空。
5.作业控制语言是供用户编写程序以实现某项计算任务。
五、简答题(每小题4分,共20分)
1.程序状态字包含哪些主要内容?
2.什么是记录的成组和分解?
3.进程间同步和互斥的含义是什么?
4.什么是输入输出操作?什么是通道?
5.为实现分页式虚拟存贮,页表中至少应含有哪些内容?
六、综合题(每小题8分,共24分)
1.假定在某移动臂磁盘上,刚刚处理了访问75号柱面的请求,目前正在80号柱面读信息,并且有下述请求序列等待访问磁盘:
试用:(1)电梯调度算法
(2)最短寻找时间优先算法
分别列出实际处理上述请求的次序。
2.有三个进程P1,P2和P3并发工作。进程P1需用资源S3和S1;进程P2需用资源S1和S2;进程P3需用资源S2和S3.回答:
(1)若对资源分配不加限制,会发生什么情况?为什么?
(2)为保证进程正确工作,应采用怎样的资源分配策略?为什么?
3.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:
(1)用PV操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,把应执行的PV操作填入下述方框中,以保证进程能够正确地并发执行。
COBEGIN PROCESS PI(I=1,2,……)
begin;
进入售票厅;
购票;
退出;
end;
COEND
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
参考答案一、单项选择题(每题1分,共15分)
1.(1)2.(3)3.(2)4.(2)5.(1)6.(3)7.(1)8.(3)
9.(4)10.(4)11.(1)
12.(3)13.(4)14.(3)15.(4)
二、双项选择题(每题2分,共16分)
1.(3)(4)2.(3)(4)3.(2)(5)4.(1)(5)5.(5)(4)
次序不可交换6.(1)(3)7.(3)(5)8.(1)(4)
三、填空题(每空格1分,共15分)
1.访管指令(或系统调用)
2.主存空间的重定位,主存的扩充
3.逻辑页号,主存块号(可交换)
4.关键字(或记录号),存放地址(或存放位置)
5.操作控制命令,交互(或联机)
6.输入#,输出#
7.共享变量,与时间有关
8.DOS?P.*(或DOS?P.???)
9.输入
四、改错题(每题2分,共10分,若只作简单否定,不能给分)
1.批处理方式是按用户使用作业控制语言书写的。
作业说明书控制作业运行,不需注册。
或交互方式控制作业运行需要注册。
2.当时间片过小时,进程调度时间所占比重加大。
若仅回答:
时间片越小,响应时间可能加大,给1分。
3.银行家算法是避免死锁的方法之一。
4.就绪队列为空,等待队列可能不空。
5.作业控制语言是供书写作业说明书的,以控制作业的执行(不同于编程语言)。
五、简答题(每题4分,共20分)
1.(1)程序基本状态(2分)
(2)中断码(1分)
(3)中断屏蔽位(1分)
2.(1)把若干逻辑记录合并成一组,存入一个物理块的工作称为记录的成组。(1分)
(2)从一组中把一个逻辑记录分离出来的工作称为记录的分解。(2分)
3.同步:并发进程之间存在的相互制约和相互依赖的关系。(2分)
互斥:若干进程共享一资源时,任何时刻只允许一个进程使用。(2分)
4.主存与外围设备之间的信息传送操作称为输入输出操作。(2分)
通道可称为输入输出处理机。(2分)
5.页号(1分)
标志(1分)
主存块号(1分)
磁盘上的位置(1分)
六、综合题(每题8分,共24分)
1.(1)电梯调度算法的处理次序为:
5 8 1 4 3 6 2 7(得4分)
若写出5 8(得1分)
若写出5 8 1 4 3(得2分)
(2)最短寻找时间优先算法的处理次序为:
5 8 6 2 7 1 4 3(得4分)
若写出5 8(得1分)
若写出5 8 6 2 7(得2分)
亦即:前2个对(得1分)
前5个对(得2分)
2.(1)可能会发生死锁(2分)
例如:进程P1,P2和P3分别获得资源S3,S1和S2后再继续申请资源时都要等待(2分),这是循环等待。
(或进程在等待新源时均不释放已占资源)
(2)可有几种答案:
A.采用静态分配(2分)
由于执行前已获得所需的全部资源,故不会出现占有资源又等待别的资源的现象(或不会出现循环等待资源现象)。(2分)
或B.采用按序分配(2分)
不会出现循环等待资源现象。(2分)
或C.采用银行家算法(2分)
因为在分配时,保证了系统处于安全状态。(2分)
3.(1)定义一信号量S,初始值为20.(1分)
意义:
S>0 S的值表示可继续进入售票厅的人数(1分)
S=0表示售票厅中已有20名顾客(购票者)(1分)
4. 操作系统提 谁能帮帮我 急急急
选择1.A 2.B 3.D 4.C 5.A
填空1错2对3错4错5错6错7错8错9错10对
问答1.每一个进程都有一个也只有一个进程控制块,是操作系统用于记录和刻画进程状态及有关信息的数据结构。进程有就绪、运行和阻塞(有的书籍上是“等待”)三种基本状态。就绪-运行:进程通过处理机调度,获得处理机使用权,就进入了运行状态;运行-阻塞:当进程出现等待事件(例如需要使用I/O设备,等待开启I/O);阻塞-就绪:等待事件发生;运行-就绪:时间片轮转算法中时间片到等事件导致。
2.P(s);当信号量s大于0时,把信号量s减去l;否则调用V(s)的进程等待直到信号量s大于0时。
V(s):把信号量s加1。
3.DMA是Direct Memory Access的缩写,即直接存储器存取。DMA方式中,主存和I/O设备之间有一条数据通路,他们需要传输数据时,CPU会发出传送一段数据块的命令,之后的实际操作由DMA直接执行完成,不需要CPU干预。
5. C++ 运算符重载 导致内存膨胀到问题
编译器采取的一种优化措施。
首先要清楚的是:new运算符的功能是程序向操作系统申请内存分配,由操作系统从可用的内存中划分出一块给程序中的某一对象专用。在此期间,程序中的其它
对象或者其它程序就没有权力再使用这块内存了。delete的作用实际上是解除对象对这块内存的专用权,把它重新归还给系统,系统可根据情况重新把它划归
给其它new申请使用。向操作系统申请内存分配和释放都是需要时间的,有时甚至花费较长的时间才能找到一块合适的内存供使用。
为了降低动态内存分配和释放带来的时间,现在的编译器在实现上通常是这么做的:程序中被delete的内存空间只是解除了对象对此内存的专用权,然而并不
马上交还给系统,其使用权仍然属于程序本身。这样,在程序中再有new的时候,如果能在这些delete的内存中找到合适的,程序就不需要向操作系统申请
了,可以直接使用原来已经申请过的内存(即那些delete过后尚未被使用的内存),从而可节省时间,提高效率。
同样可解释你的for循环,A operator+(A a,int b);
每一次都会生成两个临时变量,一个是参数的,一个是返回值的,由于上述类似的编译器优化策略,系统不会立即回收这些内存,因此导致程序内存越来越大
operator+一般使用如下方式,以保持和内置操作一致性,(返回值不用引用)
A operator+(const A &a,int b);
6. python页面置换算法问题
题目描述:一进程刚获得3个主存块的使用权,若该进程访问页面的次序是1,2,3,4,1,2,5,1,2,3,4,5。当采用LRU算法时发生的缺页次数是多少?
LRU是最近最少使用页面置换算法,该算法用一个开放的栈来保存当前正在使用的各个页面号。当有一个新的页面要被访问时,就将该页面号加入栈顶(如果分配的内存不够,就将栈底页面号删除,其它页面号前移以给新页面腾出位置)。当要访问的页面已经在栈中时,就只要将这个页面移到栈顶,其它页面维持顺序即可。
缺页中断就是要访问的页不在主存,也就是本题中的开放的栈中没有保存要访问的页面号的情况。
*列表切片模拟LRU算法
[python]view plain
List_flora=[1,2,3,4,1,2,5,1,2,3,4,5]#存放页面访问次序的列表
lzh=[]#列表lzh最多(在填满后不多不少)3个元素,用来实现LRU算法
count=0#count用于计算缺页次数
flag=True#True表示缺页
print("三个主存块的数据变化情况:")
foriinList_flora:#i从List_flora的第一个元素开始
ifinotinlzh:#如果i不在lzh中,即缺页
flag=True#表示缺页
iflen(lzh)<3:#如果lzh的长度还没到达3
lzh[len(lzh)::]=[i]#就在其尾部添加i
else:#如果lzh的长度已经到达3了
lzh[0:2:]=lzh[1:3:]#将lzh[1]和lzh[2]复制到lzh[0]和lzh[1]
lzh[2::]=[i]#将i放入lzh[2]的位置
count+=1#缺页的,记录之
else:#如果i在lzh中,即不缺页
flag=False#表示不缺页
lzh[lzh.index(i):len(lzh)-1:]=lzh[lzh.index(i)+1::]#将i之后的元素都复制到i开始向后的位置,并在最后留一个空位保证不改变lzh长度
lzh[len(lzh)-1::]=[i]#将最后一个元素用i覆盖
print(lzh,"缺页了"ifflagisTrueelse"不缺页")
print("LRU算法结束,总的缺页次数为",count)
运行结果:
一开始还以为python中没有bool型变量,原来是这里的true和false要写成True和False才行。
在切片中,如果对切片所得的东西赋值,就能改变原列表中该位置的数据。在这样的赋值中应尽量保证左右两侧的list长度一致,如果将
[python]view plain
lzh[lzh.index(i):len(lzh)-1:]=lzh[lzh.index(i)+1::]
[python]view plain
lzh[lzh.index(i)::]=lzh[lzh.index(i)+1::]
就会发现得不到想要的结果了。
7. 在什么情况下,当一个进程发生变迁3 时能立即引起另一个进程发生变迁1
从表面看,进程切换的功能是很简单的。在某一时刻,一个正在运行的进程被中断,操作系统指定另一个进程为运行态,并把控制权交给这个进程。但是这会引发若干问题。首先,什么事件触发进程的切换?另一个问题是必须认识到模式切换与进程切换之间的区别。最后,为实现进程切换,操作系统必须对它控制的各种数据结构做些什么?
何时切换进程
进程切换可以在操作系统从当前正在运行的进程中获得控制权的任何时刻发生
首先考虑系统中断。实际上,大多数操作系统区分两种类型的系统中断。一种称为中断,另一种称为陷阱。前者与当前正在运行的进程无关的某种类型的外部事件相关,如完成一次I/O 操作;后者与当前正在运行的进程所产生的错误或异常条件相关,如非法的文件访问。对于普通中断,控制首先转移给中断处理器,它做一些基本的辅助工作,然后转到与已经发生的特定类型的中断相关的操作系统例程。参见以下例子:
时钟中断:操作系统确定当前正在运行的进程的执行时间是否已经超过了最大允许时间段(时间片,即进程在被中断前可以执行的最大时间段),如果超过了,进程必须切换到就绪态,调入另一个进程。
I/O 中断:操作系统确定是否发生了I/O 活动。如果I/O 活动是一个或多个进程正在等待的事件,操作系统就把所有相应的阻塞态进程转换到就绪态(阻塞/挂起态进程转换到就绪/挂起态),操作系统必须决定是继续执行当前处于运行态的进程,还是让具有高优先级的就绪态进程抢占这个进程。
内存失效:处理器访问一个虚拟内存地址,且此地址单元不在内存中时,操作系统必须从外存中把包含这个引用的内存块(页或段)调入内存中。在发出调入内存块的I/O 请求之后,操作系统可能会执行一个进程切换,以恢复另一个进程的执行,发生内存失效的进程被置为阻塞态,当想要的块调入内存中时,该进程被置为就绪态。
对于陷阱,操作系统确定错误或异常条件是否是致命的。如果是,当前正在运行的进程被转换到退出态,并发生进程切换;如果不是,操作系统的动作取决于错误的种类和操作系统的设计,其行为可以是试图恢复或通知用户,操作系统可能会进行一次进程切换或者继续执行当前正在运行的进程。
最后,操作系统可能被来自正在执行的程序的系统调用激活。例如,一个用户进程正在运行,并且正在执行一条请求I/O 操作的指令,如打开文件,这个调用导致转移到作为操作系统代码一部分的一个例程上执行。通常,使用系统调用会导致把用户进程置为阻塞态。
8. 对于问题小孩这门课所学所识有什么启发
、单项选择题(下列每小题列出的四个选项中只有一个是最符合题意的,请将其代码填在括号内。错选、多选或未选均不得分。本大题共30小题,每小题1分,共30分)
1.教育目的是培养人的质量规格标准,教育目的要回答的问题是( )
A. 教育服务的方向B. 怎样培养人
C. 实现教育目的的途径D. 培养怎样的人
2.在教育工作中搞“一刀切”,让孩子同大人一样去听报告、搞思想政治活动。这就违背了学生身心发展的( )规律。
A. 顺序性B. 阶段性
C. 差异性D. 不平衡性
3.教师职业专门化始于( )
A. 师范学校的出现B. 独立的教师行业的出现
C. 教师资格制度的形成D. 教师工作被视为专门的职业
4.“教育的目的就在于使人成为他自己、变成他自己。”这句话表明( )
A. 学生是能动的人B. 学生是发展中的人
C. 学生是自由的人D. 学生是个性化的人
5.素质教育的理论依据是( )
A. 以人为本B. 全面发展教育
C. 创新教育D. 社会实践教育
6.小学德育的基本途径是( )
A. 少先队活动B. 课外、校外活动
C. 教学D. 社会实践活动
7.德育模式是在德育实施过程中德育理念、德育内容、德育手段、德育方法、德育途径等的¥组合方式。当代德育理论中流行最为广泛、占据主导地位的德育模式是( )
A. 价值澄清模式B. 认知模式
C. 社会模仿模式D. 体谅模式
8.“教师能做的,教务处不做;学生能做的,教师不做”体现了班级管理的( )原则
A. 主体性B. 集体性
C. 独立性D. 民主性
9.下列关于非制度化教育的表述,不正确的是( )
A. 非制度化教育是对制度化教育的全盘否定
B. 库姆斯、伊里奇是非制度化教育思潮的代表人物
C. 提出构建学习化社会的理想正是非制度化教育的重要体现
D. 非制度化教育所推崇的理想是“教育不应再限于学校的围墙之内”
10.教育现代化的核心是( )
A. 教育观念现代化B. 教育内容现代化
C. 教育管理现代化D. 教师素质现代化
11.不属于学生主观能动性的表现形式的是( )
A. 自觉性B. 独立性
C. 创造性D. 可塑性
12.做好班主任工作的前提和基础是( )
A. 组织和培养班集体B. 全面了解学生
C. 培养优良班风D. 做好后进生的转化工作
13.推动教育学发展的内在动力是( )
A. 教育规律B. 教育价值
C. 教育现象D. 教育问题
14.我国颁布的第一个现代学制是( )
A. 壬寅学制B. 癸卯学制
C. 壬戌学制D. 壬子癸丑学制
15.教师是教育工作的组织者和领导者,在教育过程中起( )作用。
A. 桥梁B. 关键
C. 主导D. 决定
16.教育内容是教育者与受教育者共同认识的( )
A. 主体B. 客体
C. 教的主体D. 学的主体
17.学生的向师性和模仿性心理特征决定了教师劳动具有( )
A. 示范性B. 复杂性
C. 主体性D. 长期性
18.青年教师李某把大量时间花在维持同事、领导的关系上,这表明李某的成长阶段正处在( )
A. 关注学生B. 关注情境
C. 关注自我D. 关注生存
19.为研究近年来我国小学教育的发展状况,张老师需要收集有关数据。最可靠的信息来源是( )
A. 教育论文B. 教育年鉴
C. 教育辞书D. 教育著作
20.有一次上课,亮亮因认真听讲受到了老师的表扬,自此亮亮逐步养成了上课专心听讲的习惯。这一现象属于( )
A. 经典条件反射B. 联结反应
C. 操作条件反射D. 习惯反应
21.明明在读少年闰土时,头脑中浮现了文中描述的闰土形象。明明的这种心理活动属于( )
A. 有意记忆B. 无意记忆
C. 创造想象D. 再造想象
22.甜甜学习一首古诗,反复诵读了10次正好记住,那么甜甜读( )次记忆效果最好。
A. 8B. 10
C. 12D. 15
23.创造性思维是人类思维的高级形式,其核心是( )
A. 直觉思维B. 形象思维
C. 发散思维D. 聚合思维
24.“举一反三”和“触类旁通”所说的是( )
A. 学习迁移B. 创造学习
C. 发现学习D. 学习替代
25.小明在解决了困扰他许久的数学难题后出现的喜悦感属于( )
A. 道德感B. 效能感
C. 美感D. 理智感
26.美国心理学家埃里克森认为,6〜11岁儿童的人格发展正处于( )
A. 自主感对羞耻感B. 主动感对内疚感
C. 勤奋感对自卑感D. 信任感对不信任感
27.看到鸟飞翔,发明飞机。这类创造活动的主要心理机制是( )
A. 原型启发B. 负向迁移
C. 定势D. 正向迁移
28.按学习动机的社会意义,可将学习动机分为( )
A. 社会与个人B. 工作与提高
C. 高尚与低级D. 交往与荣誉
9. 网络快车!
内存不能为read的解决方案
“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
以上的情况相信大家都应该见到过,甚至说一些网友因为不爽于这个经常出现的错误提示而屡次重装系统。相信普通用户应该不会理解那些复杂的十六进制代码。
出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。
一:先说说硬件:
一般来说,电脑硬件是很不容易坏的。内存出现问题的可能性并不大(除非你的内存真的是杂牌的一塌徒地),主要方面是:1。内存条坏了(二手内存情况居多)、2。使用了有质量问题的内存,3。内存插在主板上的金手指部分灰尘太多。4。使用不同品牌不同容量的内存,从而出现不兼容的情况。5。超频带来的散热问题。你可以使用MemTest 这个软件来检测一下内存,它可以彻底的检测出内存的稳定度。
二、如果都没有,那就从软件方面排除故障了。
先说原理:内存有个存放数据的地方叫缓冲区,当程序把数据放在缓冲区,需要操作系统提供的“功能函数”来申请,如果内存分配成功,函数就会将所新开辟的内存区地址返回给应用程序,应用程序就可以通过这个地址使用这块内存。这就是“动态内存分配”,内存地址也就是编程中的“光标”。内存不是永远都招之即来、用之不尽的,有时候内存分配也会失败。当分配失败时系统函数会返回一个0值,这时返回值“0”已不表示新启用的光标,而是系统向应用程序发出的一个通知,告知出现了错误。作为应用程序,在每一次申请内存后都应该检查返回值是否为0,如果是,则意味着出现了故障,应该采取一些措施挽救,这就增强了程序的“健壮性”。若应用程序没有检查这个错误,它就会按照“思维惯性”认为这个值是给它分配的可用光标,继续在之后的执行中使用这块内存。真正的0地址内存区储存的是计算机系统中最重要的“中断描述符表”,绝对不允许应用程序使用。在没有保护机制的操作系统下(如DOS),写数据到这个地址会导致立即当机,而在健壮的操作系统中,如Windows等,这个操作会马上被系统的保护机制捕获,其结果就是由操作系统强行关闭出错的应用程序,以防止其错误扩大。这时候,就会出现上述的内存不能为“read”错误,并指出被引用的内存地址为“0x00000000“。内存分配失败故障的原因很多,内存不够、系统函数的版本不匹配等都可能有影响。因此,这种分配失败多见于操作系统使用很长时间后,安装了多种应用程序(包括无意中“安装”的病毒程序),更改了大量的系统参数和系统档案之后。
在使用动态分配的应用程序中,有时会有这样的情况出现:程序试图读写一块“应该可用”的内存,但不知为什么,这个预料中可用的光标已经失效了。有可能是“忘记了”向操作系统要求分配,也可能是程序自己在某个时候已经注销了这块内存而“没有留意”等等。注销了的内存被系统回收,其访问权已经不属于该应用程序,因此读写操作也同样会触发系统的保护机制,企图“违法”的程序唯一的下场就是被操作终止执行,回收全部资源。计算机世界的法律还是要比人类有效和严厉得多啊!像这样的情况都属于程序自身的BUG,你往往可在特定的操作顺序下重现错误。无效光标不一定总是0,因此错误提示中的内存地址也不一定为“0x00000000”,而是其它随机数字。
首先建议:
1、 检查系统中是否有木马或病毒。这类程序为了控制系统往往不负责任地修改系统,从而导致操作系统异常。平常应加强信息安全意识,对来源不明的可执行程序绝不好奇。
2、 更新操作系统,让操作系统的安装程序重新拷贝正确版本的系统档案、修正系统参数。有时候操作系统本身也会有BUG,要注意安装官方发行的升级程序。
3、 尽量使用最新正式版本的应用程序、Beta版、试用版都会有BUG。
4、 删除然后重新创建 Winnt\System32\Wbem\Repository 文件夹中的文件:在桌面上右击我的电脑,然后单击管理。 在"服务和应用程序"下,单击服务,然后关闭并停止 Windows Management Instrumentation 服务。 删除 Winnt\System32\Wbem\Repository 文件夹中的所有文件。(在删除前请创建这些文件的备份副本。) 打开"服务和应用程序",单击服务,然后打开并启动 Windows Management Instrumentation 服务。当服务重新启动时,将基于以下注册表项中所提供的信息重新创建这些文件: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs
10. 进程的三个基本状态及其转换是什么
三个基本状态如下:
进程在运行时不断地更改其运行状态。通常,运行过程必须有以下三个基本状态。
就绪状态,当进程被分配到除CPU之外的所有必需资源时,如果处理器可以立即执行,进程状态就称为就绪状态。
运行状态,当一个进程获得处理器时,它的程序在机器上执行,此时的进程状态被称为执行状态。
阻塞状态,由于等待事件发生而无法执行的事件被执行的进程。有许多事件会导致进程阻塞,例如,等待I/O完成,应用程序缓冲区不能满足,等待字母(信号)等。
一个进程在运行期间,不断地从一种状态转换到另一种状态,它可以多次处于就绪状态和执行状态,也可以多次处于阻塞状态。
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
(2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
(3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。