先进先出调度算法和最近最少用置换调度算法
操作系统十大算法具体内容

操作系统十大算法具体内容操作系统是计算机系统的核心组成部分,主要负责管理计算机的硬件资源和提供各种系统服务。
操作系统算法是操作系统实现各种功能和服务的基础,包括进程调度、内存管理、文件系统等方面。
下面将介绍操作系统中的十大算法,以及它们在操作系统中的具体内容:1.进程调度算法进程调度算法决定了操作系统如何选择就绪队列中的进程分配处理机资源。
常见的进程调度算法包括先来先服务调度算法(FCFS)、最短作业优先调度算法(SJF)、轮转调度算法(RR)等。
这些算法基于进程的优先级、执行时间、资源需求等考虑,来决定选择哪个进程获得处理机资源。
2.内存管理算法内存管理算法决定了如何有效地分配和回收内存资源。
常见的内存管理算法包括固定分区算法、动态分区算法和虚拟内存管理算法等。
这些算法根据进程的内存需求和空闲内存空间的情况,来决定如何分配和回收内存资源。
3.页面置换算法页面置换算法是一种在虚拟内存管理中使用的算法,用于将进程的页面从磁盘中换入内存,并选择合适的页面进行置换。
常见的页面置换算法有最佳置换算法(OPT)、先进先出置换算法(FIFO)、最近最少使用置换算法(LRU)等。
这些算法根据页面的访问情况和页面的驻留时间来决定选择哪个页面进行置换。
4.文件管理算法文件管理算法决定了如何组织和管理文件系统中的文件。
常见的文件管理算法有顺序文件组织算法、索引文件组织算法、哈希文件组织算法等。
这些算法根据文件的访问特点和性能需求,来决定如何组织和管理文件数据。
5.磁盘调度算法磁盘调度算法决定了操作系统如何调度磁盘上的IO请求,以提高磁盘的访问效率。
常见的磁盘调度算法有先来先服务调度算法(FCFS)、最短寻半径优先调度算法(SSTF)、扫描调度算法(SCAN)等。
这些算法根据磁盘的寻道距离和IO请求的到达时间等因素,来决定选择哪个IO请求进行调度。
6.死锁检测和解决算法死锁是指多个进程因为互相等待而无法继续执行的情况。
计算机基础知识点总结

计算机基础知识点归纳1一、硬件知识1、计算机系统的组成包括硬件系统和软件系统硬件系统分为三种典型结构:(1)单总线结构(2)、双总线结构(3)、采用通道的大型系统结构中央处理器CPU包含运算器和控制器。
2、指令系统指令由操作码和地址码组成。
3、存储系统分为主存—辅存层次和主存—Cache层次Cache作为主存局部区域的副本,用来存放当前最活跃的程序和数据。
计算机中数据的表示Cache的基本结构:Cache由存储体、地址映像和替换机构组成。
4、通道是一种通过执行通道程序管理I/O操作的控制器,它使CPU与I/O 操作达到更高的并行度。
5、总线从功能上看,系统总线分为地址总线(AB)、数据总线(DB)、控制总线(CB)。
6、磁盘容量记计算非格式化容量=面数x(磁道数/面)x内圆周长x最大位密度格式化容量=面数x(磁道数/面)x(扇区数/道)x(字节数/扇区)7、数据的表示方法原码和反码[+0]原=000...00 [—0]原=100......00 [+0]反=000...00 [—0]反=111 (11)正数的原码=正数的补码=正数的反码负数的反码:符号位不变,其余位变反。
二、操作系统操作系统定义:用以控制和管理系统资源,方便用户使用计算机的程序的集合。
功能:是计算机系统的资源管理者。
特性:并行性、共享性分类:多道批处理操作系统、分时操作系统、实时操作系统、网络操作系统。
进程:是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。
进程分为三种状态:运行状态(Running)、就绪状态(Ready)、等待状态(Blocked)。
虚拟存储器:是指一种实际上并不以物理形式存在的虚假的存储器。
页架:把主存划分成相同大小的存储块。
页:把用户的逻辑地址空间(虚拟地址空间)划分成若干个与页架大小相同的部分,每部分称为页。
页面置换算法有:1、最佳置换算法OPT2、先进先出置换算法FIFO3、最近最少使用置换算法LRU4、最近未使用置换算法NUR使独占型设备成为共享设备,从而提高设备利用率和系统的效率。
习题7答案——精选推荐

