> -----Original Message-----
> From: IBM Mainframe Discussion List 
> [mailto:[email protected]] On Behalf Of Paul Gilmartin
> Sent: Wednesday, November 18, 2009 12:25 PM
> To: [email protected]
> Subject: Re: Reentrant Programs and Protected Storage
> 
<snip>
> I agree with your analysis: REFR and RENT should be 
> independent.  One can
> contrive scenarios to populate each quadrant of the truth table.  IBM,
> with binder, however, has made the definitions hierarchial:  REFR
> implies RENT, and RENT implies REUS.
> 
> -- gil
> 

I definitely agree that RENT and REFR are different concepts. Well, at least to 
me they are. RENT means that the code is reentrant. That is, it can be executed 
concurrently (or simultaneously on multiprocessors) by multiple tasks/threads 
and still work correctly. This does not mean "non-self modifying". Self 
modifying programs can be reentrant by proper use of ENQ/DEQ, locks, 
semaphores, etc. Also, a "non-self modifying" program may not be reentrant if 
it updates a shared area (or file!) without the proper locking.

REFR, to me, means that the code is non-self modifying (I think this was also 
called "pure code"). That is, if the code is running in a page frame which 
"fails", then the OS can simply page that code back in from the paging system 
to another page frame and redispatch the work with no difference in the 
programs processing. It could also mean that the OS could be written such that 
it never pages the program out to a dataset because it can simply be fetched 
again from the original source. Or that the frame could be stolen without doing 
a page-out. This is basically how LPA works.

As I recall, back in the days of OS/360 and OS/VS1, there was a "transient SVC 
area". This area was small (4K?). All SVCs had to be REFR because they all ran 
in this one area. It is also why type 3 SVCs were restricted in size. The 
entire SVC had to fit in the transient area. Type 4 SVCs got around this by 
being kept in multiple modules and one module would XCTL to the other modules 
which made up the SVC, each loaded into the transient area. Anyway, if an SVC 
were running for task A when it was preempted in order to run task B, and task 
B did an SVC, then task B's SVC would overlay this area and run. When task A 
was redispatched, the OS would reload task A's SVC from SVCLIB. End of history 
lession - hope I wasn't off too badly.

--
John McKown 
Systems Engineer IV
IT

Administrative Services Group

HealthMarkets(r)

9151 Boulevard 26 * N. Richland Hills * TX 76010
(817) 255-3225 phone * (817)-961-6183 cell
[email protected] * www.HealthMarkets.com

Confidentiality Notice: This e-mail message may contain confidential or 
proprietary information. If you are not the intended recipient, please contact 
the sender by reply e-mail and destroy all copies of the original message. 
HealthMarkets(r) is the brand name for products underwritten and issued by the 
insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance 
Company(r), Mid-West National Life Insurance Company of TennesseeSM and The 
MEGA Life and Health Insurance Company.SM

 

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to