Working with the Unix OS

Total Page:16

File Type:pdf, Size:1020Kb

Working with the Unix OS UNIVERSITY OF ATHENS DEPARTMENT OF INFORMATICS & TELECOMMUNICATIONS WWoorrkkiinngg wwiitthh tthhee UUnniixx OOSS Maria Fragouli Dimitris Leventis Argyris Petropoulos Alex Delis AN INTRODUCTION TO UNIX CONTENTS 1. INTRODUCTION TO UNIX .................................................................................... 1 2. UNIX SHELLS.......................................................................................................18 3. C PROGRAMMING ...............................................................................................25 4. UNIX TOOLS ........................................................................................................38 5. DEVELOPMENT TOOLS.......................................................................................51 6. C LIBRARIES........................................................................................................64 7. INTRODUCTION TO KERNEL ..............................................................................80 8. PROCESSES (I) .....................................................................................................93 9. PROCESSES (II) ..................................................................................................122 10. I/O SUBSYSTEM ...............................................................................................143 11. INTERPROCESS COMMUNICATION ................................................................153 12. PROCESS SCHEDULING...................................................................................169 13. BUFFER CACHE ...............................................................................................180 14. UNIX ADMINISTRATION .................................................................................187 15. UNIX SECURITY ..............................................................................................200 TABLE OF FIGURES Figure 1. Data Structures for Processes................................................................................ 85 Figure 2. Process States and Transitions .............................................................................. 85 Figure 3. Sample Code Creating Doubly linked List ............................................................ 85 Figure 4. Incorrect Linked List because of Context Switch .................................................. 86 Figure 5.Multiple Processes Sleeping on a Lock .................................................................. 86 Figure 6. Process State ........................................................................................................ 99 Figure 7. Processes and Regions........................................................................................ 100 Figure 8. Mapping Virtual Addresses ................................................................................ 101 Figure 9. Changing Mode from User ................................................................................. 101 Figure 10. Memory Map of u area in the Kernel ................................................................ 101 Figure 11. Components of Context of a Process................................................................. 102 Figure 12. Sample Interrupt Vector.................................................................................... 102 Figure 13. Handling Interrupts........................................................................................... 102 Figure 14. Example of Interrupts ....................................................................................... 103 Figure 15. Algorithm for System Calls Invocations........................................................... 103 Figure 16. Stack configuration for creat system call........................................................... 103 Figure 17. Steps for a Context Switch................................................................................ 103 Figure 18. Pseudo-Code for Context Switch ...................................................................... 103 Figure 19. Process system calls.......................................................................................... 104 Figure 20. Algorithm for fork ............................................................................................ 104 Figure 21. Fork Creating New Process Context.................................................................. 105 Figure 22. Example of Parent and Child Share File A ........................................................ 105 Figure 23. Use of Pipe, Dup and Fork................................................................................ 106 Figure 24. Checking and Handling Signals ........................................................................ 107 Figure 25. Recognizing Signals ......................................................................................... 107 Figure 26. Algorithm for Handling Signals ........................................................................ 108 Figure 27. Driver Entry Points........................................................................................... 143 Figure 28. Block and Character Device Switch Tables....................................................... 143 Figure 29. Opening a Device ............................................................................................. 144 Figure 30. Closing a Device .............................................................................................. 144 Figure 31. Reading Disk Data - block & raw interface....................................................... 145 Figure 32. Data Sequence and Data Flow through Line Dicsipline..................................... 146 Figure 33. Removing characters from a Clist ..................................................................... 147 Figure 34. Placing characters on a Clist ............................................................................. 147 Figure 35. Writing Data to a Terminal ............................................................................... 148 Figure 36. Flooding Standard Output with Data................................................................. 148 Figure 37. Algorithm for Reading a Terminal ........................................................................1 Figure 38. Contending for Terminal Input Data ................................................................. 149 Figure 39. Raw Mode - Reading 5 character Bursts ........................................................... 150 Figure 40. Polling a Terminal ............................................................................................ 150 Figure 41. Loggin in.......................................................................................................... 151 Figure 42. A Stream after Open......................................................................................... 151 Figure 43. Pushing a Module onto a Stream....................................................................... 152 Figure 44. Windowing VT................................................................................................. 152 Figure 45. Pseudo-code for Multiplexing Windows ........................................................... 152 Figure 46. Process Scheduling........................................................................................... 170 Figure 47. Range of Process Priorities ............................................................................... 171 Figure 48. Process Scheduling Example ............................................................................ 171 Figure 49. Tie breaker rule ................................................................................................ 173 Figure 50. Fair Share Scheduler......................................................................................... 173 Figure 51. Program Using Timer ....................................................................................... 174 Figure 52. Alarm Call........................................................................................................ 174 Figure 53. Clock Handler .................................................................................................. 175 Figure 54. Invoking Profil system call ............................................................................... 175 Figure 55. Output for Profil Program................................................................................. 175 Figure 56. Algorithm for Allocating Space from Maps ...................................................... 176 Figure 57. Mapping Process Space .................................................................................... 177 Figure 58. Swapping a Process into Memory ..................................................................... 177 Figure 59. Adjusting Memory Map for Expansion Swap.................................................... 177 Figure 60. Algorithm for Swapper ..................................................................................... 178 Figure 61. Thrashing due to Swapping............................................................................... 179 Figure 62. Sequence of Swapping Operations.................................................................... 179 Figure 63. Free List of Buffers .......................................................................................... 180 Figure 64. Buffers on the Hash Queues.............................................................................
Recommended publications
  • UNIX and Computer Science Spreading UNIX Around the World: by Ronda Hauben an Interview with John Lions
    Winter/Spring 1994 Celebrating 25 Years of UNIX Volume 6 No 1 "I believe all significant software movements start at the grassroots level. UNIX, after all, was not developed by the President of AT&T." Kouichi Kishida, UNIX Review, Feb., 1987 UNIX and Computer Science Spreading UNIX Around the World: by Ronda Hauben An Interview with John Lions [Editor's Note: This year, 1994, is the 25th anniversary of the [Editor's Note: Looking through some magazines in a local invention of UNIX in 1969 at Bell Labs. The following is university library, I came upon back issues of UNIX Review from a "Work In Progress" introduced at the USENIX from the mid 1980's. In these issues were articles by or inter- Summer 1993 Conference in Cincinnati, Ohio. This article is views with several of the pioneers who developed UNIX. As intended as a contribution to a discussion about the sig- part of my research for a paper about the history and devel- nificance of the UNIX breakthrough and the lessons to be opment of the early days of UNIX, I felt it would be helpful learned from it for making the next step forward.] to be able to ask some of these pioneers additional questions The Multics collaboration (1964-1968) had been created to based on the events and developments described in the UNIX "show that general-purpose, multiuser, timesharing systems Review Interviews. were viable." Based on the results of research gained at MIT Following is an interview conducted via E-mail with John using the MIT Compatible Time-Sharing System (CTSS), Lions, who wrote A Commentary on the UNIX Operating AT&T and GE agreed to work with MIT to build a "new System describing Version 6 UNIX to accompany the "UNIX hardware, a new operating system, a new file system, and a Operating System Source Code Level 6" for the students in new user interface." Though the project proceeded slowly his operating systems class at the University of New South and it took years to develop Multics, Doug Comer, a Profes- Wales in Australia.
    [Show full text]
  • System Calls and I/O
    System Calls and I/O CS 241 January 27, 2012 Copyright ©: University of Illinois CS 241 Staff 1 This lecture Goals Get you familiar with necessary basic system & I/O calls to do programming Things covered in this lecture Basic file system calls I/O calls Signals Note: we will come back later to discuss the above things at the concept level Copyright ©: University of Illinois CS 241 Staff 2 System Calls versus Function Calls? Copyright ©: University of Illinois CS 241 Staff 3 System Calls versus Function Calls Function Call Process fnCall() Caller and callee are in the same Process - Same user - Same “domain of trust” Copyright ©: University of Illinois CS 241 Staff 4 System Calls versus Function Calls Function Call System Call Process Process fnCall() sysCall() OS Caller and callee are in the same Process - Same user - OS is trusted; user is not. - Same “domain of trust” - OS has super-privileges; user does not - Must take measures to prevent abuse Copyright ©: University of Illinois CS 241 Staff 5 System Calls System Calls A request to the operating system to perform some activity System calls are expensive The system needs to perform many things before executing a system call The computer (hardware) saves its state The OS code takes control of the CPU, privileges are updated. The OS examines the call parameters The OS performs the requested function The OS saves its state (and call results) The OS returns control of the CPU to the caller Copyright ©: University of Illinois CS 241 Staff 6 Steps for Making a System Call
    [Show full text]
  • Allan Unix Newsletter
    allan Unix User Gro Newsletter ~folume 5 rnber 1 The Australian UNIX* Users Group Newsletter Volume V Number i CONTENTS Editorial 2 Survey Responses 2 New Newsletters 3 Next AUUG Meeting 3 Books 4 Book Review 6 Nets 8 AUNET Directory Ii Netnews 28 Clippings 34 Symposium on UNIX 38 Review of August 1983 AUUG Meeting 39 From the EUUG Newsletter 49 From ;login: 61 USENIX Technical Sessions at UNIFORUM 65 Letters 95 February 1984 AUUG Meeting Details 102 Copyright (c) 1984. AUUGN is the journal of the Australian UNIX User Group, Copying without fee is permitted provided that copies are not made or distributed for commercial advantage and credit to the source is given. Abstracting with credit is permitted, No other reproduction is permitted without the prior permission of the Australian UNIX User Group, * UNIX is a trademark of Bell Telephone Laboratories, AUUGN Vol V No i Editorial Do you have the feeling you have missed something in the last few years? Have your doors been blowing closed more often because you cannot find those old AUUGN issues? Well, have no fear, the editor who brought you volumes two and three has returned to bring you volume five. I would like to take this opportunity to apologise to all our regular subscribers for the problems they may have experienced in dealing with the editors of AUUGN during 1982 and 1983. Particular apologies must go to subscribers like the CSIRO, who paid for volume IV and received nothing. Well, enough of problems, on to the good stuff! In This Issue You will notice the appearance of a few new departments in this volume.
    [Show full text]
  • User-Level Window Managers for UNIX
    User-LevelWindowManagers for UNIX Robert J.K. Jacob NavalResearch Laboratory Washington, D.C. 20375 ABSTRACT Wm manages a collection of windows on a display terminal. Each windowhas its ownshell or other interactive program, running in parallel with those in the other win- dows. This permits a user to conduct several interactions with the system in parallel, each in its own window. The user can move from one windowtoanother,re-position a window, orcreate or delete a windowatany time without losing his or her place in anyof the windows. Windows can overlap or completely obscure one another; obscured win- dows can be "lifted" up and placed on top of the other windows. This paper describes howsuch a windowmanager for UNIX† is implemented as a set of user processes, without modifications to the UNIX kernel. It shows howthe sim- ple, but well-chosen facilities provided by the original (Version 6) UNIX kernel are suffi- cient to support wm.Inaddition, subsequent versions of wm exploit features of the kernel introduced into newer versions of UNIX to provide faster and more sophisticated window operations, still implemented entirely at the user level. Introduction This paper describes the design of a display windowmanager for UNIX implemented entirely as a set of user processes, without modifications to the UNIX kernel. It shows howthe simple facilities provided by the original (Version 6) UNIX kernel are sufficient to support such a windowmanager.Inaddition, more recent versions of the windowmanager exploit features of the kernel introduced into newer versions of UNIX to provide faster and more sophisticated operations in windows, still implemented entirely outside the kernel.
    [Show full text]
  • Mandoc: Becoming the Main BSD Manual Toolbox
    mandoc: becoming the main BSD manual toolbox BSDCan 2015, June 13, Ottawa Ingo Schwarze <[email protected]> Cynthia Livingston’sOTTB “Bedifferent” (c) 2013 C. Livingston (with permission) > Ingo Schwarze: mandoc page 2: INTROI BSDCan 2015, June 13, Ottawa Brief history of UNIX documentation • The key point: All documentation in one place and one format. Easy to find, uniform and easy to read and write. Be correct, complete, concise. • 1964: RUNOFF/roffmarkup syntax by Jerome H. Saltzer,MIT. Unobtrusive,diff(1)-friendly,easy to hand-edit, simple tools, high quality output. • 1971: Basic manual structure by Ken Thompson and Dennis Ritchie for the AT&T Version 1 UNIX manuals, Bell Labs. • 1979: man(7) physical markup language for AT&T Version 7 UNIX. • 1989: mdoc(7) semantic markup by Cynthia Livingston for 4.3BSD-Reno. Powerful, self-contained, portable. • 1989: GNU troffbyJames Clarke. • 2001: mdoc(7) rewrite by Werner Lemberg and Ruslan Ermilovfor groff-1.17. • 2008: mandoc(1) started by Kristaps Dzonsons. • 2010: mandoc(1) is the only documentation formatter in the OpenBSD base system. • 2014: mandoc(1) used by default in OpenBSD, FreeBSD, NetBSD, illumos. 16:19:30 What is the mandoc toolbox? → < > Ingo Schwarze: mandoc page 3: INTROIIBSDCan 2015, June 13, Ottawa What is the mandoc toolbox? User perspective:man(1), the manual viewer One comprehensive tool! Normal operation always proceeds in three steps: 1. Find one or more manuals in the file system or using a database by manual name — man(1) — or by search query — apropos(1) =man -k The result of this step can be printed out with man -w.
    [Show full text]
  • Operating System Lab Manual
    OPERATING SYSTEM LAB MANUAL BASICS OF UNIX COMMANDS Ex.No:1.a INTRODUCTION TO UNIX AIM: To study about the basics of UNIX UNIX: It is a multi-user operating system. Developed at AT & T Bell Industries, USA in 1969. Ken Thomson along with Dennis Ritchie developed it from MULTICS (Multiplexed Information and Computing Service) OS. By1980, UNIX had been completely rewritten using C langua ge. LINUX: It is similar to UNIX, which is created by Linus Torualds. All UNIX commands works in Linux. Linux is a open source software. The main feature of Linux is coexisting with other OS such as windows and UNIX. STRUCTURE OF A LINUXSYSTEM: It consists of three parts. a)UNIX kernel b) Shells c) Tools and Applications UNIX KERNEL: Kernel is the core of the UNIX OS. It controls all tasks, schedule all Processes and carries out all the functions of OS. Decides when one programs tops and another starts. SHELL: Shell is the command interpreter in the UNIX OS. It accepts command from the user and analyses and interprets them 1 | P a g e BASICS OF UNIX COMMANDS Ex.No:1.b BASIC UNIX COMMANDS AIM: To study of Basic UNIX Commands and various UNIX editors such as vi, ed, ex and EMACS. CONTENT: Note: Syn->Syntax a) date –used to check the date and time Syn:$date Format Purpose Example Result +%m To display only month $date+%m 06 +%h To display month name $date+%h June +%d To display day of month $date+%d O1 +%y To display last two digits of years $date+%y 09 +%H To display hours $date+%H 10 +%M To display minutes $date+%M 45 +%S To display seconds $date+%S 55 b) cal –used to display the calendar Syn:$cal 2 2009 c)echo –used to print the message on the screen.
    [Show full text]
  • CENG328 Operating Systems Laboratory Chapter 7
    CENG328 Operating Systems Laboratory Chapter 7 1 File System Unix and Linux based operating systems use specific filesystems (ext2 / ext3 / ext4, xfs, btrfs, etc) for storing files, directories and other filesystem objects such as links, pipes and sockets. These filesystems usually store information such as filename, size, inode number, owning user / group info, access modes, timestamps, etc. When listing files with ls command, these different file types can be recognized by the first character next to the permissions: • Regular File: Stores data (text, image, audio...) that can be read/written by programs. Denoted by \-" sign. • Directory: A data structure that stores other files, directories, etc. Denoted by \d" sign. • Link: A softlink (symlink) is a file that acts as a pointer to another file. Denoted by \l" sign. • Socket: A filesystem-level IPC method to establish communication between processes. Denoted by \s" sign. • Pipe: A filesystem-level IPC method to establish communication between processes. Denoted by \p" sign. • Character device: A device which the driver communicates with single characters. Denoted by \c" sign. • Block device: A device which the driver communicates with blocks of data. Denoted by \b" sign. $ ls drwxrwxr-x 2 user user 4096 May 3 18:29 backups lrwxrwxrwx 1 user user 6 May 3 18:29 list -> list.1 -rw-rw-r-- 1 user user 132 May 3 18:29 list.0 -rw-rw-r-- 1 user user 218 May 3 18:29 list.1 -rw-rw-r-- 1 user user 63 May 3 18:29 list.2 brw-rw---- 1 root disk 7, 6 Apr 24 10:11 sda1 prw-rw-r-- 1 user user 0 May 3 18:29 somepipe
    [Show full text]
  • CBCE"1Jum11m(] CD~Cbul1 Ij0d~
    TOP SECRET OJalUOCDOJallb ~l!CBC!JWOU~ UJl]l!OJCB~ ll~WU l]l!~~l]l! l]f,J Wl5£ill!ll5 ~ W(lJ~~l1WllJC!l CBCE"1Jum11m(] CD~CBUl1 iJ0D~ 86-36 PARTIAL MACHINE TRANSLATION: FINAL REPORT (U) .. J . ~ .•• 1 TRACKS IN THE SANDS OF TIME (U)•••••••••••••••••Fred Mason •••••••• 0 ••••••••• 12 NSA-CROSTIC NO. 39 (U) •••••••••••••••••••••••••• David H. Willimas.~.•• •••••· •• 14 REVIEW: THE AMERICAN MAGIC (U) ...... _.......... ·I V··· . .; ......... 16 SHELL GAME (U) •••••••••••••••••••••••••••••••••• w. E. s ••••.•• ,/ .• .,,,~ ••... i ••. 20 WORD PROCESSING IN A4 (U)................... •.• • t ••• • ••..•• •i ••• • 22 BOOKBREAKERS' FORUM ON MACHINE AIDS (U)........ I••••••• •• •••• 27 PERSONAL COMPUTER APPLICATION (U) • • • • • • • • • • • • • • t ••••• 28 THIS 9QCUAIENT CQNT.~INS CQ9EWQR9 l\ft.:F8RIAb Sln\SSIFIEB BY NS1t/eSSM 123•2 TOP SECRET ItEVImf 6'M 16 Apt 2612 DP=classifiect and Approyeci for RP-lease o ... ..- t;JSA on 1 0-1 ?-201? pursuant to EC) 135 -:;- o M O R C::asR # $4 7 'j %"") DOCID: 4033690 Published by Pl. Techniques and Standards. for the Personnel of Operations Editorial VOL. IX. No. 4 APRIL 1982 By now it seems safe to announce that :.., J ~ · CRYPTOLOG is once again coming out on a '•;:. PUBLISHER monthly schedule. That was our objective bac~ in October, but there were a lot of questions BOARD OF EDITORS about whether it could be done. Editor-in-Chief • ._I______ _. (7119/8322s) Production ••••••••••• ~... ________I (3369s) We decided at the outset not to make any promises about publication schedules. These days there are so many people promising so Collection ...................l ___ .....,_~I (8555s) much, and yesterday's promises have a way of fading unfulfilled beneath the flood of ever Cryptanalysis ••••••••••• ~..
    [Show full text]
  • Network Driver for Micro Os Xv6
    NETWORK DRIVER FOR MICRO OS XV6 A Project Presented to the faculty of the Department of Computer Science California State University, Sacramento Submitted in partial satisfaction of the requirements for the degree of MASTER OF SCIENCE in Computer Science by Anmoldeep Singh Sandhu SPRING 2020 © 2020 Anmoldeep Singh Sandhu ALL RIGHTS RESERVED ii NETWORK DRIVER FOR MICRO OS XV6 A Project by Anmoldeep Singh Sandhu Approved by: __________________________________, Committee Chair Dr. Jinsong Ouyang __________________________________, Second Reader Dr. Jingwei Yang ____________________________ Date iii Student: Anmoldeep Singh Sandhu I certify that this student has met the requirements for format contained in the University format manual, and this thesis is suitable for electronic submission to the library. Credit is awarded for the Project. __________________________, Graduate Coordinator ___________________ Dr. Jinsong Ouyang Date Department of Computer Science iv Abstract of NETWORK DRIVER FOR MICRO OS XV6 by Anmoldeep Singh Sandhu The network driver is one of the primary requirements for any operating system. Xv6 is a micro-operating system based on version 6 Unix. The latest version of xv6 does not have support for the ethernet driver or the four-layer UDP/IP model. Our work extends the xv6 operating system to support a functioning network driver with the capability of handling a packet burst. This Project also adds support for UDP/IP and Ethernet protocol to the xv6 operating system. _______________________ Committee Chair Dr. Jinsong Ouyang _____________________ Date v ACKNOWLEDGMENTS I am thankful to Dr. Ouyang for providing me the opportunity to learn new skills in the field of driver development. Dr. Ouyang showed trust in me in carrying out this Project.
    [Show full text]
  • Computer Systems II Behind the 'System(…)' Command Execv Execl
    Computer Systems II Execung Processes 1 Behind the ‘system(…)’ Command execv execl 2 1 Recall: system() Example call: system(“mkdir systest”); • mkdir is the name of the executable program • systest is the argument passed to the executable mkdir.c int main(int argc, char * argv[]) { ... // create directory called argv[1] ... } Unix’s execv The system call execv executes a file, transforming the calling process into a new process. ADer a successful execv, there is no return to the calling process. execv(const char * path, const char * argv[]) • path is the full path for the file to be executed • argv is the argument array, starEng with the program name • each argument is a null-terminated string • the first argument is the name of the program • the last entry in argv is NULL 2 system() vs. execv system(“mkdir systest”); mkdir.c int main(int argc, char * argv[]) { ... // create directory called argv[1] ... } char * argv[] = {“/bin/mkdir”, “systest”, NULL}; execv(argv[0], argv); How execv Works (1) pid = 25 pid = 26 Data Resources Data Text Text Stack Stack PCB File PCB char * argv[ ] = {“/bin/ls”, 0}; cpid = 26 cpid = 0 char * argv[ ] = {“/bin/ls”, 0}; <…> <…> int cpid = fork( ); int cpid = fork( ); if (cpid = = 0) { if (cpid = = 0) { execv(argv[0], argv); execv(argv[0], argv); exit(0); exit(0); } } <parent code> <parent code> wait(&cpid); wait(&cpid); /bin/ls UNIX kernel 3 How execv Works (2) pid = 25 pid = 26 Data Resources Text Stack PCB File char * argv[ ] = {“/bin/ls”, 0}; cpid = 26 <…> Exec destroys the int cpid = fork( ); if (cpid = = 0) { process image of the execv(argv[0], argv); calling process.
    [Show full text]
  • Programming Assignment 01
    CMPS 401 Survey of Programming Languages Programming Assignment #3 C Language On the Ubuntu Operating System 1. Write a small C program (P3.c) to roll your own shell that loops reading a line from standard input and checks the first word of the input line. If the first word is one of the following internal commands (or aliases) perform the designated task. Otherwise use the standard ANSI C system function to execute the line through the default system shell. Internal Commands/Aliases: myclear Clear the screen using the system function clear: system("clear") The string “clear” is passed to the default command shell for execution. mydir <directory> List the directory contents (ls -al <directory>) You will need to provide some command line parsing capability to extract the target directory for listing. Once you have built the replacement command line, use the system function to execute it. myenviron List all the environment strings The environment strings can be accessed from within a program as a global variable. extern char **environ; The environ is an array of pointers to the environment strings terminated with a NULL pointer. myquit Quit from the program with a zero return value. Use the standard exit function. External Commands: For all other command line inputs, relay the command line to the parent shell for execution using the system function (i.e. who). Sample Run: ==>mydir total 28 drwxrwxr-x 2 yang yang 4096 Sep 24 02:56 . drwxrwxr-x 6 yang yang 4096 Sep 24 01:45 .. -rwxrwxr-x 1 yang yang 8975 Sep 24 02:56 a.out -rw-rw-r-- 1 yang yang 4340 Sep 24 02:55 P3.c ==>cal September 2013 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ==>myquit 2.
    [Show full text]
  • Problem Solving 1
    Chapter 1 PROBLEM SOLVING LEARNING OBJECTIVES After going through this chapter, the readers will be able to: apply problem solving techniques; define an algorithm and its features; describe the analysis of the algorithm efficiency; discuss the analysis of algorithm complexity; and design flowchart 1.1 INTRODUCTION In our daily life, we routinely encounter and solve problems. We pose problems that we need or want to solve. For this, we make use of available resources, and solve them. Some categories of resources include: the time and efforts of yours and others; tools; information; and money. Some of the problems that you encounter and solve are quite simple. But some others may be very complex. In this unit we introduce you to the concepts of problem-solving, especially as they pertain to computer programming. The problem-solving is a skill and there are no universal approaches one can take to solving problems. Basically one must explore possible avenues to a solution one by one until she/he comes across a right path to a solution. In general, as one gains experience in solving problems, one develop one’s own techniques and strategies, though they are often intangible. Problem-solving skills are recognized as an integral component of computer programming. It is a demand and intricate process which is equally important throughout the project life cycle especially – study, designing, development, testing and implementation stages. The computer problem solving process requires: i) Problem anticipation ii) Careful planning iii) Proper thought process iv) Logical precision v) Problem analysis vi) Persistence and attention. At the same time it requires personal creativity, analytic ability and expressions.
    [Show full text]