习题7答案1、存储管理的主要功能是什么?解内存分配、存储保护、地址变换、存储共享、存储扩充2、什么是地址空间、存储空间、逻辑地址、物理地址?解:1)地址空间:⼀个程序可以访问的地址是有限的,这个程序可以访问的地址范围我们称为地址空间,或者说是指程序⽤来访问信息所⽤的地址单元的集合。
2)存储空间:所谓存储空间是指能够访问的主存的范围。
⼀个数据在主存中的位置称为物理地址或绝对地址。
3)逻辑地址:地址空间单元的编号。
4)物理地址:存储空间单元的编号。
3、采⽤可变式分区存储管理时,能否实现虚拟存储,为什么?解:不能。
可变式分区⽅式虽然分成程序的⼤⼩可以变化,但是要求整个程序都装⼊内存才能运⾏,这样⽆法进⾏逻辑上扩充内存。
4、可变分区管理有哪⼏种存储分配算法?解:1)⾸次适应算法(First-Fit)。
这种策略总是从链表的开头开始查找。
⼀旦找到了⾜够⼤的、能满⾜给定的请求的第⼀个空闲分区,就停⽌查找。
2)下次适应算法(Next-Fit)。
⼜称为循环⾸次适应算法。
对⾸次适应算法的⼀个简单改动就是每次要从上次查找停⽌的位置开始查找,也就是前次分配后的空闲分区。
3)最佳适应算法(Best-Fit)。
这种策略的直观想法是,总是给内存请求者分配最适合它⼤⼩的空闲分区,提⾼内存的利⽤率。
5、什么是地址重定位?有哪⼏种常⽤的地址重定位⽅法?解:由于将作业装⼊到与其地址空间不⼀致的存储空间所引起的对有关地址部分的调整过程称为地址重定位。
常⽤的重定位⽅法有两种,静态重定位和动态重定位。
静态重定位是指在程序运⾏之前由链接装⼊程序进⾏的重定位。
动态重定位是在程序运⾏过程中,通过重定位寄存器来进⾏地址转换。
6、在某系统中,采⽤固定分区分配⽅式,内存分区(单位:字节)情况如下图左所⽰。
现有⼤⼩为4KB、18KB、50KB、85KB的多个作业要求进⼊内存,试画出它们进⼊内存后的空间分配情况,并说明主存浪费有多⼤。
解:从图中可以看出该系统共有4个分区,第⼀个分区的⼤⼩为10KB,第⼆个分区的⼤⼩为30KB,第三个分区的⼤⼩为80KB,第四个分区的⼤⼩为100KB。
2018北邮网络空间安全学院计算机技术考研复试通知复试时间复试分数线复试经验

2018北京邮电大学计算机技术考研复试通知复试时间复试分数线复试经验启道考研网快讯:2018年考研复试即将开始,启道教育小编根据根据考生需要,整理2017年北京邮电大学网络空间安全学院085211计算机技术考研复试细则,仅供参考:一、复试科目(启道考研复试辅导班)二、复试通知(启道考研复试辅导班)1.依据所报考专业的研究方向(以下称为“研究方向组”)的拟招生人数,初试上线生源超出拟招收人数120%的研究方向组,按第一志愿报考本组考生初试总分由高到低120%确定复试名单,其中该组中复试总人数=(该研究方向组招生人数-已招的推免生数)x 120%。
若120%处有多名同分考生则一起计入该组复试名单。
各专业研究方向组初试生源不足120%的复试组,该研究方向组内达到学校线的考生均进入复试名单。
2.已进入研究方向组120%名单之内的考生,如希望院内调组,只能调到初始生源不足120%的组,由本人申请并经双方组长签字同意,在3月17日至3月21日上午9点前到教1-208办理相关手续。
3.学院将于3月17日前在院网站公布各组缺额信息。
不在组内进入复试范围的考生,可向名单不足120%的组申请调剂。
若被接受,由考生及该组复试组长共同签字,并经院教务老师确认(在3月17日至21日上午9点前到教1-208办理,该考生只能进入一个组的名单)后进入该组复试名单。
3月21日复试名单公布后,未进入复试名单的考生可申请向院外调剂,到教1-208办理相关手续。
4.申请向校外调剂的考生,直接通过“全国硕士生招生调剂服务系统”进行调剂,不需要到我院办理手续。
5.申请向校内其它学院调剂的考生,需填写《校内调剂申请表》。
6.根据上级相关文件规定以及生源分布情况,网络空间安全学院本次硕士招生不接收外校、外院调剂考生,不实施破格录取。
7.所有进入复试名单的考生需在3月23日至3月24日进行心理测试,详见《2017年北京邮电大学硕士研究生招生复试工作安排》。
操作系统课程设计题目及代码

