Computer Systems: A Programmer's Perspective (3rd Edition)
3rd Edition
ISBN: 9780134092669
Author: Bryant, Randal E. Bryant, David R. O'Hallaron, David R., Randal E.; O'Hallaron, Bryant/O'hallaron
Publisher: PEARSON
expand_more
expand_more
format_list_bulleted
Concept explainers
Question
Chapter 12, Problem 12.22HW
Program Plan Intro
I/O Multiplexing:
- The idea of I/O multiplexing is to use “select” function to ask kernel to suspend process.
- It returns control to application only after one or more I/O events had occurred.
- It denotes waiting for a set of descriptors that is ready for reading.
- The “select” function would manipulate sets of type “fd_set”, that denotes descriptor sets.
- It takes two inputs: a descriptor set called “read set” and cardinality of read set.
- It blocks until at least one descriptor in read set is ready for reading.
- A descriptor “k” is ready for reading if and only if a request to read 1 byte from that descriptor would not block.
- The “fd_set” is been modified that points to argument “fdset” to indicate subset of read set called “ready set”.
- The value returned by function indicates cardinality of ready set.
Expert Solution & Answer
Want to see the full answer?
Check out a sample textbook solutionStudents have asked these similar questions
The provided Linux runtime memory image shows the address space for a program named exam that is running in memory. If the exam program calls the printf function that is defined in the libc library, then what type of linking was performed?
00400000-004b6000 x-xp 00000000 00:75 163237418
006b6000-006bc000 rw-p 000b6000 00:75 163237418
806bc000-006bd000 rw-p 00000000 08:00 0
820bc800-828df000 rw-p 00000000 08:00 0
7ffc02014000-7ffc02035000 rw-p eeeeeeee 00:00 0
A. Static
OB. None are correct
OC. Global
OD. Dynamic
Reset Selection
/mnt/learncli/workdir/exam
/mnt/learncli/workdir/exam
[heap]
[stack]
Create a postfix-to-infix translator with layers. The application should receive a postfix expression and output the corresponding infix expression until the user leaves. Throw an exception if the postfix phrase provided is illegal.
Need help to implement networking in python
Server.py
Load data from file This option will ask the user for a fully qualified path and will load a JSON file containing the information for users and pending messages. The format of the JSON file will be defined based on your implementation and it will the same used to save the data into file (menu option #4).
Functionalities the server must provide: 1)
User Sign Up: adds a user identified by a phone number to the system.
a) Protocol: USR|username|password|display_name
b) Response: 0|OK for success. 1| for an error.
c) The server should validate that the username does not exist
2) User Sign In: verify user credentials
a) Protocol: LOG|username|password
b) Response: i) 0|OK → the credentials are correct.
ii) 1|Invalid Credentials iii) 2|Already Logged In → in case that the user is logged in from another client.
c) This will help the server knowing which user is connected.
d) The server should keep a list of connected clients, which should…
Chapter 12 Solutions
Computer Systems: A Programmer's Perspective (3rd Edition)
Ch. 12.1 - Prob. 12.1PPCh. 12.1 - Prob. 12.2PPCh. 12.2 - Practice Problem 12.3 (solution page 1036) In...Ch. 12.2 - Practice Problem 12.4 (solution page 1036) In the...Ch. 12.4 - Prob. 12.5PPCh. 12.4 - Prob. 12.6PPCh. 12.5 - Prob. 12.7PPCh. 12.5 - Prob. 12.8PPCh. 12.5 - Prob. 12.9PPCh. 12.5 - Prob. 12.10PP
Ch. 12.6 - Prob. 12.11PPCh. 12.7 - Prob. 12.12PPCh. 12.7 - Prob. 12.13PPCh. 12.7 - Prob. 12.14PPCh. 12.7 - Prob. 12.15PPCh. 12 - Prob. 12.20HWCh. 12 - Derive a solution to the second readers-writers...Ch. 12 - Prob. 12.22HWCh. 12 - Prob. 12.23HWCh. 12 - Prob. 12.24HWCh. 12 - Prob. 12.25HWCh. 12 - Prob. 12.26HWCh. 12 - Some network programming texts suggest the...Ch. 12 - Prob. 12.28HWCh. 12 - Prob. 12.29HWCh. 12 - Prob. 12.30HWCh. 12 - Implement a version of the standard I/O fgets...Ch. 12 - Prob. 12.32HWCh. 12 - Prob. 12.33HWCh. 12 - Prob. 12.34HWCh. 12 - Prob. 12.35HWCh. 12 - Prob. 12.36HWCh. 12 - Prob. 12.37HWCh. 12 - Prob. 12.38HWCh. 12 - Prob. 12.39HW
Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Similar questions
- In C++ This exercise involves implementing the solution to the bounded buffer/readers and writers problem using threads. You will create a program that accepts four command line arguments: run_time (the length of time the program should run) buffer_size (number of slots in the bounded buffer) num_producers (number of producer threads) num_consumers (number of consumer threads) The program will create a thread for each producer and consumer. As each thread produces or consumes a data item, it will print its status. Example Output Here are some sample runs: Not enough arguments If not enough arguments are provided, the program should print an error message and exit. $ ./bounded_buffer Wrong number of arguments. Usage: bounded_buffer <run_time> <buffer_size> <num_producers> <num_consumers> $ Invalid argument If an argument is less than or equal to 0, the program should print a message and exit $ ./bounded_buffer 10 5 1 0 ./bounded_buffer 10 5 1 0 num_consumers…arrow_forwardComputer Science lab Please code in the Node js to split the string into the readable format. Use the built in modules to easily split the query. Split the query string into readable partsthe address: - http://localhost:8080/?year=2017&month=JulyOutput: - 2017 Julyarrow_forwardFor the scramble.c problem, write a program that: • Has a main () function and another function that has this prototype: void scramble str (char s[]); • The scramble_str() function scrambles the contents of the string in a random way so that the string has the same length as before, but the contents are all mixed around. It does this in-place, i.e., there is only one buffer that holds a string. You're free to scramble it any way you want to, but use rand () repeatedly so it gets really scrambled. • The main () function will read a string entered by the user into the buffer, call scramble_str(), and output the resulting string. This will be done in a loop forever, until the entered string is the string "bye". When the user says "bye", the program will exit with a polite message. Do note that reading a string using scanf (), which is the only tool I've introduced you to so far, will just read up to the first whitespace. So, multiple-word strings won't work! Let's use something that will…arrow_forward
- Using client-server socket programming, implement a multi-threaded server that returns to the client the synonym of a word as stored in a dictionary. The client should prompt the user for a word, reads the word from the screen and sends it to the server and waits for response from the server. Once the client gets the synonym of the word, it should print the word and its synonym on the screen and prompt for another word. This should continue until the user enters the characters @ to quit. Example: >>> python TCPClient.py Input a word: weak weak ==> frail Input a word: fair fair ==> just Input a word: @ Notes: 1) A file that contains some words and their synonyms is provided 2) In the server code, read the file to a global python dictionary object engDict = {} # empty dictionary object with open('dictionary.txt') as f: # open the file for line in f: tok = line.split() engDict[tok[0]] = tok[1] print(engDict) 3) Here is a Skelton of the server [some code here ] class…arrow_forwardUsing client-server socket programming, implement a multi-threaded server that returns to the client the synonym of a word as stored in a dictionary. The client should prompt the user for a word, reads the word from the screen and sends it to the server and waits for response from the server. Once the client gets the synonym of the word, it should print the word and its synonym on the screen and prompt for another word. This should continue until the user enters the characters @ to quit. Example: >>> python TCPClient.py Input a word: weak weak ==> frail Input a word: fair fair ==> just Input a word: @ Notes: 1) A file that contains some words and their synonyms is provided 2) In the server code, read the file to a global python dictionary object engDict = {} # empty dictionary object with open('dictionary.txt') as f: # open the file for line in f: tok = line.split() engDict[tok[0]] = tok[1] print(engDict) 3) Here is a Skelton of the server [some code here ] class…arrow_forwardC Programming in Ubuntu Write a program using pthreads, which calculates the sum of elements in a hard-coded integer array in parallel using 4 threads. The program must divide the work between 4 threads which run simultaneously. For simplicity, you can assume that the size of the array is 100. Note that the integer array must be declared as a global data structure. Initially code your solution so that the sum of elements is maintained in a global shared variable. Each thread modifies the same shared variable as it sums up elements from the array. Use a suitable synchronization primitive (mutex) to ensure safe access to the global variable. (A sample code of Mutex is attached for your reference)arrow_forward
- Write a device driver for a character device which implements a simple way of message passing. The kernel maintains a list of messages. To limit memory usage, we impose a limit of 4KB = 4*1024 bytes for each message and also impose a limit of the total number of messages stored in the kernel, which is 1000. Your device driver should perform the following operations: * When the module is loaded, the device is created. An empty list of messages is created as well. * Removing the module deallocates all messages, removes the list of messages and removes the device. * Reading from the device returns one message, and removes this message from the kernel list. If the list of messages is empty, the reader returns -EAGAIN. * Writing to the device stores the message in kernel space and adds it to the list if the message is below the maximum size, and the limit of the number of all messages stored in the kernel wouldn't be surpassed with this message. If the message is too big, -EINVAL is…arrow_forwardWrite code in C language. Create an integer array as input in C programming language. Create two threads. The first thread sums the even elements of the array, and the second thread sums the odd elements of the array. You can declare only one function outside the main functionarrow_forwardWrite a windows32 assembly language program in visual studio that utilizes a recursive procedure. The main (_MainProc) procedure should: accept, from the user, an integer greater than 0. Guard against invalid values being entered using a loop. call the recurse sub-procedure using the cdecl protocol, receive the results of the sub-procedure, and display the results. NOTE: The main procedure should do nothing more than this! The recurse sub-procedure should (following the cdecl protocol): recursively find the solution for: recurse(0) = 3, and recurse(n) = 5 * recurse(n-1) + 9, for n > 0. return the value back to the calling procedure. Notes: Both the main procedure and recurse sub-procedure must follow the cdecl protocol.arrow_forward
- Modify the producer-consumer implementation code bellow, so that it uses monitors to handle race conditions instead of semaphores or mutexes. Use the pthread library implementation #include <pthread.h> #include <semaphore.h> #include <stdio.h> #include <stdlib.h> #define BUFFER_SIZE 20 pthread_mutex_t mutex; int count = 0; int buffer[BUFFER_SIZE]; pthread_t tid; int producers = 0, consumers = 0; void insert(int item) { while (count == BUFFER_SIZE); if (count < BUFFER_SIZE) { buffer[producers] = item; producers++; producers=producers%BUFFER_SIZE; sleep(1); } return; } int remove_item() { int item; while (count == 0); if (count > 0) { item = buffer[consumers]; buffer[consumers] = buffer[consumers - 1]; consumers++; consumers=consumers%BUFFER_SIZE; sleep(1); } return item; } void * producer(void *param) { int item; while (1) { item = rand() % BUFFER_SIZE; while (count >= BUFFER_SIZE);…arrow_forwardWrite a windows32 assembly language program in visual studio that utilizes a recursive procedure. The main (_MainProc) procedure should: accept, from the user, an integer greater than 0. Guard against invalid values being entered using a loop. call the recurse sub-procedure using the cdecl protocol, receive the results of the sub-procedure, and display the results. NOTE: The main procedure should do nothing more than this! The recurse sub-procedure should (following the cdecl protocol): recursively find the solution for: recurse(0) = 3, and recurse(n) = 5 * recurse(n-1) + 9, for n > 0. return the value back to the calling procedure. Notes: Both the main procedure and recurse sub-procedure must follow the cdecl protocol. I need commented code otherwise it will be not acceptedarrow_forwardFor an fstream object A, whose data elements are of type B and a local variable called C, the proper way to read in one element of type B element from A into C is:arrow_forward
arrow_back_ios
SEE MORE QUESTIONS
arrow_forward_ios
Recommended textbooks for you
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education