CS Division – EECS Department University of Central Florida CGS 3763 – Operating System Concepts Spring 2013 – dcm Homework 3 (100 points) Due Wednesday, Wednesday February 27, 5 PM A homework should be written in Word or Latex and should be Emailed to the TA Bo Kang - [email protected]) Subject of the Email: First.Last student name - HW3 Problem 3.1 Define the concepts of modularity and layering. a. List and then discuss the advantages of modularity in the design of a software system. Are there any disadvanatages? b. List and then discuss the advantages of layering in the design of a software system. Are there any disadvanatages? c. Are the two concepts related to one another? Explain your answer. d. Give an example of a microkernel and explain what are the advantages of this approach and how it is related to modularity and layering? Problem 3.2 A network architecture is based on a protocol stack. a. Define the concept of a communication protocol. b. Discuss the function of each element of the Internet protocol stack. c. Explain why this layered architecture is desirable and why it is feasible. d. Why do we say that the Internet is based on hourglass network architecture? e. Discuss the concepts of encapsulation and decapsulation. Problem 3.3 The kernel of an operating system includes several processes that support Internet communication. a. Define the concepts of multiplexing and de-multiplexing in the context of kernel implementation of a networking architecture. b. Identify the kernel processes involved in network activities and discuss the function of each one of them. c. Discuss the concepts of ports and sockets and the relationship between them. d. What type of data structures are used for the implementation of sockets? Problem 3.4 Define the concepts of message passing and shared-memory communication. a. Discuss the concepts of direct and indirect communication. b. What type of communication primitives must be implemented by the kernel to support message passing? Describe all information needed to send and receive a message. c. Discuss the semantics of blocking and non-blocking communication primitives and synchronous versus asynchronous message passing. Problem 3.5 List several client-server systems you are familiar with. a. What are the advantages of the client-server paradigm? b. What is a stateless-server? c. What is a trusted intermediary? d. Discuss the concepts of “pushing” and “pulling” a message to/from a trusted intermediary. e. Can the client-server model be used to allow processes to communicate using events in a distributed system? Problem 3.6 Discuss the similarities and dissimilarities of processes and threads. a. What are the reasons for using threads rather than processes? b. Is there a need for kernel support for threads? Justify your answer and discuss several possible modes of interaction between user and kernel threads. c. What is a thread library? d. What are the methods to create Java threads? e. How does a user specify the actual code to be run by a Java thread?