题目一模拟操作系统设计设计一个模拟操作系统管理程序,实现下列管理功能:1.内存管理功能2.文件管理功能3.磁盘管理功能题目二虚拟存储器各页面置换算法的实现与比较内容:设计一个虚拟存储区和内存工作区,通过产生一个随机数的方法得到一个页面序列,假设内存给定的页面数由键盘输入,分别计算使用下述各方法时的内存命中率:先进先出算法(FIFO)、最近最少使用算法(LRU)、最佳淘汰算法(OPT)、最少访问页面算法(LFU)等。
题目三文件系统设计通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。
内容:为Linux系统设计一个简单的二级文件系统,以实现下列功能:1.可以实现下列几条命令(1)login 用户登录(2)dir 文件目录列表(3)creat 创建文件(4)delete 删除文件(5)open 打开文件(6)close 关闭文件(7)read 读文件(8)write 写文件2.实验提示(1)首先确定文件系统的数据结构:主目录、子目录及活动文件等。
主目录和子目录都以文件的形式存放在磁盘,这样便于查找和修改。
(2)用户创建的文件,可以编号存储于磁盘上。
如file0、file1、file2……等,并以编号作为物理地址,在目录中进行登记。
[清华大学《操作系统教程》张丽芬编著题目四设计一个按时间片轮转法进程CPU调度的程序。
提示:(1)假设系统有5个进程,每个进程用一个进程控制块PCB来代表,PCB中包含进程名、链接指针、到达时间、估计运行时间、进程状态表。
其中,进程名即为进程进标识。
(2)为每一个进程设计一个要示运行时间和到达时间。
(3)按照进程到达的先后顺序排成一个循环队列,再设一个队首指针指向第一个到达的进程首址。
(4)执行处理机调度时,开始选择队首的第一个进程运行。
另外再设一个当前运行进程指针,指向当前正运行的进程。
(5)由于本实验是模拟实验,所以对被选中进程并不实际启运运行,只是执行:a.估计驼行时间减1b.输出当前运行进程的名字。
调度算法OS

调度算法OS调度算法(OS)2011-04-05 20:59处理机调度的分级高级、中级和低级调度作业从提交开始直到完成,往往要经历下述三级调度:高级调度:(High-Level Scheduling)又称为作业调度,它决定把后备作业调入内存运行;低级调度:(Low-Level Scheduling)又称为进程调度,它决定把就绪队列的某进程获得CPU;中级调度:(Intermediate-Level Scheduling)又称为在虚拟存储器中引入,在内、外存对换区进行进程对换。
1.进程调度算法(处理器管理)A).先来先服务和短作业(进程)优先调度算法B).高优先权优先调度算法C).基于时间片的轮转调度算法2.作业调度算法2)短作业优先法SJF、3)最高响应比优先法HRN、4定时轮转法和优先数法3.移臂(磁盘)调度算法(设备管理根本目的在于有效利用磁盘,保证磁盘的快速访问)1)先来先服务算法;(根据访问者提出访问请求的先后次序来决定执行次序。
)2)最短寻找时间优先调度算法;(从等待的访问者中挑选寻找时间最短的那个请求执行,而不管访问者的先后次序。
)3)电梯4)单向扫描4.页式调度算法(存储器管理)1先进先出调度算法2最近最少调度算法3最近最不常用调度算法/////////////////////////////调度算法是指:根据系统的资源分配策略所规定的资源分配算法。
进程调度算法(处理器管理)一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。
FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。
由此可知,本算法适合于CPU繁忙型作业,而不利于I/O繁忙型的作业(进程)。
2.短作业(进程)优先调度算法短作业(进程)优先调度算法(SJ/PF)是指对短作业或短进程优先调度的算法,该算法既可用于作业调度,也可用于进程调度。
青岛理工大学操作系统第4章练习题

