Основы многопоточного и распределенного программирования

       

Литература


Almasi, G. S., and A. Gottlieb.  1994. Highly Parallel Computing. 2nd ed. Menlo Park, CA: Benja-min/Cummings.

Bacon, J. 1998. Concurrent Systems: Operating Systems, Database and Distributed Systems: An Integrated Ap­proach. 2nded. Reading, MA: Addison-Wesley.

Bernstein, A. J., and P. M. Lewis. 1993. Concurrency in Programming and Database Systems. Boston, MA' Jones and Bartlett.


Andrews, G. R. 1991. Concurrent Programming: Principles and Practice. Menlo Park, CA: Benjamin/ Cum-mings.

Ashcroft, E. and Z. Manna. 1971. Formalization of properties of parallel programs. Machine Intelligence 6:17—41.

Bernstein, A. J. 1966. Analysis of programs for parallel processing. IEEE Trans, on Computers EC-IS, 5 (October): 757-762.

Dijkstra, E. W, 1965. Solution of a problem in concurrent programming control. Comm. ACM 8, 9 (September): 569.

Dijkstra, E. W. 1968. Cooperating sequential processes. In F. Genuys, ed. Programming Languages. New York: Academic Press, pp. 43-112. (Э. Дейкстра. Взаимодействующие последовательные про­цессы. В сб. "Языки программирования" под ред. Ф. Женюи — М.: Мир, 1972.)

Dijkstra, E. W. 1977. On two beautiful solutions designed by Martin Rem. EWD 629. Reprinted in E. W. Dijkstra. Selected Writings on Computing: A Personal Perspective. New York: Springer-Verlag, 1982, pp. 313-318.

Floyd, R. W. 1967. Assigning meanings to programs. Proc. Amer. Math. Society Symp. in Applied Mathemat­ics 19: 19-31.

Francez, N. 1986. Fairness. New York: Springer-Verlag.

Hoare, C. A. R. 1969. An axiomatic basis for computer programming. Comm. ACM 12, 10 (October) 576-580, 583.

Hoare, C. A. R. 1972. Towards a theory of parallel programming. In C. A. R. Hoare and R. H. Perrott, eds. Operating Systems Techniques. New York: Academic Press.

Hofstadter, D. J. 1979. Gddel, Escher, Bach: An Eternal Golden Braid. New York: Vintage Books.



Глава 2. Процессы и синхронизация                                                                                      79

Lamport, L. 1977a. Proving the correctness of multiprocess programs. IEEE Trans, on Software Engr. SE-3, 2 (March): 125-143.

Lamport, L. 1977b. Concurrent reading and writing. Cumm.ACM2Q, 11 (November): 806-811.

Lehman, D., A. Pnueli, and J. Stavii. 1981. Impartiality, justice, and fairness: The ethics of concurrent termination. Proc. Eighth Cotton, on Automata, Langs., and Prog., Lecture Notes in Computer Sci­ence Vol. 115.


Andrews, G. R., and J. R. McGraw. 1977. Language features for process interaction. Proc. ACM Conference on Language Design for Reliable Software. SIGPLA.N Notices 12, 3 (March): 114-127.

Brinch Hansen, P. 1972. Structured multiprogramming. Comm. ACM 15, 7 (July), 574-578. Brinch Hansen, P. 1973. Operating System Principles. Englewood Cliffs. NJ: Prentice-Hall.

Brinch Hansen, P. 1975. The programming language Concurrent Pascal. IEEE Trans, on Software Engr. SE-1,2 (June): 199-206.

206                                               Часть 1. Программирование с разделяемыми переменными

5.2.    Рассмотрим монитор Shortest_Job_Next в листинге 5.5. Будет ли этот монитор пра­вильно работать при порядке сигнализации "сигнализировать и ожидать"? Если да, объясните, почему. Если нет, внесите необходимые изменения.

5.3.    Рассмотрим следующее решение задачи распределения ресурсов со стратегией плани­рования "кратчайшее задание" из раздела 5.2.

monitor SJN  {

bool free = true; cond turn;

procedure request(int time) {

if (Ifree)

wait(turn, time);

free = false; }

procedure release() { free = true; signal(turn); } }

Правильно ли это решение при порядке "сигнализировать и продолжить"? Правильно ли оно при порядке "сигнализировать и ожидать"? Обоснуйте свои ответы.

' 5.4.   Следующие задачи касаются монитора в листинге 5.4. Предположим, что во всех четы­рех задачах использована семантика "сигнализировать и продолжить":

а)   пусть нет операции signal_all. Измените решение, чтобы использовалась только операция signal;

б)   измените решение, чтобы преимущество получали писатели, а не читатели;

в)   измените решение, чтобы при одновременной попытке доступа к базе данных писатели и читатели работали с ней по очереди;

г)   измените решение, чтобы читатели и писатели получали право доступа к базе данных в порядке FCFS (first come, first served — первым пришел, первым обслужен). Разрешите читателям параллельно работать с базой данных, если это не нарушает порядка FCFS по­лучения права доступа.



Содержание раздела