https://publicpagestutorbin.blob.core.windows.net/%24web/%24web/assets/Vector_3_18e566da35.png

Operating System Homework Help | Operating System Assignment Help

Excel in Exams with Expert Operating System Homework Help Tutors.

https://publicpagestutorbin.blob.core.windows.net/%24web/%24web/assets/Frame_1_7db546ad42.png

Trusted by 1.1 M+ Happy Students

WhatsApp Support

Get Instant
Online Homework Help
via WhatsApp

Get instant homework help from top tutors—just a WhatsApp message away. 24/7 hw help support for all your academic needs!

A
S
M
R
★★★★★
2M+ students trust TutorBin
Your WhatsApp Number
phone
or
⚡ Instant reply
🔒 100% private
👨‍🏫 Top tutors
🌍 All subjects
*Get instant homework help from top tutors—just a WhatsApp message away. 24/7 support for all your academic needs!
2M+ Students Helped24/7 Live SupportExpert TutorsAll Subjects CoveredInstant Response100% ConfidentialTop Rated ServiceMoney-back Guarantee2M+ Students Helped24/7 Live SupportExpert TutorsAll Subjects CoveredInstant Response100% ConfidentialTop Rated ServiceMoney-back Guarantee

Master Operating Systems with Expert Online Tutoring

Dive into the intricate world of Operating Systems with our comprehensive online tutoring services. Whether you're grappling with homework challenges or aiming to deepen your understanding of Operating Systems, our team of expert tutors is ready to guide you every step of the way. With a diverse pool of tutors specialized in various aspects of Computer Science, we're equipped to address your unique learning needs and help you excel.

Get Started with Operating Systems Help

Easy Help Request Submission

Kickstart your journey to mastering Operating Systems by simply sending us your homework problem or a request for general tutoring. Our straightforward process ensures you can quickly get the assistance you need without any hassle.

Instant Quotes from Qualified Tutors

Upon submission of your request, you'll receive responses from our highly qualified tutors in no time—sometimes within minutes! Our system ensures that you're matched with a tutor who best fits your learning requirements and objectives.

Collaborative Online Tutoring Experience

Engage in a dynamic learning environment with your tutor online. Our interactive sessions are designed to tackle your questions and provide solutions promptly, facilitating a deeper understanding of Operating Systems.

Why Choose Us for Your Operating Systems Tutoring Needs?

Diverse Expertise: Our tutors come from varied backgrounds in Computer Science and Operating Systems, ensuring tailored guidance that meets your specific learning objectives.

  • Flexible and Immediate Assistance: Get instant responses and quotes from our tutors, allowing for timely and effective tutoring sessions tailored to fit your schedule.
  • Interactive Learning Experience: Our online platform facilitates a collaborative environment where you can actively engage with tutors to solve problems and understand concepts deeply.
  • Affordable Learning: We offer competitive rates for our tutoring sessions, ensuring you receive quality education without breaking the bank.

Ready to conquer the complexities of Operating Systems? Submit your help request now and embark on a transformative learning journey with our expert tutors. With our support, you'll not only ace your assignments but also gain a solid understanding of Operating Systems that will serve you well in your academic and professional future.

Recently Asked Operating System Questions