操作系统常见题解析及模拟题内容【例 2】对一个将页表存放在内存中的分页系统:(1)如访问内存需要0. 2μs,有效访问时间为多少?(2)如果加一快表,且假定在快表中找到页表项的机率高达90%,则有效访问时间又是多少( 假定查快表需花的时间为0)?答:( 1)有效访问时间为:2×0. 2=0 . 4μs(2)有效访问时间为:0. 9×0. 2+(1 — 0.9) ×2×0. 2= 0. 22 ps。
【例 3】某系统采用页式存储管理策略,拥有逻辑空间32 页,每页 2K ,拥有物理空间1M 。
(1)写出逻辑地址的格式。
(2)若不考虑访问权限等,进程的页表有多少项?每项至少有多少位 ?(3)如果物理空间减少一半,页表结构应相应作怎样的改变?答:( 1)该系统拥有逻辑空间32 页,故逻辑地址中页号必须用 5 位来描述:而每页为2K ,因此,页内地址必须用11 位来描述,这样可得到它的逻辑地址格式如下:1511 100页号页内地址(2) 每个进程最多有32 个页面,因此,进程的页表项最多为32 项;若不考虑访问权限等,则页表项中只需给出页所对应的物理块块号,1M 的物理空间可分成29 个内存块,故每个页表项至少有9 位(3) 如果物理空间减少一半,则页表中页表项数仍不变,但每项的长度可减少 1 位。
【例 4】已知某分页系统,主存容量为64K,页面大小为1K ,对一个 4 页大的作业,其0、l 、 2、3 页分别被分配到主存的2、4、 6、 7 块中。
(1)将十进制的逻辑地址 1023、 2500、 3500、 4500 转换成物理地址。
(2)以十进制的逻辑地址 1023 为例画出地址变换过程图。
答: (1)对上述逻辑地址,可先计算出它们的页号和页内地址(逻辑地址除以页面大小,得到的商为页号,余数为页内地址),然后通过页表转换成对应的物理地址。
①逻辑地址1023: 1023/ 1K ,得到页号为0,页内地址为1023,查页表找到对应的物理块号为2,故物理地址为2×1K+1023=3071 。
2015年计算机统考408大纲解析

