Reusable Server Kernel - Exercises


Table of Contents

Reusable Server Kernel - Exercises


Reusable Server Kernel - Exercises

These questions will help you firm up your understanding of many of the areas of the RSK.

  1. Match the list entries.
    1. PROFILE RSK

    2. Service

    3. Line driver

    4. C-block

    5. IUCV

    6. Object, user, action

    7. DIAG X'250'

    8. Move Long

    9. ssMemoryAllocate

    10. S-block

    11. CMS IPC

    12. SSASMWRK

    13. Worker machine

    14. Enrollment set

    15. BKWRTE

    16. *

    17. SSPRLG

    18. CMS/MT wildcarding

    19. KERNEL row

    20. RSKMAIN

    1. Run-time environment manager

    2. Mapped userid for CONSOLE

    3. Essential part of user ID mapping

    4. Worker API binding

    5. Authorization API

    6. Represents service

    7. Data space backed by SFS

    8. Represents client

    9. Manages transport protocol

    10. Grandson of DMSFREE?

    11. Your route to the line driver

    12. Automatic storage macro

    13. A(your first instruction)

    14. Transport for worker API

    15. Key to decoding monitor data

    16. MAPMDISK I/O method

    17. The part you write

    18. Method for storage group I/O

    19. Initialization exec

    20. Isolates risky function

  2. Put these items in the correct order by writing appropriate numerals on the lines provided.
    ____ ssServerRun
    ____ Module begins
    ____ RUNSERV
    ____ Line driver and service commands
    ____RSKMAIN returns to caller
    ____Appropriate setup code
    ____WAITSERV
    ____RSKMAIN regains control
    ____ssServiceBind a few times
    ____RSKMAIN gets control
    ____Module ends
    ____PROFILE RSK gets control
    ____SERVER STOP or ssServerStop
    ____Appropriate teardown code
    ____A few CONFIG commands
    ____PROFILE RSK returns
    ____A long time passes
    ____Your last-minute termination code

  3. Explain the processing that is to happen in your RSKMAIN.

  4. As the author of a service, there are three entry points you must supply.

    1. Name the three entry points.

    2. Which API do you use to inform the RSK about your service?

    3. When in the server's life do you call this API?

    4. Under what conditions does the RSK drive each one?

  5. What register conventions must you observe when calling an RSK entry point?

  6. Explain the meanings of the status bits in the IPC message an RSK line driver sends to an instance.

  7. Suppose your service were being sourced by a record-oriented line driver. Explain how to use ssClientDataGet in this situation. How would you decode the inbound data stream? What about your use of ssClientDataPut -- how is the outbound data stream to be constructed?

  8. Suppose your service were interested in waiting for stimuli other than those indicative of client activity. How could you accomplish this?

  9. What is the function of the AUTHCHECK_ configuration parameter set? Explain the relationship between these and ssAuthTestOperations.

  10. Your files are in the BFS in EBCDIC with X'15' line delimiters and you are serving them to a client that wants them in ASCII with CR-LF delimiters. Show how to call ssCacheFileOpen for this situation.

  11. Why is DIAG X'A4' the RSK's last resort for storage group I/O?

  12. Suppose your server requires an extensive set of configuration variables of its own. Is there an RSK feature or facility that will help you with this problem? Explain.

  13. Name some reasons why you would consider running work in a worker machine instead of the main server.

  14. If you divide the circumference of a jack-o-lantern by its diameter, what do you get?

  15. Consider the following output from the MONITOR service:
    RSK>
    monitor display kernel
    MONITOR  KERNEL            at 07E59000.00000048
    MONITOR  D2C5D9D5 C5D34040 40404040 40404040 00000032 00000048 00000020 00000001
    MONITOR  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    MONITOR  00000000 00000000
    RSK>
    monitor display linedrv
    MONITOR  LINEDRV  SUBCOM   at 07E59708.00000048
    MONITOR  D3C9D5C5 C4D9E540 E2E4C2C3 D6D44040 00000000 00000020 00000000 0000023E
    MONITOR  00000000 000004F0 00000000 00000000 00000000 00000000 00000000 00000000
    MONITOR  00000000 00000000
    MONITOR  LINEDRV  CONSOLE  at 07E597E0.00000048
    MONITOR  D3C9D5C5 C4D9E540 C3D6D5E2 D6D3C540 00000000 00000002 00000000 0000001D
    MONITOR  00000000 0000011C 00000000 00000000 00000000 00000000 00000000 00000000
    MONITOR  00000000 00000000
    RSK>
    monitor user
    MONITOR  User data at 07E59F78.00000020
    MONITOR  00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    RSK>
    

    1. How many monitor rows are there?

    2. What is the size of the user monitor buffer?

    3. How many lines have been typed on the console?

  16. Why does ssMemoryAllocate not support private subpools?

  17. In PROFILE RSK, which line driver starts services first, and why?

  18. What's wrong with this Rexx snippet from PROFILE RSK?
     'TCP START HTTP 80'
     if (rc<>0) then
      say 'TCP start failed!'