Expert help when you need it
  • Q1:A needs assessment must be done before an IT professional recommends a specific OS. Every organization has unique OS needs and requirements. A user might need specific software while others in the same department do not. Managing these requirements can be challenging when maintaining multiple instances of OSes and capabilities. For this week’s discussion, review the three scenarios from the IT professional’s perspective and select one. Scenario 1: You work for a small software company with four departments, including Marketing, Business Operations, Product Development, and Customer Support. Marketing uses iMovie and Keynote to create marketing materials and external presentations. There is no intent to change products since their departmental standards include these titles. Business Operations must use MS Visio to create system diagrams and flowcharts. Business Operations and Product Development need access to project management software such as Jira or Asana. Lastly, Customer Support uses a customer relationship management (CRM) program that was formerly supported by an older version of Windows. Scenario 2: You work for a large organization with 15 departments. A new leadership initiative to centralize systems requires employees to use the same OS and computer brand. Some departments use Windows, and others use macOS. Some desktops in those departments have Linux-based systems. Some departments are still using older OS versions, which negatively impacts productivity. Customer-facing departments will roll out the Salesforce CRM. The leadership team decided to centralize the system infrastructure because of this CRM implementation. Scenario 3: You work for a major publishing company in the United States that has merged with a smaller company in the United Kingdom. The smaller company’s infrastructure has not been upgraded in a long time. One department is still using Windows 8. Another is running the Mac OS X 10.8 Mountain Lion, released in 2012. The organization has relied on certain applications to create newsletters and e-books and design print-on-demand products. All of the technological equipment must be audited to reflect the parent company’s system architecture and security model. In your initial post, address the following items: Identify your chosen scenario. Answer the following questions: What OS and version do you recommend implementing? Why? Should more than one OS be implemented? If so, which ones? What software and hardware requirements support your decision? What else helped you make the decision to recommend specific OSes? Provide a strong rationale for your decisions. State any assumptions you made beyond the information in your chosen scenario.See Answer
  • Q2: 2/7/24, 8:14 AM • Is-files • Is-tree merge-base • read-tree • rev-list • rev-parse show-ref ● ● symbolic-ref update-index ● update-ref • verify-pack • write-tree Version 2.43.0 ▼ gittutorial last updated in 2.43.0 Changes in the gittutorial manual 1.2.43.0 2.2.42.0 3.2.41.0 ■| 4. 2.33.1 5. 2.33.0 6. Check your version of git by running git --version NAME or: git * 11/20/23 2.42.1 no changes 06/01/23 2.40.1 no changes 08/16/21 — gittutorial - A tutorial introduction to Git SYNOPSIS DESCRIPTION This tutorial explains how to import a new project into Git, make changes to it, and share changes with other developers. Git - gittutorial Documentation If you are instead primarily interested in using Git to fetch a project, for example, to test the latest version, you may prefer to start with the first two chapters of The Git User's Manual. First, note that you can get documentation for a command such as git log -- graph with: $ man git-log $ git help log With the latter, you can use the manual viewer of your choice; see git-help[1] for more information. https://git-scm.com/docs/gittutorial 4/12 2/7/24, 8:14 AM Git - gittutorial Documentation It is a good idea to introduce yourself to Git with your name and public email address before doing any operation. The easiest way to do so is: $ git config --global user.name "Your Name Comes Here" $ git config --global user.email you@yourdomain.example.com Importing a new project Assume you have a tarball project.tar.gz with your initial work. You can place it under Git revision control as follows. $ tar xzf project.tar.gz $ cd project $ git init Git will reply Initialized empty Git repository in .git/ You've now initialized the working directory—you may notice a new directory created, named .git. Next, tell Git to take a snapshot of the contents of all files under the current directory (note the .), with git add: $ git add . This snapshot is now stored in a temporary staging area which Git calls the "index". You can permanently store the contents of the index in the repository with git commit: $ git commit This will prompt you for a commit message. You've now stored the first version of your project in Git. Making changes Modify some files, then add their updated contents to the index: $ git add filel file2 file3 You are now ready to commit. You can see what is about to be committed using git diff with the --cached option: $ git diff -- cached (Without - -cached, git diff will show you any changes that you've made but not yet added to the index.) You can also get a brief summary of the situation with git status: $ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: filel modified: file2 modified: file3 If you need to make any further adjustments, do so now, and then add any newly modified content to the index. Finally, commit your changes with: https://git-scm.com/docs/gittutorial 5/12 2/7/24, 8:14 AM $ git commit This will again prompt you for a message describing the change, and then record a new version of the project. Alternatively, instead of running git add beforehand, you can use $ git commit -a which will automatically notice any modified (but not new) files, add them to the index, and commit, all in one step. A note on commit messages: Though not required, it's a good idea to begin the commit message with a single short (no more than 50 characters) line summarizing the change, followed by a blank line and then a more thorough description. The text up to the first blank line in a commit message is treated as the commit title, and that title is used throughout Git. For example, git-format-patch[1] turns a commit into email, and it uses the title on the Subject line and the rest of the commit in the body. Git tracks content not files Git - gittutorial Documentation Many revision control systems provide an add command that tells the system to start tracking changes to a new file. Git's add command does something simpler and more powerful: git add is used both for new and newly modified files, and in both cases it takes a snapshot of the given files and stages that content in the index, ready for inclusion in the next commit. Viewing project history At any point you can view the history of your changes using $ git log If you also want to see complete diffs at each step, use $ git log -p Often the overview of the change is useful to get a feel of each step $ git log -stat - summary Managing branches A single Git repository can maintain multiple branches of development. To create a new branch named experimental, use $ git branch experimental If you now run $ git branch you'll get a list of all existing branches: experimental * master https://git-scm.com/docs/gittutorial 6/12 2/7/24, 8:14 AM Git - gittutorial Documentation The experimental branch is the one you just created, and the master branch is a default branch that was created for you automatically. The asterisk marks the branch you are currently on; type $ git switch experimental to switch to the experimental branch. Now edit a file, commit the change, and switch back to the master branch: (edit file) $ git commit -a $ git switch master Check that the change you made is no longer visible, since it was made on the experimental branch and you're back on the master branch. You can make a different change on the master branch: (edit file) $ git commit -a at this point the two branches have diverged, with different changes made in each. To merge the changes made in experimental into master, run $ git merge experimental If the changes don't conflict, you're done. If there are conflicts, markers will be left in the problematic files showing the conflict; $ git diff will show this. Once you've edited the files to resolve the conflicts, $ git commit -a will commit the result of the merge. Finally, $ gitk will show a nice graphical representation of the resulting history. At this point you could delete the experimental branch with $ git branch -d experimental This command ensures that the changes in the experimental branch are already in the current branch. If you develop on a branch crazy-idea, then regret it, you can always delete the branch with $ git branch -D crazy-idea Branches are cheap and easy, so this is a good way to try something out. Using Git for collaboration Suppose that Alice has started a new project with a Git repository in /home/alice/project, and that Bob, who has a home directory on the same machine, wants to contribute. Bob begins with: https://git-scm.com/docs/gittutorial 7/12 2/7/24, 8:14 AM bob$ git clone /home/alice/project my repo Git - gittutorial Documentation This creates a new directory my repo containing a clone of Alice's repository. The clone is on an equal footing with the original project, possessing its own copy of the original project's history. Bob then makes some changes and commits them: (edit files) bob$ git commit -a (repeat as necessary) When he's ready, he tells Alice to pull changes from the repository at /home/bob/myrepo. She does this with: alice$ cd /home/alice/project alice$ git pull /home/bob/myrepo master This merges the changes from Bob's master branch into Alice's current branch. If Alice has made her own changes in the meantime, then she may need to manually fix any conflicts. The pull command thus performs two operations: it fetches changes from a remote branch, then merges them into the current branch. Note that in general, Alice would want her local changes committed before initiating this pull. If Bob's work conflicts with what Alice did since their histories forked, Alice will use her working tree and the index to resolve conflicts, and existing local changes will interfere with the conflict resolution process (Git will still perform the fetch but will refuse to merge — Alice will have to get rid of her local changes in some way and pull again when this happens). Alice can peek at what Bob did without merging first, using the fetch command; this allows Alice to inspect what Bob did, using a special symbol FETCH_HEAD, in order to determine if he has anything worth pulling, like this: alice$ git fetch /home/bob/myrepo master alice$ git log -p HEAD.. FETCH_HEAD This operation is safe even if Alice has uncommitted local changes. The range notation HEAD.. FETCH_HEAD means "show everything that is reachable from the FETCH_HEAD but exclude anything that is reachable from HEAD". Alice already knows everything that leads to her current state (HEAD), and reviews what Bob has in his state (FETCH_HEAD) that she has not seen with this command. If Alice wants to visualize what Bob did since their histories forked she can issue the following command: $ gitk HEAD.. FETCH_HEAD This uses the same two-dot range notation we saw earlier with git log. Alice may want to view what both of them did since they forked. She can use three-dot form instead of the two- dot form: $ gitk HEAD... FETCH_HEAD This means "show everything that is reachable from either one, but exclude anything that is reachable from both of them". Please note that these range notation can be used with both gitk and git log. After inspecting what Bob did, if there is nothing urgent, Alice may decide to continue working without pulling from Bob. If Bob's history does have something Alice would immediately need, Alice may choose to stash her https://git-scm.com/docs/gittutorial 8/12See Answer
  • Q3: Ch 8-Searching, Extracting, and Archiving Data Lab Exercises This lab must be performed on a Fedora virtual machine (or physical machine). Using grep, find, and regular expressions in Fedora (Objective 3.2) 1. Boot up your Fedora VM and log on to a regular user account. 2. Launch a virtual terminal and log in as a regular (non-root) user. 3. Type grep hostname /etc/profile get and print the regular expression hostname from /etc/profile 4. Take a screen shot of the results and paste them here: 5. Type man grep. Press space bar once. What will the -i option do? 6. Quit man. Press up arrow to recall the grep command from history. Insert -i right after grep like this: grep -i hostname /etc/profile 7. How many additional instances of hostname were found by ignoring case? 8. Type grep -d skip hostname /etc/* The -d skip option tells grep to skip directories. The * is a wildcard which means to search everything in the /etc directory. Just ignore any "permission denied" messages, since you are a regular (non-root) user. 9. Type cat /etc/passwd to display the /etc/passwd file. 10. Since there was too much to display at one time, up arrow & pipe the output to less like this: cat /etc/passwd | less 11. Use arrows to scroll up and down through the passwd file. Screen shot your regular user account: 12. Type q to terminate the cat display. Type clear to clear the screen. 13. Type grep open /etc/passwd Open is salmon colored. How many instances of open were found? 14. Type grep ^open /etc/passwd to display only those files with "open" at the beginning. Screen shot: 15. Type grep bash$ /etc/passwd. What do think the $ character does in this application? 16. To find your username or root, type grep -E "(Username[root)" /etc/passwd Enter your username instead of Username. The -E option indicates that you are using an extended regular expression. How many entries were found? 17. Now, you will search for information about files. wc shows line count, word count, and byte count. Type wc /etc/hosts. Now cat /etc/hosts. Were the results of the wc command accurate? 18. How many lines are in the /etc/passwd file? 19. While grep searches for info within a file, and wc provides info about a file, find locates files Type find /usr/share/doc/ -name COPYING 20. Another similar command is locate. Find files as follows: locate COPYING 21. Use the up arrow and append: find /usr/share/doc/ -name COPYING | wc. Note: the | pipe symbol is located on the \ key. In the same manner, pipe the output of the other command to wc Which command found more files named COPYING? 22. Logical operators: Type echo "Hello". Now type echo "Hello" && echo "2nd Hello"J. The && symbols are a logical and operator which tells the OS to also execute the next command. 23. Up arrow, change && to ||, execute. || is a logical or operator, so only the first command is executed. Redirection and Pipes (Objective 3.2) 1. Boot up your Fedora VM and log on to a regular user account. 2. Launch a virtual terminal and log in as a regular (non-root) user. 3. Type echo "Hello" and press Enter. By default, the output of echo was directed to your display. The display is known as Standard Output or STDOUT. 4 Redirect STDOUT to a file by typing echo "Hello" > new_file. What was displayed? 5. Type cat new_file to see where the echo output was redirected. > is the redirection operator. 6. Redirect output again by typing cat new_file > second_file…. Display the contents of second_file. 7. Type echo "I am redirected"> new_file. Now type cat new_file. Was the new data appended to the old data, or did it overwrite it? 8. Append to the output of the file: echo "I appended this" >> new_file. 9. Type cat new_file. > redirect operator for STDOUT >>append operator for STDOUT 10. So far you have just been redirecting STDOUT. Now you will redirect Standard Error (STDERR). 11. Type cat /etc/PASSWORDJ. Since there is no such file, your will get an error message. 12. By default, STDERR messages are directed to the display. 13. Now, redirect and append the error message: cat /etc/PASSWORD 2>> new_file. Note: The number 2 was used to distinguish the STDERR error message (2>>) from STDOUT (>>). 2> redirect operator STDERR 2>>append operator for STDERR 14. Take a look at how the file new_file looks now by typing cat new_file. The error message should now be appended at the end of new_file's contents. 15. Replace new_file's contents with the error message: Type cat /etc/PASSWORD 2> new_file. 16. Use the cat command to verify that the contents were replaced. 17. Remove the files used previously by typing rm -i *file. Type y when prompted. 18. Create 4 new files in your home dir by typing touch fileA.dat fileB.dat fileC.dat fileD.dat…. 19. Verify the presence of all four files by typing Is file?.dat.. 20. Pipe (shift \) the output to the sort command by typing Is file?.dat | sort.. 21. Now recall the command and reverse the sort order by appending it to Is file?.dat | sort -r 22. Display and save output with the tee command: Is file?.dat | sort -r | tee fileE.dat. 23. Verify by typing cat fileE.dat.. 24. To remove files using the xargs command, type Is file?.dat | xargs rm.. 25. Type Is to verify that all of the file?.dat files were deleted. Compression and Archiving (Objective 3.1) 1. Boot up your Fedora VM and log on to a regular user account. 2. Launch virtual terminal 3 and log in as a regular (non-root) user. 3. Type touch file_a.log file_b.log file_c.log file_d.log and verify their presence. 4. Compress these files by typing gzip file*.log. 5. Is the files to verify that they were all compressed using gzip and renamed. 6. Use gzip to uncompress the files by typing gunzip file*.gz and is file* to verify. 7. Using history, recall the command and compress the files using by typing bzip2 file*.log. 8. Verify their presence, then uncompress them by typing bunzip2 file*.bz2J. 9. To create a single file from a group of files, type tar cvf file.tar file*.log. 10. What is the name of the new file? What color is it? This is the color of archived files 11. "c" creates the tar file; "v" = verbose (tell you what is going on); "f" comes before the filename. 12. Now create and compress an archive file using gzip by typing tar zcvf file.tar.gz file*.log. 13. A compressed tar file is called a tarball. What is the name of your tarball? 14. Create a new directory by typing mkdir unpack_tarë. This is where you will unpack the tarball. 15. Move the gzip tarball to the new directory by typing mv file.tar.gz unpack_tar/.. 16. What color is the new directory? 17. Notice that you used a relative directory reference when you moved the tarball. 18. Change directory into the new directory. What command did you use? 19. List the contents of the unpack_tar directory to verify that the tarball is present. 20. Uncompress and unpack the tarball by typing tar zxvf file.tar.gz. 21. Refer to table 8.7. What does the x (instead of c) do? 22. List the contents of the directory. Do you see the 4 .log files, the tarball file, or all of the above? 23. Return to your home directory by typing cd. 24. Remove the directory and its contents by typing rm -ir unpack_tar. Type y to each prompt. 25. List your home directory to verify that it was successful. 26. Remove the files created for compression and archiving by typing rm -i file*.*, y for each.See Answer
  • Q4: Programming Assignment 1: Shell CSE3320 Description In this assignment you will write your own shell program, Mav shell (msh), similar to bourne shell (bash), c-shell (csh), or korn shell (ksh). It will accept commands, fork a child process and execute those commands. The shell, like csh or bash, will run and accept commands until the user exits the shell. Your file must be named msh.c Functional Requirements Requirement 1: Your program will print out a prompt of msh> when it is ready to accept input. It must read a line of input and, if the command given is a supported shell command, it shall execute the command and display the output of the command. ●● Code - tbakker@omega:~/msh_solution - ssh tbakker@omega.uta.edu - 100x24 [[tbakker@omega msh_solution]$ ./msh [msh> ls hello hello.c loop loop.c Makefile msh msh.c msh.o msh> Requirement 2: If the command is not supported your shell shall print the invalid command followed by ": Command not found.” ●●● [[tbakker@omega msh_solution]$ ./msh [msh> ls hello hello.c loop loop.c Makefile msh msh.c msh.o [msh> lss lss: Command not found. msh> Code - tbakker@omega:~/msh_solution - ssh tbakker@omega.uta.edu - 100x24 Requirement 3: [This requirement is removed.] Requirement 4: After each command completes, your program shall print the msh> prompt and accept another line of input. Requirement 5: Your shell will exit with status zero if the command is “quit” or “exit”. Requirement 6: If the user types a blank line, your shell will, quietly and with no other output, print another prompt and accept a new line of input. Code - tbakker@omega:~/msh_solution - ssh tbakker@omega.uta.edu - 100×24 [[tbakker@omega msh_solution]$ ./msh [msh> ls hello hello.c loop loop.c Makefile msh msh.c msh.o [msh> lss lss: Command not found. [msh> ls -ijh ls: invalid option - j Try `ls --help' for more information. Imsh> msh> [msh> [msh> msh> ] ] 1 Requirement 7: Your version of Mav shell shall support up to 10 command line parameters in addition to the command. Requirement 8: Your shell shall support and execute any command entered. Any command in /bin, /usr/bin/, /usr/local/bin/ and the current working directory is to be considered valid for testing. Your shell shall search the following PATH at minimum: 1. Current working directory, 2. /usr/local/bin 3. /usr/bin 4. /bin Parameters may also be combined. For example, ps may be executed as: ps -aef or ps -a -e -f Requirement 9: Mav shell shall be implemented using fork (), wait () and one of the exec family of functions. Your Mav shell shall not use system (). Use of system () will result in a grade of 0. Requirement 10: Your shell shall support the cd command to change directories. Your shell must handle cd .. Code - tbakker@omega:~/msh_solution - ssh tbakker@omega.uta.edu - 100×24 [[tbakker@omega msh_solution] $ msh [msh> ls hello hello.c loop loop.c Makefile msh msh.c msh.o [msh> mkdir foo [msh> cd foo [msh> ls [msh> cd .. [msh> ls foo hello hello.c loop loop.c Makefile msh msh.c msh.o msh> Requirement 11: Your shell shall support the pidhistory command to list the PIDs of the last 15 processes spawned by your shell. If there have been less than 15 processes spawned then it shall print only those process PIDs Requirement 12: Your shell shall support the history command which will list the last 15 commands entered by the user. Typing !n, where n is a number between 0 and 14 will result in your shell re-running the nth command. If the nth command does not exist then your shell will state “Command not in history.”. The output shall be a list of numbers 0 through n-1 and their commands, each on a separate line, single spaced. hello hello.c [msh> mkdir foo [msh> cd foo [msh> ls [msh> cd .. [msh> ls Code - tbakker@omega:~/msh_solution - ssh tbakker@omega.uta.edu 100x24 loop loop.c Makefile msh msh.c msh.o foo hello hello.c loop loop.c Makefile msh msh.c msh.o [msh> showpids 0: 7898 1: 7907 2: 7923 3: 7937 [msh> history 0: ls 1: mkdir foo 2: cd foo 3: ls 4: cd.. 5: ls 6: showpids 7: history [msh> !5 foo hello hello.c loop loop.c Makefile msh msh.c msh.o msh> If there are less than 15 commands in the history only list the commands the user has entered up to that point. Requirement 13: [This requirement is removed.] Requirement 14: Tabs or spaces shall be used to indent the code. Your code must use one or the other. All indentation must be consistent. Requirement 15: No line of code shall exceed 100 characters. Requirement 16: Each source code file shall have the following header filled out: /* Name: Student Name 10000001 ID: */ Rec ment 17: All code must be well commented. This means descriptive comments that tell the intent of the code, not just what the code is executing. The following are poor comments. // Set working_str equal to strdup return char *working_str = strdup( cmd_str); // Set working_root equal to working_str char *working_root = working_str; The following explains the intent: // Save a copy of the command line since strsep // will end up moving the pointer head char *working_str = strdup( cmd_str ); // we are going to move the working_str pointer so // keep track of its original value so we can deallocate // the correct amount at the end char *working_root = working_str; When in doubt over comment your code. Requirement 18: Keep your curly brace placement consistent. If you place curly braces on a new line, always place curly braces on a new end. Don't mix end line brace placement with new line brace placement.See Answer
  • Q5:Creating a Text File with the vim Text Editor (Objective 3.3) 5. Press the i key to go into Insert mode. What word appears at the bottom indicating Insert mode? 12. Colon (:) key takes you from Command mode into Last Line mode. Press: What appears at bottom? 14. View the message in the bottom line. How many lines were written? How many bytes were written? 16. List the contents of your home directory (Is). Is MyFile.txt present?/nEditing a Text File with the nano Text Editor (Objective 3.3) 8. What message did you receive? 10. What command did you use to exit the nano editor? 12. Use the cat command to display the contents of your file. Are the periods present? What command is this? What does the -i option do? 15. Type Is and press Enter. Is MyFile.txt present?/nEditing a File with Both vim and nano (Objective 3.3) 7. List the files in your home directory to verify that the new file is present. What command did you use? 8. Clear the screen, then display the contents of the file. What command did you use? 9. Open the questions.txt file in the vim text editor. What command did you enter to do so? 10. Go into "insert" mode. How did you do so? 11. Exit insert mode and go back into command mode. How did you do so? 13. What was displayed as a result? 14. Open and review the file one more time using nano. What command did you use? 7 LSee Answer
  • Q6: Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. Example 1 (a2p2-w24-ex1). This example gives sample output of running the server and one client in this order (from two different terminal windows on the same lab workstation). The input file a2p2-w24-exl.dat contains the following lines. # Transactions file for one client # # a2p2 -s a2p2 -c a2p2-w24-ex1.dat 1 gtime 1 put { 1 put { videol.mp4: line 1 videol.mp4: line 2 videol.mp4: line 3 videol.mp4 img1.jpg: line 1 img1.jpg: line 2 1 put indexl.html { img1.jpg indexl.html: line 1 1 put docl.tex { 1 delay 2500 1 gtime 1 quit 1 gtime 1 get videol.mp4 1 get img1.jpg 1 get 1 delete img2.jpg| 1 delay 3000 Sample output (edited for clarity): • Client 1 output: do client (idNumber= 1, inputFile= a2p2-w24-exl.dat) " index2.html Transmitted (src= client:1) GTIME Received (src= server) (TIME: [0]:/ [1] : / Received Transmitted (src= client : 1) (PUT) (video1.mp4) [0]: ' videol.mp4: line 1' [1]: ' videol.mp4: line 2' [2]: videol.mp4: line 3' Received (src= server) (OK) 5.07) Transmitted (src= client: 1) (PUT) (img1.jpg) img1.jpg: line 1' img1.jpg: line 2' (src= server) (OK) Transmitted (src= client: 1) (PUT) (indexl.html) 1 Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. ● [0]: Received (src= server) (OK) indexl.html: line 1' Transmitted (src= client : 1) (PUT) (docl.tex) Received (src= server) (OK) *** Entering a delay period of 2500 msec *** Exiting delay period Transmitted (src= client:1) GTIME Received (src= server) (TIME: Transmitted (src= client: 1) (GET: video1.mp4) Received (src= server) (OK) (videol.mp4) [0]:/ videol.mp4: line 1' [1] : / videol.mp4: line 2' [2]:/ videol.mp4: line 3' Transmitted (src= client: 1) (GET: img1.jpg) Received (src= server) (OK) (img1.jpg) [0]:/ img1.jpg: line 1' [1] : / img1.jpg: line 2' Transmitted (src= client: 1) (GET: index2.html) Received (src= server) (ERROR: object not found) Transmitted (src= client : 1) (DELETE: img2.jpg) Received (src= server) (ERROR: object does not exist) 7.78) *** Entering a delay period of 3000 msec *** Exiting delay period Transmitted (src= client: 1) GTIME Received (src= server) (TIME: 11.00) Server's output (here, the server is terminated manually): a2p2: do_server Received (src= client:1) GTIME Transmitted (src= server) (TIME: [1] : [2]: ' Received (src= client: 1) (PUT) (video1.mp4) [0]:/ videol.mp4: line 1' videol.mp4: line 2′ videol.mp4: line 3' Transmitted (src= server) (OK) 5.07) Received (src= client : 1) (PUT) (img1.jpg) [0]: img1.jpg: line 1' [1]: / img1.jpg: line 2' Transmitted (src= server) (OK) indexl.html: line 1' Transmitted (src= server) (OK) Received (src= client : 1) (PUT) (indexl.html) [0]:/ Received (src= client:1) GTIME Received (src= client : 1) (PUT) (docl.tex) Transmitted (src= server) (OK) 2 Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. Transmitted (src= server) (TIME: Received (src= client : 1) (GET: videol.mp4) Transmitted (src= server) (OK) (video1.mp4) videol.mp4: line 1' videol.mp4: line 2' videol.mp4: line 3' [0]: [1] : [2]: " " 7.78) " Received (src= client : 1) (GET: img1.jpg) Transmitted (src= server) (OK) (img1.jpg) [0]:/ img1.jpg: line 1' [1]: ' img1.jpg: line 2' Received (src= client : 1) (GET: index2.html) Transmitted (src= server) (ERROR: object not found) Received (src= client : 1) (DELETE: img2.jpg) Transmitted (src= server) (ERROR: object does not exist) Received (src= client:1) GTIME Transmitted (src= server) (TIME: 11.00) Important: Don't forget to cleanup the running processes by using the command pkill -u $USER pattern where pattern can be a string that appears in the processes you would like to terminate, e.g., pkill -u $USER a2p2. 3/n Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. CMPUT 379 - Assignment #2 (7%) FIFO-based Client-Server Programming Objectives This programming assignment is intended to give you experience with developing system programs that utilize some of the following UNIX features: signals, threads, timers, pipes, FIFOs, and I/O multiplexing for nonblocking I/O. Part 1 as Program Specifications. This part asks for developing a C/C++ program that can be invoked % a2p1 nLine inputFile delay. When run, the program performs a number of iterations. In each iteration it reads from the input File the next nLine text lines and displays them on the screen. It then immediately enters a delay period for the specified number of delay milliseconds. During the delay period, the program stays responsive to input from the keyboard, as detailed below. After the delay period ends, the program proceeds to the next iteration where it reads and displays the next group of nLine text lines, and then enters another delay period. Subsequent iterations follow the same pattern. More details are given below. 1. At the beginning (and end) of each delay period, the program displays a message to inform the user of its entering (respectively, leaving) a delay period. 2. During a delay period, the program loops on prompting the user to enter a command, and executes the entered command. So, dependin the length of the delay period, the user can enter multiple commands for the program to execute. 3. Each user command is either quit, or some other string that the program tries to execute as a shell command line. The quit command causes the program to terminate and exit to the shell. Other strings are processed by passing them to the shell using the standard I/O library function popen (See, e.g., Section 15.3 of the [APUE 3/E]). 4. Other than forking a child process implied by calling popen (), the program should not fork a child process to achieve the desired behaviour. The process, however, may have threads and/or use timers. Any timer used must work at millisecond-level granularity. ■ Examples. Example output will be posted on eClass. Your output should follow closely the output of the example. ■ Deliverables. Files a2p1-AI-page1.png and a2p1-AI-page2.png (posted online) con- tains code generated by some AI program to handle the above requirements (with no attempt for the output to look like the above example). 1. Answer the following questions in your report. (a) What is the purpose of using SA_RESTART in the code? 1 Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. (b) Does the code satisfy the above requirements? Ignore the differences between the code's output and the given example. If no, identify at least two unsatisfied require- ments. 2. Submit a working C/C++ a2p1 program. Part 2 ■ Program Specifications. You are asked to write a C/C++ program, called a2p2, that can be in- voked either as a server using %a2p2 -s or as a client using %a2p2 -c inputFile Each entity (server or client) has a unique identification number (idNumber). The server's idNumber : 0, and the client's idNumber 1. inputFile contains work that needs to be done by the client. In this part only one client communicates with the server. = Data transfers between the client and the server use FIFOs. A FIFO named fifo-0-1 carries data from the server to the client. Similarly, fifo-1-0 carries data in the reverse direction. = ● Note: For simplicity, FIFOs may be created in the work directory using the shell command mk fifo prior to starting your program development. Context. The client-server system in this part (continued in Part 3) is intended to model a simple file sharing (peer-to-peer) system that allows a community of users to share files contributed by members. In this model system, each user (a client program) uploads files of different objects (e.g., HTML files, images, sound clips, video clips, etc.) to be stored and distributed with the help of a server program. Each object has a unique name and an owner (the client program that succeeds in storing the file at the server). Input File Format The input file has the following format. • A line starting with '#' is a comment line (skipped). Empty lines are skipped. For simplic- ity, an empty line has a single '\n' character. Else, a line that starts with a single digit (idNumber matches one of the following cases: = Note: In this part, we have only one client having idNumber 1, but the descrip- tion below is more general and applies to both this part and Part 3. 1) has format and meaning that - "idNumber (put get|delete) objectName": only the client with the spec- ified idNumber sends to the server the specified get, put, or delete request of the named object. An object name has at most MAXWORD 32 characters. 2 = "idNumber gtime": only the client with the specified idNumber sends to the server a get time request. "idNumber delay x": only the client with the specified idNumber delays read- ing and processing subsequent lines of the input file for an interval of x milliseconds. "idNumber quit": only the client with the specified idNumber should terminate normally. Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. Each "idNumber put objectName" command line is followed by a block that specifies the object contents. Each such a block begins (ends) with a line that starts with the '{' character (respectively, the ' }' character); no other information appears on the line. Inside a block, at most 3 content lines (each has at most 80 characters) may be given. # A fragment of a transactions file # filel is empty 1 put filel { # file2 contains 3 text lines 1 put file2 file2: line 1 file2: line 2 file2: line 3 The server keeps an object table that can store up to NOBJECT= 16 objects (the input File has at most this number of objects). Each object has a name and its content lines. Initially, the object table is empty. Subsequently, as the client executes put (or delete) commands the server updates the table by adding (respectively, deleting) objects form the table. The server replies to a "get objectName" request by sending the stored information to the client (if the object exists in the table). Packet Types Communication in the system uses messages stored in formatted packets. Each packet has a type, and carries a (possibly empty) message. The program should support the following packet types. • PUT, GET, and DELETE: For a specified object name, a client executes a get, put, or delete command by sending a packet of the corresponding type, where the message specifies the object name. An error condition arises at the server when the client's request asks for doing one of the following: – getting a non-existing object, - putting an object that already exists, or - deleting an object owned by another client (this case arises only in Part 3 where multiple clients may exist). • GTIME and TIME: A client processes a get server's time command (gtime) by sending a GTIME packet (with an empty message). The server replies by sending a TIME packet where the message contains the time in seconds (a real number) since the server started operation. • OK and ERROR: The server replies with an OK packet if the received request is processed successfully. Else, the server replies with an ERROR packet with a suitable error description in the message part. 3 Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. The Client Loop The client performs a number of iterations. In each iteration, it reads the next text line from the input file, and executes the specified command only if the client's idNumber matches the one specified on the line. Otherwise, the client ignores the line. The execution of a command depends on its type, as follows: • Commands in the set {put, get, delete, gtime} are executed by sending a packet to the server to do the corresponding operation. The packet contains an object name in the message part, and the object's content lines (for a put command), as applicable. The client then waits for a server's response. • The delay command is for the client to suspend its operation for the specified number of milliseconds (i.e., suspending reading and processing of subsequent input lines, and trans- mitting packets). Note: For simplicity, (and unlike Part 1) here the client is not required to stay responsive to input from the keyboard, or do any other activity, during a delay interval. • The quit command causes the client to terminate normally (and exit to the shell). To monitor progress of the client program, the program is required to print information on • All transmitted and received packets • Received object content (in reply to a GET packet) • when a client enters (and exits) a delay period The Server Loop The server loops on receiving and replying to the client's incoming requests. To monitor progress, the server is required to print information on All transmitted and received packets • Received object content (in a PUT packet) ■ Examples. Example output will be posted on eClass. Your output should follow closely the output of the example. ■ Deliverables. Submit a working C/C++ a2p2 program. Part 3 = In this part you are asked to write a C/C++ program a2p3 that extends program a2p2 so that the server can handle at most NCLIENT 3 clients. Similar to Part 2, the program can be invoked as a server using %a2p2 -S or as a client using %a2p2 -c idNumber inputFile Here, each client idNumber is in the range [1, NCLIENT]. Data transfers between each client and the server use FIFOs (created prior to running the pro- gram): fifo-0-x carries data from the server to client x, and fifo-x-0 carries data in the reverse direction. Input file format and packet types are as described in Part 2. 4 Copyright Notice: Copyright by CMPUT 379, U. of Alberta, course instructor (E. Elmallah). All rights reserved. Do not post any part on a publicly-available Web site. The Server Loop When the program works as a server, it uses I/O multiplexing (e.g., select () or poll ()) to handle I/O from the keyboard and the FIFOs in a nonblocking manner. Each iteration of the main loop performs the following steps: 1. Poll the keyboard for a user command. The user can issue one of the following commands. list: The program writes the stored information about the objects (the idNumber of the owning client, the object name, and the content lines). quit: The program exits normally. ● 2. Poll the incoming FIFOs from the clients. The server handles each incoming packet as described above. To monitor progress of the server, print the information specified in Part 2. Examples. Example output will be posted on eClass. Your output should follow closely the output of the example. ■ Deliverables. Submit a working C/C++ a2p3 program. More Details (all parts) 1. This is an individual assignment. Do not work in groups. 2. Only standard include files and libraries provided when you compile the program using gcc or g++ should be used. 3. Although many details about this assignment are given in this description, there are many other design decisions that are left for you to make. In such cases, you should make rea- sonable design decisions that do not contradict what we have said and do not significantly change the purpose of the assignment. Document such design decisions in your source code, and discuss them in your report. Of course, you may ask questions about this assignment (e.g., in the Discussion Forum) and we may choose to provide more information or provide some clarification. However, the basic requirements of this assignment will not change. 4. When developing and testing your program, make sure you clean up all processes before you logout of a workstation. Marks will be deducted for processes left on workstations. 5. Excused Absences (EAs) for this assignment. Work on this assignment is allocated at least 15 days, and the assignment has three parts. I expect that you start as early as possible on the assignment, and complete and upload a solution to a new part every 5 days (on the average). You can modify your submitted solution archive many times before the due date. If you must miss part (or all) of the assignment then contact me as soon as possible. I typically ask for suitable documentation to substantiate an EA request (EA is a privilege not a right). If granted (and depending on the circumstances), I'll decide on using one of the following two ways. 5See Answer
  • Q7: Ch 14- Setting Ownership and Permission Lab Exercises This lab must be performed on an MX Linux virtual (or physical) machine. Exploring File Ownership & Groups (Objective 5.4) 1. Boot up your MX Linux VM, launch virtual terminal 2, and log in as a regular user. 2. Type pwd. What is your present working directory? 3. Create a blank, empty file in your present working directory by typing touch FileA.txt. 4. Type Is -. The -I is a lowercase L (not the numeral one). Look at the file type character (first char). 5. According to Table 14.1, what file type does d indicate? What color is it (last field)? 6. Ref p. 272-273. Clear the screen and type Is - FileA.txt. Record the following about this file: 1) File type code: 2) 3 character Owner (User) permissions string (see Figure 14.2): 3) 3 character Group permissions string: 4) 3 character Other (World) permissions string: 5) File owner's username: 6) File's group name: 7) File size in bytes: 8) Time stamp: 9) Filename: 7. Using whoami, determine and record your username: 8. Record your present working directory: 9. Log in as root by typing su -J. Don't forget the dash (-) after su! Enter the root password. 10. Type pwd and record it here: 11. Now use the cd command to move to the directory you recorded above. Type pwd to verify. 12. What command did you use? 13. Type Is - FileA.txt. 14. Try to change the ownership of the file. Type chown root FileA.txtJJ. 15. Remember that no news is good news. Did you get an error message? 16. Recall the Is - FileA.txt command. What is the file owner's username now? 17. Change the file's ownership back to the original owner. What command did you use? 18. Verify success by recalling the Is - FileA.txt command. 19. Log out of the root account by typing exit. 20. Now try to change file ownership using a standard user account: chown root FileA.txt. 21. What message did you receive? 22. Log back into the root account using su J. 23. Verify / move to the regular user's home dir you recorded above. Recall the Is - FileA.txt command 24. Create a new user group by typing groupadd NoPrivs. 25. Verify the new group by typing tail -3 /etc/group. 26. Change FileA.txt's group membership by typing chgrp NoPrivs FileA.txt. 27. Verify the change via the Is -I FileA.txt command. Note: The chgrp command changed the file's group, rather than add to its groups. 28. Clear the screen and type chown :root FileA.txt. Don't leave off the colon! 29 Recall Is -l FileA.txt. What group is the file in now? 30. Now, change both owner and group via a single command:chown root:NoPrivs FileA.txt. Note: The new owner comes before the colon and the new group comes after the colon. 31. Recall Is -I FileA.txt. Compare it to the previous listing. Did both the owner and group change? 32. Write and execute a command which changes the owner and group back to the original username. 33. What command did you use? 34. Verify the changes by listing the file in the long format 35. Make the regular user you logged into originally a member of the NoPrivs group: usermod -a -G NoPrivs username.. (Use your regular user's name instead of username) 36. Type groups username. Is your regular user now a member of the NoPrivs group? 37. Log out of the root account by typing exitJ. 38. As a standard user, try chgrp NoPrivs FileA.txt.. Was this successful? Note: This account's addition to the NoPrivs group will not take effect until they log in again. 39. Type exit to log out of the regular user account, then log back in on TTY2. 40. Use up arrow to recall the chgrp command, then list the file. Was it successful after logging back in? Notice that the system permits standard users to change the group on a file if they own the file AND are a member of that group. 41. Remove the file by typing rm -i FileA.txt. Type y when prompted. 42. What message do you now receive when trying to list the file? 43. Clear the screen and try to delete the group as a regular user: groupdel NoPrivs. Message? 44. Login as root using su - and try to delete the group using the same command. 45. Verify that the group has been removed: less /etc/group grep NoPrivs. 46. Type exit and press Enter to log out of the root account. Exploring File Permissions (Objective 5.4) 1. If necessary, boot up your MX Linux VM, launch virtual terminal 2, and log in as a regular user. 2. Type touch FileB.txt to create a blank empty file named FileB.txt. 3. List the new file in the long format, as you did in the first part of this lab. What command did you use? 4. Type chmod u+x FileB.txt. Translation: add (+) execute (x) permission to User (u) Note: "User" is the same as "owner" 5. Type Is - FileB.txt. Ref Figure 14.2. What is the owner's 3-character permission string now? 6. Change a Group permission: chmod g-r FileB.txt. Remove (-) read (r) permission from the group 7. Recall the list command. What is the group's 3-character permission string now? 8. Write a command which adds (+) write (w) permission to others (o) (everyone besides Owner & Group) 9. What command did you use? 10. Recall the list command. Ref Fig 14.2. What is World (others)'s 3-character permission string now? 11. To change multiple permissions simultaneously, type chmod ug=rw FileB.txtJ Translation: assign (=) read (r) & write (w) permissions only to user (u) & group (g) 12. Recall the list command. What are the user's and group's 3-character permission strings now? 13. In this step, you will change one permission for all three strings. Type chmod a+x FileB.txtJ Translation: add (+) execute (x) permission to all (a) 14. List the file. Was execute (x) permission added to all 3 groups? In the next step, you will change file permissions using the octal numbering system, which has only 8 symbols-0, 1, 2, 3, 4, 5, 6, and 7. (Our decimal numbering system has ten-0 through 9) From L to R, each 3 character set of permissions contains a 4's column, a 2's column, & a 1's column If read permission is set, there is a 1 in the 4's column. write is in the 2's column, execute in the 1's. If no permissions are enabled, the octal value = 0. If execute only is set, the value = 1. write only = 2, w + x = 3, read only = 4, r + x = 5, r + w = 6, r+w+x=7 Read (4) Write (2) Execute (1) See Table 14.2 15. Type chmod 000 FileB.txt Be sure to use zeroes, and not the letter o. 16. List the file. What are the permissions of all 3 groups? 17. Now type chmod 644 FileB.txt and pressing Enter. Translation: assign read + write permissions to user, read to group, and read to others 18. List the file. What are the permissions of all 3 groups? 19. Remove the file by typing rm -i FileB.txt. Type n when prompted. 20. Recall the command, remove the -i, and execute the command. 21. What was the purpose of the -i option in the rm command (use man rm if you like)?See Answer
  • Q8: CYB 230 Discussion: Introduction Operating System Security Directions Initial Post An operating system is a software package that manages the hardware, software, and other resources within a computer. The primary responsibility of the operating system is to control the communication between the devices and provide a way for the user to interface with the hardware. In your initial post, briefly introduce yourself. Then address the following questions: ● In your experience or opinion, what are some issues that exist with operating systems and hardware? Do they relate to common physical computer components, devices, and peripherals? Do they relate to common network equipment (hubs, routers, switches, and Undergraduate Discussion Rubric Overview Your active participation in the discussions is essential to your overall success this term. Discussion questions will help you make meaningful connections between the course content and the larger concepts of the course. These discussions give you a chance to express your own thoughts, ask questions, and gain insight from your peers and instructor. Directions For each discussion, you must create one initial post and follow up with at least two response posts. For your initial post, do the following: Write a post of 1 to 2 paragraphs. ● ● Consider content from other parts of the course where appropriate. Use proper citation methods for your discipline when referencing scholarly or popular sources. Criteria Comprehension Timeliness Engagement Discussion Rubric Proficient Exemplary Develops an initial post with an organized, clear point of view or idea using rich and significant detail (100%) N/A Provides relevant and meaningful response posts with clarifying explanation and detail (100%) Develops an initial post with a point of view or idea using adequate organization and detail (85%) Needs Improvement Develops an initial post with a point of view or idea but with some gaps in organization and detail (55%) Submits initial post on time | Submits initial post one day (100%) late (55%) Provides relevant response posts with some explanation and detail (85%) Provides somewhat relevant response posts with some explanation and detail (55%) Not Evident Does not develop an initial post with an organized point of view or idea (0%) Submits initial post two or more days late (0%) Provides response posts that are generic with little explanation or detail (0%) Criteria Writing (Mechanics) Exemplary Writes posts that are easily understood, clear, and concise using proper citation methods where applicable with no errors in citations (100%) Proficient Writes posts that are easily understood using proper citation methods where applicable with few errors in citations (85%) Needs Improvement Writes posts that are understandable using proper citation methods where applicable with a number of errors in citations (55%) Not Evident Writes posts that others are not able to understand and does not use proper citation methods where applicable (0%) TotalSee Answer
  • Q9: Linux Server Setup and Configuration This project milestone is a practical journey into the world of Linux, aiming to give you hands-on experience in setting up and configuring a Linux server. You'll dive into the essentials of Linux server management, including installation, networking, security, and user management. By the end of this project, you'll have a solid foundation in managing a Linux environment, crucial for any aspiring IT professional. Objective Your mission is to successfully set up and configure a Linux server, focusing on key areas such as installation, networking, security, and user management. This real-world scenario will prepare you for challenges you might face in the IT field, enhancing your problem-solving and server management skills. Key Tasks 1. Linux Distribution Installation: 。 You are encouraged to install a Linux distribution (e.g., Ubuntu or CentOS) either on a virtual machine or directly on bare metal. For ease of management and convenience, using virtual machines is recommended. • Document the installation process, noting any specific settings or choices made. 2. Network Configuration and SSH Security: • Set up the server's network configurations for proper connectivity. 。 Secure SSH access by implementing best practices, such as changing default ports and using key-based authentication. 3. User Account and Permission Management: 。 Create and manage user accounts, assign them to appropriate groups, and manage their access permissions. 4. Basic Service Installation and Configuration (LAMP Stack): o Install and configure the LAMP stack components: Apache or Nginx, MySQL, and PHP. This will serve as the backbone for hosting applications on your server. 5. Basic Security Measures Implementation: 。 Enhance your server's security by setting up firewalls and configuring fail2ban to protect against unauthorized access. Key Questions for Milestone 1: Linux Server Setup and Configuration Linux Distribution Installation 1. Which Linux distribution did you choose, and why? 2. How did you prepare the installation media for your chosen distribution? 3. Describe any challenges you faced during the installation process and how you overcame them. Network Configuration and SSH Security 4. How did you configure the network settings for your Linux server? 5. What steps did you take to secure SSH access on your server? 6. Can you explain the importance of changing the default SSH port and using key-based authentication? User Account and Permission Management 7. How do you create and manage user accounts in Linux? 8. Describe how you assign file permissions and what each permission means. 9. What is the significance of user groups in Linux, and how did you manage them? Basic Service Installation and Configuration (LAMP Stack) 10. How did you install and configure the Apache or Nginx web server? 11. Describe the process of installing and securing MySQL on your Linux server. 12. How did you install PHP, and what configurations did you find necessary for your setup? Implementation of Basic Security Measures 13. What firewall solution did you implement, and how did you configure it? 14. How does fail2ban enhance server security, and how did you configure it for your server? 15. Describe any additional security measures you took and their importance in maintaining server security. Learning Outcomes • Linux Installation and Configuration: Acquire a deep understanding of the Linux installation process and how to configure a new system. • Linux Server Environment Management: Develop practical skills in networking, security, user management, and service configuration within a Linux environment. Deliverables 1. Project Report: 。 A comprehensive report detailing your installation and configuration process, including challenges faced and their resolutions. The report should be written clearly and concisely, making your project repeatable by readers. This will serve as a valuable resource for your peers, who may use it for comparative analysis or as a guide in their projects. 2. Server Demonstration: 。 A live demonstration of your configured server, showing the operational LAMP stack, user management setups, and implemented security measures. 3. Presentation: 。 Prepare a 20-minute presentation with slides to introduce the concepts you've worked with, the processes you've followed, and the outcomes of your project. This presentation is your chance to share your journey and insights with your classmates. Evaluation Criteria • Installation and Configuration Accuracy: How well you've followed the project instructions and achieved a fully functioning Linux server setup. • Understanding and Application: Your grasp of Linux server management principles as demonstrated through your project work and presentation. • Documentation Quality: The clarity, thoroughness, and organization of your project report, making your project understandable and repeatable by others. • Presentation Skills: Your ability to effectively communicate your project process, findings, and the knowledge you've gained. This project is not just about completing tasks; it's about immersing yourself in the Linux environment and gaining skills that will serve you well in your IT career. We're excited to see what you'll accomplish!/n3. Presentation: • Prepare a 20-minute presentation with slides to introduce the concepts you've worked with, the processes you've followed, and the outcomes of your project. This presentation is your chance to share your journey and insights with your classmates.See Answer
  • Q10:Problem 1: A simple segmentation memory management system uses 16-bit virtual address and a maximum segment size of 8K bytes. The segment table for the currently running process has the following valid entries (all numbers in binary): Segment number 000 001 010 011 Segment Length 0000100000000 1000000000000 0000100000000 0000000011110 Base Address 0100000000000000 1000000000000000 1100000000000000 1110000000000000 What will be the physical addresses generated for the following virtual addresses? All addresses are in binary. If you think that a virtual address will generate a memory fault, just mention this fact for the corresponding virtual address. (a) 0000000000010100 (b) 0111110000000011 (c) 1110001111100001See Answer
  • Q11: Please complete the following: I will provide some test code as a .c file and a .h file. This should be in the Onedrive project directory. Please copy the contents of these files into your project, but keep them in their own .h and .c files. Your main() should call these. You are writing a simple memory manager. When initialized, it will allocate a single large block of memory (via mmap()(preferably, if on Unix) or otherwise malloc()) and then manage that memory, responding to requests to allocate and free blocks of memory as outlined below. Your code provides the following functions which are prototyped in the .h file I provide: • ⚫ void* memoryInitialize(memory Structure*, fscAllocation Method, size_t totalSize) Initializes the system by allocating size bytes of memory. Returns the base of the allocated memory (the address that the malloc returned) unless the malloc fails, in which case it returns 0. The allocation method describes what allocation heuristic to use. In our assignment, you can assume that this will ask to do first fit, where you split the memory and return the first part (adding the second part to the free list). The free list is kept in order. • void memoryCleanup(memoryStructure*) : indicates that I'm done for now, so you can free the block of memory allocated in memoryInitialize() and clear your internal state. • ⚫ void* fscMalloc(memoryStructure*, size_t blockSize): Cuts off an unused block of memory from the block allocated by memoryInitialize() and returns a starting address to the caller. If the block cannot be allocated, returns 0. Uses the first-fit algorithm • void fscFree(memoryStructure*, void* address) : Returns the memory pointed to by address to the internal free memory list kept by your system. Some important points: • You may only allocate memory once, and the allocated memory mustbe of size totalSize or of size totalSize + sizeof(<one of the header types>). No other allocations (mmap or malloc) are allowed and no other size allocations are allowed. • The memoryStructure is a piece of memory where you can store stuff (for example head, the head of the free list). • You must maintain your free list as a linked list, using the method in Chapter 17. • Each allocated (returned by fscMalloc()) block will have a header before the returned address that contains the size and a magic number (see figure 17.2 of your book). Magic numbers should be generated/used similar to the method we covered in our C language Linked List. You should shave off exactly the size of the header and return the beginning of the [formerly free] block the size of the bloc. I have also defined the header for you, similar to that on page 5 of chapter 17 in your book. • Note that the base (returned by memoryInitialize()) is not the first address returned by fscMalloc() since there's a header - the first address is base + sizeof(fsc_alloc_header_t)./nSee Answer
  • Q12:Problem 2: In a paging system, the CPU generates 22-bit logical address. The most significant 10 bits are used to identify the page number. Assume that memory is byte-addressable. (a) What is the maximum size (in bytes) of the (logical/ virtual) address space for a process supported by the CPU? (b) What will be the page size (in bytes)? (c) What is the maximum number of entries in a process page table? An entry in the page table indicates the mapping between the page number and the frame number.See Answer
  • Q13:Problem 1: A 2-MByte block of memory is allocated using the Buddy system. The process requests for memory blocks and the release for the blocks are made in the following order. Show the results of the following sequence of process requests in a figure. If a process request cannot be met, just indicate it so. Process A requests 511K Process B requests 1M Release A Process C requests 30K Process D requests 120K Process E requests 300K Release B; Release D; Release C; Release ESee Answer
  • Q14:/n need all the screen capture done for this and for each screen capture you need to have a text document open and this in it ( Haider Riaz) (000857908) ( Todays Date) use FEDORA for this For one of the steps, it requires my docker hub account. (You need to create the dummy account and share the credentials with student) Students note. I need the exact screen capture for this and has to be done on fedora and I need another text document open with all the required things and for the screen captures the clock has to be showing as well I want the text document with my name, id and day and the clock showing at the bottomSee Answer
  • Q15:Part 1: Course Outcome addressed in this assessment: IT332M6-6: Differentiate between various computer operating systems. Purpose In this assessment you will install a virtual machine (VM) - an emulation of a computer system in your host computer, install an open-source operating system such as Ubuntu Linux on the VM, and execute a series of command lines within the open-source Ubuntu Linux. A VM will allow you to play around and test different applications within different OSs without affecting your main operating system. Assessment Instructions: Follow the steps to install Sun™ VirtualBox and within it Ubuntu Linux. After the install, you will be required to experiment with the Ubuntu command line and the GUI interface. No instruction on how to do that will be provided. You are to find out yourself and provide a detailed report on how you did it. For this assignment, make sure to: • Install Sun VirtualBox and provide a screenshot of the final install. Install Ubuntu Linux and provide a screenshot demonstrating a successful install. Navigate to the Linux command line, start the default text editor, and provide a step- by-step written guide on how you got to the command line and what command you issued to open the editor. Use the GUI to open a text editor this time and provide a step-by-step written guide on how you got the editor open. Provide a 1-page summary recapping your experience, issues you encountered, and what similarities and differences Linux has with Windows.See Answer
  • Q16:7. (10 pts) List the similarities and differences between threads and processes.See Answer
  • Q17:6. (10 pts) Name activities are performed for OS during context switching.See Answer
  • Q18:2. (15 pts) Assume that individual stages of the datapath have the following latencies: ALU/Logic Jump/Branch Load Store 20% 15% IF ID EX MEM WB 250 ps 350 ps 150 ps 300 ps 200 ps 45% 20% (a) Left table: If you can add two more pipeline registers in addition to the five existing stages of the left table, where would you put the first and the second one? After that, what will be the critical path delay? (b) Looking at the right table, what is the percent instructions using "immediate generation" unit? (c) What percent of all instructions use instruction memory?See Answer
  • Q19:1. (15 pts) If there is no forwarding or hazard detection, insert NOPs to ensure correct execution in the following code. Briefly explain your rationale. add x15, x12, x11 ld ld or sd x12, 0(x2) x13, 4(x15) x13, x15, x13 x17, 0(x18)See Answer
  • Q20: Southern Methodist University Bobby B. Lyle School of Engineering Department of Computer Science CS 5343/7343 • CS 5343 students must do exactly 2 projects • CS 7343 students must do all projects For each project, please submit 1. The source code of the project 2. Brief description of how to test your program 3. A sample Output (snapshot or a video of program running) All of the above should be place on folder (called Project1 & Project2). These two folders should be placed in a folder bearing your name (e.g., Mike Smith). The folder "Mike Smith" should be zipped and uploaded to Canvas. 1. Project 2―The Sleeping Teaching Assistant (Chapter 7, P-38) Project 2―The Sleeping Teaching Assistant A university computer science department has a teaching assistant (TA) who helps undergraduate students with their programming assignments during regular office hours. The TA's office is rather small and has room for only one desk with a chair and computer. There are three chairs in the hallway outside the office where students can sit and wait if the TA is currently helping another student. When there are no students who need help during office hours, the TA sits at the desk and takes a nap. If a student arrives during office hours and finds the TA sleeping, the student must awaken the TA to ask for help. If a student arrives and finds the TA currently helping another student, the student sits on one of the chairs in the hallway and waits. If no chairs are available, the student will come back at a later time. Using POSIX threads, mutex locks, and semaphores, implement a solu- tion that coordinates the activities of the TA and the students. Details for this assignment are provided below. The Students and the TA Using Pthreads (Section 4.4.1), begin by creating n students where each student will run as a separate thread. The TA will run as a separate thread as well. Student threads will alternate between programming for a period of time and seeking help from the TA. If the TA is available, they will obtain help. Otherwise, they will either sit in a chair in the hallway or, if no chairs are available, will resume programming and will seek help at a later time. If a student arrives and notices that the TA is sleeping, the student must notify the TA using a semaphore. When the TA finishes helping a student, the TA must check to see if there are students waiting for help in the hallway. If so, the TA must help each of these students in turn. If no students are present, the TA may return to napping. Perhaps the best option for simulating students programming—as well as the TA providing help to a student-is to have the appropriate threads sleep for a random period of time. Coverage of POSIX mutex locks and semaphores is provided in Section 7.3. Consult that section for details. 2. Project 3-The Dining-Philosophers Problem (Chapter 7, P-39) Project 3―The Dining-Philosophers Problem In Section 7.1.3, we provide an outline of a solution to the dining-philosophers problem using monitors. This project involves implementing a solution to this problem using either POSIX mutex locks and condition variables or Java condition variables. Solutions will be based on the algorithm illustrated in Figure 7.7. Both implementations will require creating five philosophers, each identi- fied by a number 0..4. Each philosopher will run as a separate thread. Philoso- phers alternate between thinking and eating. To simulate both activities, have each thread sleep for a random period between one and three seconds. I. POSIX Thread creation using Pthreads is covered in Section 4.4.1. When a philosopher wishes to eat, she invokes the function pickup forks (int philosopher number) where philosopher_number identifies the number of the philosopher wishing to eat. When a philosopher finishes eating, she invokes return forks (int philosopher number) Your implementation will require the use of POSIX condition variables, which are covered in Section 7.3. II. Java When a philosopher wishes to eat, she invokes the method take- Forks (philosopherNumber), where philosopherNumber identifies the number of the philosopher wishing to eat. When a philosopher finishes eating, she invokes returnForks (philosopherNumber). Your solution will implement the following interface: public interface DiningServer public } /Called by a philosopher when it wishes to eat */ public void take Forks (int philosopherNumber); Called by a philosopher when it is finished eating */ public void returnForks (int philosopherNumber); It will require the use of Java condition variables, which are covered in Section 7.4.4. 3. Project 4—The Producer – Consumer Problem (Chapter 7, P-40) Project 4―The Producer-Consumer Problem In Section 7.1.1, we presented a semaphore-based solution to the producer- consumer problem using a bounded buffer. In this project, you will design a programming solution to the bounded-buffer problem using the producer and consumer processes shown in Figures 5.9 and 5.10. The solution presented in Section 7.1.1 uses three semaphores: empty and full, which count the number of empty and full slots in the buffer, and mutex, which is a binary (or mutual- exclusion) semaphore that protects the actual insertion or removal of items in the buffer. For this project, you will use standard counting semaphores for empty and full and a mutex lock, rather than a binary semaphore, to represent mutex. The producer and consumer-running as separate threads --will move items to and from a buffer that is synchronized with the empty, full, and mutex structures. You can solve this problem using either Pthreads or the Windows API. The Buffer Internally, the buffer will consist of a fixed-size array of type buffer_item (which will be defined using a typedef). The array of buffer_item objects will be manipulated as a circular queue. The definition of buffer_item, along with the size of the buffer, can be stored in a header file such as the following: /* buffer.h */ typedef int buffer_item; #define BUFFER_SIZE 5 The buffer will be manipulated with two functions, insert_item() and remove_item(), which are called by the producer and consumer threads, respectively. A skeleton outlining these functions appears in Figure 7.14. The insert_item() and remove_item() functions will synchronize the producer and consumer using the algorithms outlined in Figure 7.1 and Figure 7.2. The buffer will also require an initialization function that initializes the mutual-exclusion object mutex along with the empty and full semaphores. The main() function will initialize the buffer and create the separate pro- ducer and consumer threads. Once it has created the producer and consumer threads, the main() function will sleep for a period of time and, upon awaken- ing, will terminate the application. The main() function will be passed three parameters on the command line: 1. How long to sleep before terminating 2. The number of producer threads 3. The number of consumer threads A skeleton for this function appears in Figure 7.15. #include "buffer.h" /* the buffer */ buffer item buffer [BUFFER_SIZE]; int insert item (buffer_item item) { } /* insert item into buffer return 0 if successful, otherwise return -1 indicating an error condition */ int remove_item(buffer_item *item) { } /* remove an object from buffer placing it in item return 0 if successful, otherwise return -1 indicating an error condition */ Figure 7.14 Outline of buffer operations. The Producer and Consumer Threads The producer thread will alternate between sleeping for a random period of time and inserting a random integer into the buffer. Random numbers will be produced using the rand() function, which produces random integers between 0 and RAND-MAX. The consumer will also sleep for a random period of time and, upon awakening, will attempt to remove an item from the buffer. An outline of the producer and consumer threads appears in Figure 7.16. #include "buffer.h" int main(int argc, char *argv[]) { } /* 1. Get command line arguments argv[1], argv[2], argv[3] */ /* 2. Initialize buffer */ /* 3. Create producer thread(s) */ /* 4. Create consumer thread(s) */ /* 5. Sleep */ /* 6. Exit */ Figure 7.15 Outline of skeleton program.See Answer
View More

Popular Subjects for Operating System

You can get the best rated step-by-step problem explanations from 65000+ expert tutors by ordering TutorBin Operating System homework help.

Get Instant Operating System Solutions From TutorBin App Now!

Get personalized homework help in your pocket! Enjoy your $20 reward upon registration!

Claim Your Offer

Sign Up now and Get $20 in your wallet

Moneyback

Guarantee

Free Plagiarism

Reports

$20 reward

Upon registration

Full Privacy

Full Privacy

Unlimited

Rewrites/revisions

Testimonials

TutorBin has got more than 3k positive ratings from our users around the world. Some of the students and teachers were greatly helped by TutorBin.

"After using their service, I decided to return back to them whenever I need their assistance. They will never disappoint you and craft the perfect homework for you after carrying out extensive research. It will surely amp up your performance and you will soon outperform your peers."

Olivia

"Ever since I started using this service, my life became easy. Now I have plenty of time to immerse myself in more important tasks viz., preparing for exams. TutorBin went above and beyond my expectations. They provide excellent quality tasks within deadlines. My grades improved exponentially after seeking their assistance."

Gloria

"They are amazing. I sought their help with my art assignment and the answers they provided were unique and devoid of plagiarism. They really helped me get into the good books of my professor. I would highly recommend their service."

Michael

"The service they provide is great. Their answers are unique and expert professionals with a minimum of 5 years of experience work on the assignments. Expect the answers to be of the highest quality and get ready to see your grades soar."

Richard

"They provide excellent assistance. What I loved the most about them is their homework help. They are available around the clock and work until you derive complete satisfaction. If you decide to use their service, expect a positive disconfirmation of expectations."

Willow

TutorBin helping students around the globe

TutorBin believes that distance should never be a barrier to learning. Over 500000+ orders and 100000+ happy customers explain TutorBin has become the name that keeps learning fun in the UK, USA, Canada, Australia, Singapore, and UAE.