2015年计算机学科专业基础综合考试大纲来源:万学海文发布时间:2014-09-13•·2015考研大纲公布名师解析及下载入口•·2015考研时间公布:2014年12月27-28日摘要:2015年计算机学科专业基础综合考试考研大纲2015年计算机学科专业基础综合考试考研大纲已经公布,详细信息如下:I 考试性质计算机学科专业基础综合考试是为高等院校和科研院所招收计算机科学与技术学科的硕士研究生而设置的具有选拔性质的联考科目,其目的是科学、公平、有效地测试考生掌握计算机科学与技术学科大学本科阶段专业知识、基本理论、基本方法的水平和分析问题、解决问题的能力,评价的标准是高等院校计算机科学与技术学科优秀本科毕业生所能达到的及格或及格以上水平,以利于各高等院校和科研院所择优选拔,确保硕士研究生的招生质量。
II 考查目标计算机学科专业基础综合考试涵盖数据结构、计算机组成原理、操作系统和计算机网络等学科专业基础课程。
要求考生比较系统地掌握上述专业基础课程的基本概念、基本原理和基本方法,能够综合运用所学的基本原理和基本方法分析、判断和解决有关理论问题和实际问题。
III 考试形式和试卷结构一、试卷满分及考试时间本试卷满分为150分,考试时间为180分钟。
二、答题方式答题方式为闭卷、笔试。
三、试卷内容结构数据结构 45分计算机组成原理 45分操作系统 35分计算机网络 25分四、试卷题型结构单项选择题 80分 (40小题,每小题2分)综合应用题 70分IV 考查内容数据结构【考查目标】1.掌握数据结构的基本概念、基本原理和基本方法。
2.掌握数据的逻辑结构、存储结构及基本操作的实现,能够对算法进行基本的时间复杂度与空间复杂度的分析。
3.能够运用数据结构基本原理和方法进行问题的分析与求解,具备采用C或C++语言设计与实现算法的能力。
一、线性表(一)线性表的定义和基本操作(二)线性表的实现1.顺序存储2.链式存储3.线性表的应用二、栈、队列和数组(一)栈和队列的基本概念(二)栈和队列的顺序存储结构(三)栈和队列的链式存储结构(四)栈和队列的应用(五)特殊矩阵的压缩存储三、树与二叉树(一)树的基本概念(二)二叉树1.二叉树的定义及其主要特征2.二叉树的顺序存储结构和链式存储结构3.二叉树的遍历4.线索二叉树的基本概念和构造(三)树、森林1.树的存储结构2.森林与二叉树的转换3.树和森林的遍历(四)树与二叉树的应用1.二叉排序树2.平衡二叉树3.哈夫曼(Huffman)树和哈夫曼编码四、图(一)图的基本概念(二)图的存储及基本操作1.邻接矩阵法2.邻接表法3.邻接多重表、十字链表(三)图的遍历1.深度优先搜索2.广度优先搜索(四)图的基本应用1.最小(代价)生成树2.最短路径3.拓扑排序4.关键路径五、查找(一)查找的基本概念(二)顺序查找法(三)分块查找法(四)折半查找法(五)B树及其基本操作、B+树的基本概念(六)散列(Hash)表(七)字符串模式匹配(八)查找算法的分析及应用六、排序(一)排序的基本概念(二)插入排序1.直接插入排序2.折半插入排序(三)气泡排序(bubble sort) (四)简单选择排序(五)希尔排序(shell sort) (六)快速排序(七)堆排序(八)二路归并排序(merge sort)(九)基数排序(十)外部排序(十一)各种内部排序算法的比较(十二)排序算法的应用计算机组成原理【考查目标】1.理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有完整的计算机系统的整机概念。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(k=0;k<Pn;k++){
if(pb[k].fg==temp[0]){
printf("%d ",pb[k].page);
return k;
break;
}
}
}
void PCB()
{
Pb pb[10];//最多只允许0-9共10个页块号
int Pn;
int an=0;
int seq[100];
{
flag=j;
break;
}
}
for(j=0;j<m;j++)//找到驻留内存时间最久的页面置换出
{
if(time[j]>max_stay)
{
max_stay=time[j];
block_num=j; //block_num标记当前序号物理块中页面驻留时间最久
}
}
if(flag==-1)//不存在相同页面
{int n,m,Page[Max],Block[Size];
cout<<"*******先进先出FIFO页面置换算法*******"<<endl;
cout<<"--------------------------------------"<<endl;
cout<<"*******(默认:-1表示物理块空闲)*******"<<endl;
{for(j=0;j<m;j++)//有空闲物理块时,页面直接驻入内存空闲块
{if(Block[j]==-1)
{
get=j;//物理块j即将(/等待)驻入新页面
break;
}
}
for(j=0;j<m;j++)//查找序号相同的页面
{if(Block[j]==Page[i])//物理块j中页面与当前期望调入内存的页面相同
江西师范大学计算机信息工程学院学生实验报告
专业计算机科学与技术姓名李洋_学号0908061086日期2011/5/17
课程名称
计算机操作系统
实验室名称
X4313
实验名称
先进先出调度算法
指导教师
朱明华
成绩
1.实验目的
了解的先进先出调度算法的调度原理,再用数据结构和c语言,以程序的形式来实现该算法
2.实验原理和内容
}
//检测当前页面在不在内存中,如果在内存中,返回所在页块号;如果不在,返回-1
int test1(int seq_i,int Pn,Pb a[]){
int flag=0;
for(int j=0;j<Pn;j++){
if(a[j].page==seq_i){
flag=1;
return j;
break;
cin>>n;
cout<<"\n请输入页面号引用串:";
creat(Page,n);
cout<<"FIFO算法过程如下:"<<endl;
FIFO(Page,Block,n,m);
getchar();//直接执行exe文件时做停留查看结果之用
getchar();
}
江西师范大学计算机信息工程学院学生实验报告
}
}
if(flag==0)
return -1;
}
int LRU(int seq[],int i,int Pn,Pb pb[])
{
int temp[20];
int j;
for(k=0;k<Pn;k++){
temp[k]=seek(seq,i,pb,k);
pb[k].fg=seek(seq,i,pb,k);
{if(get!=-1)//物理块即将(/等待)驻入新页面
{
Block[get]=Page[i];//存入页面
time[get]=0;//当前物理块重新计时
for(j=0;j<=get;j++)//已驻入页面的驻留时间加1
{
time[j]++;
}
get=-1;
}
else//页面调度置换,序号block_num的物理块是驻留时间最久的
}
for(k=1;k<Pn;k++){
int lastX=1;
int tem;
for(j=0;j<Pn-k;j++){
if(temp[j]>temp[j+1]){
tem=temp[j];
temp[j]=temp[j+1];
temp[j+1]=tem;
lastX=0;
}
}
if(lastX==1) break;
int i;
float ar;
printf("请输入页块数Pn:\n");
scanf("%d",&Pn);
printf("请输入%d位长的页面访问序列seq[%d]:\n",num,num);
for(i=0;i<num;i++){
scanf("%d",&seq[i]);
}
for(i=0;i<10;i++){
{
Block[block_num]=Page[i];
time[block_num]=0;
for(j=0;j<Size;j++)
{
time[j]++;
}
block_num=-1;
max_stay=0;
count++;
}
}
else//待调入页面与序号flag的物理块中页面相同
{
for(j=0;j<m;j++)
pb[i].page=-1;
pb[i].seq_num=-1;
pb[i].fg=max;
}
printf("淘汰页面号依次为:\n");
for(i=0;i<num;i++){//做20次
int a,b;
a=test1(seq[i],Pn,pb);
b=test2(pb,Pn);
if(a==-1){//不在内存中
先进先出调度算法的原理是把一个进程已调入内存的页面,按照先后测序链接成一个队列,并设置一个指针,使他总是指向最老的页面。
3.实验步骤
(1)在c-free中定义函数
(2)根据原理进行编写
(3)运行并验证
源程序:
#include <iostream>
#include <iomanip>//使用setw()时用到的头文件
}
void FIFO(int Page[],int Block[],int n,int m)
{//max_stay:比较当前内存中页面驻留的最久时间,count:统计页面置换次数
//get:某物理块是否等待驻入新页面(-1:否)
//flag:标记当前序号页面是否已驻入内存(-1:否)
//block_num:驻留内存时间最长的页面所在的物理块序号
3.实验步骤
(1)在c-free中定义函数
(2)根据原理进行编写
(3)运行并验证
源代码:
#include<stdio.h>
#include<iostream>
#define num 20
#define max 65535
typedef struct PB{
int page;//当前页面号
int seq_num;//对于页面最近一次被访问的序列号
//time[]标记对应序号的物理块中页面驻留时间
int i,j,max_stay=0,count=0;
int get=-1,flag=-1,block_num=-1;
int time[Size];
for(i=0;i<m;i++)//初始化time[]
{time[i]=0;
}
for(i=0;i<n;i++)
}
void main()
{
PCB();
}
cout<<endl<<"请输入系统为进程分配的物理块数(m<=10):";
while(1)
{cin>>m;
if(m>Sizeቤተ መጻሕፍቲ ባይዱ|m<1)
{
cout<<"警告:输入的数据错误!"<<endl;
cout<<"请重新输入物理块数:";
}
else break;
}
Init(Block,m);
cout<<"请输入总页面数(n<=30):";
}
}
if(flag==0)
return -1;
}
//检测有没有空页块,如果有空页块,返回页块号;如果没有,返回-1
int test2(Pb a[],int Pn){
int flag=0;
for(int j=0;j<Pn;j++){
if(a[j].page==-1){
flag=1;
return j;
break;
int fg;