Télécharger ooomwd.eso

Retour à la liste

Numérotation des lignes :

ooomwd
  1. C OOOMWD SOURCE PV090527 26/04/24 08:23:17 12524
  2. SUBROUTINE OOOMWD (LRET,LSEG)
  3. C-----------------------------------------------------------------------
  4. C
  5. C FAIRE DE LA PLACE EN ZONE ACTIVE
  6. C
  7. C ->LRET 1 PLUS DE PLACE MEMOIRE OU SUR DISQUE
  8. C 2 OK
  9. C
  10. C LSEG NOMBRE DE MOTS DESIRES
  11. C
  12. C METHODE UTILISEE
  13. C
  14. C LIBERER DE LA PLACE EN ZONE ACTIVE EN VIDANT LES SEGMENTS NON
  15. C ACTIFS QUI S Y TROUVENT VERS LA ZONE DE DEBORDEMENT MEMOIRE
  16. C S'ILS SONT GRANDS OU DANS LES CHAINES DE CANDIDATS AU DEPART
  17. C S'ILS SONT PETITS . LORSQU'ON RENCONTRE LE MARQUEUR D'UN SUPER
  18. C SEGMENT , ON EXAMINE L'ETAT DU SUPER SEGMENT QUI , SUIVANT LE
  19. C CAS EST VIDE EN ZONE DE DEBORDEMENT , ECLATE SUR PLACE OU
  20. C RECYCLE EN TETE DU LRU OU QUEUE DU MRU .
  21. C
  22. C LE PROCESSUS S'ARRETE LORSQUE LA SOMME DES TROUS DEVIENT
  23. C SUFFISANTE : C'EST OOOMIN QUI , SUIVANT LE CAS , DETECTERA
  24. C LE TROU DE LONGUEUR SUFFISANTE OU PROCEDERA AU TASSEMENT
  25. C DE LA MEMOIRE .
  26. C ON CONNAIT A TOUT MOMENT LA SOMME DES TROUS PAR UN COMPTEUR
  27. C MIS A JOUR A CHAQUE ATTRIBUTION OU LIBERATION D'UN BLOC
  28. C EN MEMOIRE .
  29. C
  30. C CE PROCESSUS EPURE LA ZONE ACTIVE (EFFICACE CONTRE LE MITAGE
  31. C CAR IL PERMET LE RECOLLAGE PROGRESSIF DES TROUS) ET EVITE LE
  32. C PLUS SOUVENT LE RECOURS AU TASSEMENT (TRAITEMENT POUVANT
  33. C DEVENIR EXPLOSIF)
  34. C
  35. C
  36. C ON TRAITERA DANS L ORDRE DE LA CHAINE DES SGM NON ACTIFS LRU :
  37. C
  38. C - SUPER SEGMENT HOMOGENE LRU VERS LA ZONE DE DEBORDEMENT
  39. C - SUPER SEGMENT HOMOGENE MRU OU ACTIF/DESACTIVE HOMOGENE
  40. C VERS LA TETE DU MRU
  41. C - SUPER SEGMENT ACTIF/DESACTIVE LRU :
  42. C COMPOSANTS NON ACTIFS --> INACTIFS
  43. C MARQUEUR EN QUEUE DU LRU
  44. C - SUPER SEGMENTS AUTRES CAS :ECLATEMENT
  45. C - GROS SEGMENTS VERS LA ZONE DE DEBORDEMENT
  46. C - PETITS SEGMENTS INACTIFS VERS CHAINE INACTIVE
  47. C - PETITS SEGMENTS DESACTIVES VERS CHAINE DESACTIVE(MODOUNOMOD)
  48. C
  49. C PUIS DANS L'ORDRE DE LA CHAINE MRU :
  50. C
  51. C - SUPER SEGMENTS HOMOGENE MRU VERS LA ZONE DE DEBORDEMENT
  52. C - SUPER SEGMENTS AUTRES CAS : ECLATEMENT
  53. C - GROS SEGMENTS : VERS LA ZONE DE DEBORDEMENT
  54. C - SEGMENTS DESACTIVES VERS CHAINE DESACTIVE (MOD OU NOMOD)
  55. C
  56. C SI AU COUR DE CE PROCESSUS UNE CHAINE DEPASSE LA CAPACITE
  57. C DU BUFFER , LES SEGMENTS SONT TRANSFERES DANS LE BUFFER .
  58. C UNE FOIS PLEIN LE BUFFER EST VIDE SUR DISQUE.
  59. C
  60. C L'ECLATEMENT D'UN SUPER SEGMENT SE FAIT SUR PLACE :
  61. C LE COMPOSANT EST INSERE DEVANT LE SEGMENT QUI PRECEDE
  62. C LE MARQUEUR S'IL APPARTIENT A LA MEME CHAINE , ET SINON
  63. C EN QUEUE DU LRU OU EN TETE DU MRU CORRESPONDANT .
  64. C
  65. C LES PRINCIPALES VARIABLES
  66. C
  67. C IDEA TETE D'UNE CHAINE DE DESCRIPTEURS DE SEGMENTS NON ACTIFS
  68. C EN ZONE ACTIVE .
  69. C IDEB TETE DE LA CHAINE DES DESCRIPTEURS DE SEGMENTS NON ACTIFS
  70. C CANDIDATS AU DEPART ( INACTIF DESACTIF )
  71. C IDA DESCRIPTEUR D'UN SEGMENT D'UNE CHAINE IDEA
  72. C LSA LONGUEUR DU SEGMENT DE DESCRIPTEUR IDA
  73. C ISA ADRESSE DU SEGMENT DE DESCRIPTEUR IDA EN ZONE ACTIVE
  74. C
  75. C IZA INDICE DE LA ZONE ACTIVE
  76. C
  77. C PROGRAMMEUR : MOUGIN
  78. C MODIF : 03/01/89 ADAPTER A LA FAMILLE OOOW..
  79. C MODIF : 03/04/89 MESSAGE : FICHIER DEBORDEMENT PLEIN
  80. C MODIF : 08/08/92 INVERSION MRU LRU POUR MIEUX TRAITER MATRICES
  81. C
  82. C-----------------------------------------------------------------------
  83. C
  84. %INC IOOADR
  85. %INC IOOADZ
  86. %INC IOODES
  87. %INC IOOSGM
  88. %INC IOOPBUF
  89. %INC IOOTRO
  90. %INC IOOWCOM
  91. C
  92. C
  93. C------ PAS DE DEBORDEMENT MEMOIRE ? :
  94. C
  95. KRET = 2
  96. PBUF = MZPBUF
  97. IF (PBUF.NE.0) THEN
  98. C
  99. C------ INITIALISATION
  100. C
  101. LSBUF=PBUF.BUFFER(/1)
  102. C
  103. C------ TRAITEMENT DES CHAINES DE SGM NON ACTIFS (LRU OU MRU)
  104. C
  105.  
  106. C PV d'apres FT pour traiter efficacement grosse matrice
  107. DO I = MRU,LRU,-1
  108. IDEA=MDACHN(I)
  109. C PARCOURS D'UNE CHAINE (ON SE RETROUVE TJ EN TETE DE CHAINE)
  110. * d'abord on sauve la place libre actuelle
  111. mlibre = MZLTROU(IZA,ZMEMDYN)
  112.  
  113. 100 IDA=MSIDS(MDISG(IDEA))
  114. C FIN DE CHAINE?
  115. IF (IDA.NE.IDEA) THEN
  116. C TRT D'UN SGM (INDICE ET LG)
  117. ISA =MDISG(IDA)
  118. LSA =MSLS1(ISA)
  119. ITYPA =MDTYP(IDA)
  120. IQUEUA=MDQUEU(ITYPA)
  121. C
  122. C------ MARQUEUR D'UN SUPER SEGMENT
  123. C
  124. IF (MDCAT(ITYPA).EQ.MDMARK) THEN
  125. C
  126. IF( S S HLRU (ISA) .OR.
  127. 1 ( S S HMRU (ISA).AND.(IQUEUA.EQ.MDMRU))) THEN
  128. IF (TESOOO) CALL OOOWER (' OOOMWD => OOOSUW')
  129. CALL OOOSUW (KRET,IDA)
  130. IF (KRET.EQ.1) GO TO 200
  131. IF (TESOOO) CALL OOOWER (' OOOMWD <= OOOSUW')
  132. LST = (MSLMARK)+MSMARK(ISA)
  133. MSLS1(ISA) = LST
  134. MSLS2(ISA) = LST
  135. MSIDE(ISA) = IDA
  136. MDTRK(IDA) = 0
  137. MDCAT(ITYPA) = MDISOLE
  138. MDTYP(IDA) = ITYPA
  139. CALL OOOSUG (IDA)
  140. IF (IQUEUA.EQ.MDLRU) THEN
  141. ICHN=LRU
  142. ELSE
  143. ICHN=MRU
  144. ENDIF
  145. MZQCHN(ICHN) =MZQCHN(ICHN)+LST-(MSLMARK)
  146. MZJSS(ACTUEL)=MZJSS(ACTUEL)-1
  147. MZJSM(ACTUEL)=MZJSM(ACTUEL)-(MSLMARK)
  148. C
  149. ELSEIF (( S S HMRU (ISA)
  150. 1 .OR. SUPER SEGMENT ACTIF DESACTIVE MRU (ISA))
  151. 2 .AND. IQUEUA.EQ.MDLRU) THEN
  152. IDEB=MSIDS(MDISG(MDACHN(MRU)))
  153. IF (IDEB.NE.IDA) THEN
  154. MDCHN ,IDEB (IDA)
  155. ENDIF
  156. MDQUEU(ITYPA)=MDMRU
  157. MDTYP(IDA) =ITYPA
  158. C
  159. ELSEIF ( SUPER SEGMENT ACTIF DESACTIVE LRU (ISA) ) THEN
  160. ISX =ISA+(MSLMARK)
  161. ISF =ISX+MSMARK(ISA)
  162. DO WHILE (ISX.LT.ISF)
  163. LSX = MSLS1(ISX)
  164. IDX = MSIDE(ISX)
  165. ITYPX = MDTYP(IDX)
  166. IF (MDETAT(ITYPX).NE.MDACT) THEN
  167. ISTAT=MSMKISS(ITYPX)
  168. MSMKSTAT(ISA,ISTAT) =MSMKSTAT(ISA,ISTAT)-1
  169. MSMKSTAT(ISA,STINACT)=MSMKSTAT(ISA,STINACT)+1
  170. MDETAT(ITYPX) =MDINACT
  171. MDTYP(IDX) =ITYPX
  172. ENDIF
  173. ISX=ISX+LSX
  174. ENDDO
  175. C
  176. IDEB=MDACHN(LRU)
  177. MDCHN ,IDEB(IDA)
  178. ELSE
  179. CALL OOOSUS (IDA)
  180. ENDIF
  181. C
  182. C------ GROS SEGMENT : ECRITURE EN ZONE DE DEBORDEMENT
  183. C
  184. ELSEIF (LSA.GT.(LSBUF/2)) THEN
  185. IF (TESOOO) CALL OOOWER (' OOOMWD => OOOSUW')
  186. CALL OOOSUW (KRET,IDA)
  187. IF (KRET.EQ.1) GO TO 200
  188. IF (TESOOO) CALL OOOWER (' OOOMWD <= OOOSUW')
  189. C
  190. C------ PETIT SEGMENT : TRANSFERT DANS LA CHAINE BUFFER CORRESPONDANT
  191. C AU TYPE DU SEGMENT
  192.  
  193. ELSE
  194. ICHN=MDNQIO(ITYPA)
  195. IDEB=MDACHN(ICHN)
  196. C CHAINE PLEINE ?
  197. C TRANSFERT DES SEGMENTS DANS LE BUFFER
  198. IF (MZQCHN(ICHN)+LSA.GT.LSBUF) THEN
  199. IF (TESOOO) CALL OOOWER (' OOOMWD 7')
  200. ISX = 0
  201. LSX = MZQCHN(ICHN)
  202. ISB = MDISG(IDEB)
  203. DO WHILE (ISX.LT.LSX)
  204. IDB=MSIDS(ISB)
  205. ISB=MDISG(IDB)
  206. LSB=MSLS1(ISB)
  207. CALL OOOZMV (JSG(ISB+1),PBUF.BUFFER(ISX+1),LSB)
  208. MZJSS(DEPLACES)=MZJSS(DEPLACES)+1
  209. MZJSM(DEPLACES)=MZJSM(DEPLACES)+LSB
  210. ISX=ISX+LSB
  211. ENDDO
  212. C ECRITURE DU BUFFER EN ZONE DE DEBORDEMENT
  213. IF (TESOOO) CALL OOOWER (' OOOMWD => OOOBUW')
  214. CALL OOOBUW (KRET,LSX)
  215. IF (KRET.EQ.1) GO TO 200
  216. IF (TESOOO) CALL OOOWER (' OOOMWD <= OOOBUW')
  217. ENDIF
  218. MDCHN , IDEB(IDA)
  219. MDIO(ITYPA)=MDBUF
  220. MDTYP(IDA) =ITYPA
  221. C
  222. ENDIF
  223. C
  224. C NBRE DE MOTS LIBRES SUFFISANT?
  225. C
  226. ** on s'oblige a un gain minimal
  227. IF (MZLTROU(IZA,ZMEMDYN)-mlibre.LT.MZLEN(IZA)*0.05.OR.
  228. > MZLTROU(IZA,ZMEMDYN).LT.LSEG) GO TO 100
  229. C
  230. LRET = 2
  231. RETURN
  232. ENDIF
  233. ENDDO
  234. ENDIF
  235.  
  236. 200 IF (TESOOO) CALL OOOWER (' OOOMWD => OOOMTA : TASSEMENT')
  237. CALL OOOMTA (LRET,LSEG)
  238. IF (TESOOO) CALL OOOWER (' OOOMWD <= OOOMTA')
  239.  
  240. IF (LRET.EQ.1 .AND. KRET.EQ.1) THEN
  241. CALL OOOERR (0,3,'LE FICHIER DE DEBORDEMENT MEMOIRE EST PLEIN')
  242. ENDIF
  243.  
  244. END
  245.  
  246.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales