Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Needs to be done in the C programming language. An operating system's pid manager is responsible for managing process identifiers. When a process is first

Needs to be done in the C programming language. image text in transcribed

An operating system's pid manager is responsible for managing process identifiers. When a process is first created, it is assigned a unique pid by the pid manager. The pid is returned to the pid manager when the process completes execution, and the manager may later reassign this pid. Process identifiers are discussed more fully in Section 3.3.1. What is most important here is to recognize that process identifiers must be unique: no two active processes can have the same pid. Use the following constants to identify the range of possible pid values: #define MIN_PID 300 #define MAX_PID 5000 You must use a linked list, or the strategy as described here for Linux. One strategy is to adopt what Linux has done and use a bitmap in which a value of 0 at position i indicates that a process id of value i is available and a value of 1 indicates that the process id is currently in use. If using bitmaps, remember that a 32bit integer will be capable of storing the availability of 32 pids, to store availability of 1024 pids will require 1024 bits, or 128 bytes, only 2 64bit integers. In other words, using the pid values from the example, an array of 4700 elements is not a valid solution for the problem. If you are unclear, please ask for help. Implement the following API for obtaining and releasing a pid: int allocate_map(void)-Creates and initializes a data structure for representing pids; returns - 1 if unsuccessful, 1 if successful int allocate_pid(void)-Allocates and returns a pid; returns - 1 if unable to allocate a pid (all pids are in use) void release_pidint pid) --Releases a pid An operating system's pid manager is responsible for managing process identifiers. When a process is first created, it is assigned a unique pid by the pid manager. The pid is returned to the pid manager when the process completes execution, and the manager may later reassign this pid. Process identifiers are discussed more fully in Section 3.3.1. What is most important here is to recognize that process identifiers must be unique: no two active processes can have the same pid. Use the following constants to identify the range of possible pid values: #define MIN_PID 300 #define MAX_PID 5000 You must use a linked list, or the strategy as described here for Linux. One strategy is to adopt what Linux has done and use a bitmap in which a value of 0 at position i indicates that a process id of value i is available and a value of 1 indicates that the process id is currently in use. If using bitmaps, remember that a 32bit integer will be capable of storing the availability of 32 pids, to store availability of 1024 pids will require 1024 bits, or 128 bytes, only 2 64bit integers. In other words, using the pid values from the example, an array of 4700 elements is not a valid solution for the problem. If you are unclear, please ask for help. Implement the following API for obtaining and releasing a pid: int allocate_map(void)-Creates and initializes a data structure for representing pids; returns - 1 if unsuccessful, 1 if successful int allocate_pid(void)-Allocates and returns a pid; returns - 1 if unable to allocate a pid (all pids are in use) void release_pidint pid) --Releases a pid

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Intranet And Web Databases For Dummies

Authors: Paul Litwin

1st Edition

0764502212, 9780764502217

More Books

Students also viewed these Databases questions