From 29d7d43954a4d2acaafb9fddc5c2c03e0f7b2bba Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Tue, 29 Sep 2015 13:20:29 -0300 Subject: [PATCH 01/29] =?UTF-8?q?Adi=C3=A7=C3=A3o=20de=20link=20para=20rep?= =?UTF-8?q?osit=C3=B3rio=20e=20nome=20e=20matr=C3=ADcula=20de=20um=20dos?= =?UTF-8?q?=20discentes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/INSTALL.md | 1 + teaching/2015.1-IAC-trabalho-pratico/LICENSE | 675 ++++++++++++++++++ .../2015.1-IAC-trabalho-pratico/README.md | 126 ++++ .../2015.1-IAC-trabalho-pratico/REPORT.md | 26 + .../2015.1-IAC-trabalho-pratico/src/main.c | 33 + .../2015.1-SO-trabalho-pratico/INSTALL.md | 1 + teaching/2015.1-SO-trabalho-pratico/LICENSE | 675 ++++++++++++++++++ teaching/2015.1-SO-trabalho-pratico/README.md | 226 ++++++ teaching/2015.1-SO-trabalho-pratico/REPORT.md | 25 + .../2015.1-SO-trabalho-pratico/src/main.c | 33 + teaching/README.md | 5 + 11 files changed, 1826 insertions(+) create mode 100644 teaching/2015.1-IAC-trabalho-pratico/INSTALL.md create mode 100644 teaching/2015.1-IAC-trabalho-pratico/LICENSE create mode 100644 teaching/2015.1-IAC-trabalho-pratico/README.md create mode 100644 teaching/2015.1-IAC-trabalho-pratico/REPORT.md create mode 100644 teaching/2015.1-IAC-trabalho-pratico/src/main.c create mode 100644 teaching/2015.1-SO-trabalho-pratico/INSTALL.md create mode 100644 teaching/2015.1-SO-trabalho-pratico/LICENSE create mode 100644 teaching/2015.1-SO-trabalho-pratico/README.md create mode 100644 teaching/2015.1-SO-trabalho-pratico/REPORT.md create mode 100644 teaching/2015.1-SO-trabalho-pratico/src/main.c create mode 100644 teaching/README.md diff --git a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md new file mode 100644 index 0000000..04ef57f --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md @@ -0,0 +1 @@ +#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/teaching/2015.1-IAC-trabalho-pratico/LICENSE b/teaching/2015.1-IAC-trabalho-pratico/LICENSE new file mode 100644 index 0000000..733c072 --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/LICENSE @@ -0,0 +1,675 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/teaching/2015.1-IAC-trabalho-pratico/README.md b/teaching/2015.1-IAC-trabalho-pratico/README.md new file mode 100644 index 0000000..9f80ae1 --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/README.md @@ -0,0 +1,126 @@ +

+Universidade Federal de Alagoas
+Instituto de Computação
+

+ +#Trabalho Prático AB2 + +Disciplina: Sistemas Operacionais
+Semestre letivo: 2015.1
+Professor: André Lage Freitas
+ +## Objetivo + +Compreender o consumo dos recursos do computador pelos processos. Investigar a utilização da UCP e da memória pelos processos através de experimentos. Experimentar a gestão de processos. + +## Especificação + +**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. + +O trabalho consiste em escrever um programa que crie e monitore a execução de um processo do sistema operacional. A criação de um processo UNIX é feito pela chamada de sistema [fork](), que cria um processo filho dentro do processo que o executa (processo pai). + +O exemplo no arquivo ```main.c```, adaptado de [1], mostra como esse procedimento é feito. + +A equipe deve estudar esse código, re-escrevê-lo e adaptá-lo conforme as instruções escritas nos TODOs; ver dentro dos comentários do programa. + + +* Exemplo de código com utilização intensa da UCP: + +``` +for (;;) {} +``` + +* Exemplo de código com utilização intensa da UCP e da memória: + +``` +for (;;) { + malloc(sizeof(100000)); +} +``` + + +## Relatório + +Deverá ser entregue um relatório feito em [Markdown](https://en.wikipedia.org/wiki/Markdown), com **mínimo de 600 e máximo de 1.000 palavras**. O relatório deverá utilizar o modelo ```REPORT.md``` como especificado dentro do modelo. + + +## Controle de versão + +A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. + +Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. + +## Linguagem de programação + +O programa deve ser implementado na linguagem de programação **C** obedecendo os seguintes critérios: + +* código sob o padrão ANSI C; +* utilização dos compiladores gcc ou g++; +* bibliotecas externas deve ser entregues junto com o código; +* os comandos completos para compilação do programa devem ser indicados; +* se o comando não for indicado, o seguinte comando será utilizado: + +``` +gcc -o bin main.c +``` + +* se for utilizado algum programa para automação de compilação, os comandos devem ser indicados; + * os programas de automação aceitos são o [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). + +## Sistema operacional + +O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). + +Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. + +Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu programa. + +## Critérios de Correção + + +* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: + * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. + * Conteúdo (**16,0 pontos**): + * **10,0 pontos**: se o programa compila, executa e funciona como especificado; + * **6,0 pontos**: relatório, sendo 3 pontos para cada seção da Seção Discussão. + +* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. +* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. + +### Pontuação extra + +O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. + +O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. + + +### Plágio + +A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). + + +## Entrega do trabalho + +### Forma + +O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **filipebatista** (no) **ic ufal br** + + +Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. + +A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. + +### Prazos + +O prazo de entrega sem atraso é o dia **20/10/15**. + +Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. + + +## Referências + +[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. + +## Disclaimer + +Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e está licenciado sob a licença _GNU General Public License v3.0_. diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md new file mode 100644 index 0000000..f731759 --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -0,0 +1,26 @@ +# Identificação + +* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching.git)) + +* Discente 1 + * Nome: Leandro Martins de Freitas + * Matrícula: 15111982 +* Discente 2 + * Nome: TODO + * Matrícula: TODO + +# Discussão + +* TODO: Em cada seção: + * explicar e discutir sobre o comportamento do programa para cada experimento; + * sempre referenciar o código fonte e o gráfico do experimento realizado; + * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; + * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); + * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. + + +## Utilização intensa da UCP + + +## Utilização intensa da UCP e memória + diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c new file mode 100644 index 0000000..c0df132 --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -0,0 +1,33 @@ +#include +#include +#include +#include +#include + +int main (int argc, char *argv[], char *envp[]) { + +int pid ; /* identificador de processo */ + +pid = fork () ; /* replicação do processo */ + +if ( pid < 0 ) { /* se fork não funcionou */ + perror ("Erro: ") ; + exit (-1) ; /* encerra o processo com código de erro -1 */ +} +else if( pid > 0 ) /* se sou o processo pai*/ +{ + //TODO guarde a cada segundo o consumo de memória (em Kilobytes) e CPU (em porcentagem) do processo filho + //TODO após 10 segundos de execução, mate o proceso filho +} +else /* senão, sou o processo filho*/ +{ + //TODO se argv[1] for igual a 'cpu', executar código com utilização intensa da UCP + //TODO se argv[1] for igual a 'cpu-mem', executar código com utilização intensa da UCP e da memória: + +} +perror ("Erro: ") ; /* execve não funcionou */ + +printf ("Tchau !\n") ; +exit(0) ; /* encerra o processo com sucesso (código 0) */ + +} \ No newline at end of file diff --git a/teaching/2015.1-SO-trabalho-pratico/INSTALL.md b/teaching/2015.1-SO-trabalho-pratico/INSTALL.md new file mode 100644 index 0000000..04ef57f --- /dev/null +++ b/teaching/2015.1-SO-trabalho-pratico/INSTALL.md @@ -0,0 +1 @@ +#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/teaching/2015.1-SO-trabalho-pratico/LICENSE b/teaching/2015.1-SO-trabalho-pratico/LICENSE new file mode 100644 index 0000000..733c072 --- /dev/null +++ b/teaching/2015.1-SO-trabalho-pratico/LICENSE @@ -0,0 +1,675 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/teaching/2015.1-SO-trabalho-pratico/README.md b/teaching/2015.1-SO-trabalho-pratico/README.md new file mode 100644 index 0000000..32482f6 --- /dev/null +++ b/teaching/2015.1-SO-trabalho-pratico/README.md @@ -0,0 +1,226 @@ +

+Universidade Federal de Alagoas
+Instituto de Computação
+

+ +#Trabalho Prático AB2 + +Disciplina: Sistemas Operacionais
+Semestre letivo: 2015.1
+Professor: André Lage Freitas
+ +## Objetivo + +Simulador o Escalonador de Tarefas de um Sistema Operacional. + +## Especificação + +**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. + +O trabalho consiste em simular o escalonamento de um conjunto de tarefas usando os seguintes algoritmos de escalonamento de tarefas [1]: + +* **FCFS** (First Come, First Served) +* **Round-Robin** com quantum = **2s**, com prioridade + + +### Entrada do Programa + +#### ```args[1]``` + +O programa deverá ler os dados dos processos a partir de um arquivo passado como o primeiro parâmetro (```args[1]```). Cada linha da entrada corresponde a um processo, com os seguintes dados fornecidos como inteiros separados por um ou mais espaços em branco: + +* data de criação; +* duração em segundos; +* prioridade estática (escala de prioridades positiva). + +A seguir, um exemplo de arquivo de entrada: + +``` +0 5 2 +0 2 3 +3 3 4 +1 4 1 +``` + +Nesse exemplo de entrada, o processo P1 (primeira linha) tem data de criação 0, sua execução dura 5 segundos e sua prioridade é 2. Esse formato de entrada deverá ser respeitado, pois o simulador será testado com outros dados de entrada. + +Observe que essa listagem não precisa necessariamente estar ordenada por data de criação de cada processo. Entretanto, o programa deverá ser capaz de identificar cada tempo de ingresso e escalonar o processo corretamente. + +**O programa deverá aceitar, no mínimo, 9 processos** nomeados de P1 à P9, ordenados com base no tempo de ingresso no sistema onde P1 ingressou antes de P2 que ingressou antes de P3 e, assim, sucessivamente. + + +#### ```args[2]``` + +O segundo parâmetro de entrada deve ser a política de escalonamento de tarefas: + +* ```fcfc``` FCFS (First Come, First Served) +* ```rr``` Round-Robin com quantum = **2s**, com prioridade + +#### Exemplos de compilação e execução em C + +O exemplo a seguir compila e executa o programa com arquivo de entrada ```input.txt``` e simulando a política FCFS: + +``` +$ gcc -o bin main.c +$ ./bin input.txt fcfs +... +``` + +### Saída do Programa + +O simulador deverá produzir **o diagrama de tempo da execução** gravado em arquivo. Esse arquivo deverá ser nomeado de ```output```. + +O diagrama de tempo de cada execução deve ser gerado na vertical, de cima para baixo (uma linha por segundo), conforme mostra o exemplo a seguir: + +``` +tempo P1 P2 P3 P4 + 0- 1 ## -- + 1- 2 ## -- -- + 2- 3 -- ## -- + 3- 4 -- ## -- -- + 4- 5 -- ## -- + 5- 6 -- ## -- + 6- 7 ## -- -- + 7- 8 ## -- -- + 8- 9 -- -- ## + 9-10 -- -- ## +10-11 -- ## -- +11-12 -- ## -- +12-13 ## -- +13-14 ## +``` + +### Implementação + +Sugestão de implementação (pseudo-código que deve ser ajustado para cada política): + +``` +início + lê dados das tarefas da entrada padrão + imprime cabeçalho do diagrama + + t = 0 + enquanto t < tmax + + se há uma tarefa rodando + se a tarefa rodando chegou ao fim da execução + migra a tarefa para o estado terminado + libera o processador + senão + se a tarefa rodando chegou ao fim de seu quantum + migra a tarefa para a fila de prontos + libera o processador + fim se + fim se + + para cada tarefa i + se a tarefa i inicia agora (em t) + coloca a tarefa na fila de prontos + fim se + fim para + + se o processador estiver livre + se houver tarefa na fila de prontas + escolhe uma tarefa da fila de prontas + migra essa tarefa para o estado "rodando" + fim se + fim se + + imprime linha do diagrama com o estado de cada tarefa + + incrementa o tempo (t++) + incrementa contadores da tarefa corrente (tempo de vida e de quantum) + + fim enquanto + + calcula e imprime tempos médios +fim +``` + +Sugere-se definir para cada tarefa: + +* identificador; +* datas de inicio e de conclusão; +* duração (tempo necessário no processador); +* estado atual (nova, pronta, rodando, terminada, ...); +* tempo já executado (total e no quantum atual); +* (outros campos podem ser necessários para algumas políticas). + +## Controle de versão + +A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. + +Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. + +## Linguagem de programação + +O trabalho poderá ser implementado na linguagem de programação desejada pelo discente desde que: + +* o compilador seja software livre e/ou gratuito e esteja disponível para instalação no sistema operacional definido nessa especificação; +* o(a) discente informe como instalar o compilador da linguagem no sistema operacional definido nessa especificação; +* se a linguagem de programação for **C**, os critérios são: + * código sob o padrão ANSI C; + * utilização dos compiladores gcc ou g++; +* bibliotecas externas deve ser entregues junto com o código; +* os comandos completos para compilação do programa devem ser indicados no arquivo ```INSTALL.md```; + * se for utilizado algum programa para automação de compilação ou [IDE](https://pt.wikipedia.org/wiki/Ambiente_de_desenvolvimento_integrado), os comandos para instalação do programa devem ser indicados; + * exemplos de programas de automação: [maven](http://maven.apache.org), [ant](http://ant.apache.org), [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). + + +## Sistema operacional + +O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). + +Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. + +Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu código devem ser indicados no arquivo ```INSTALL.md```. + +## Critérios de Correção + +* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: + * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. + * Conteúdo (**16,0 pontos**): se o programa funciona de acordo com a sua especificação: + * **8,0 pontos**: simula corretamente a política de escalonamento **FCFS** (First Come, First Served); + * **8,0 pontos**: simula corretamente a política de escalonamento **Round-Robin** com quantum = **2s**, com prioridade. + +* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. +* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. + +### Pontuação extra + +O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. + +O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. + + +### Plágio + +A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). + + +## Entrega do trabalho + +### Forma + +O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **thiagopeixoto** (no) **linux com** + + +Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. + +A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. + +### Prazos + + +O prazo de entrega sem atraso é o dia **20/10/15**. + +Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. + + +## Referências + +[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. + +## Disclaimer + +Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e foi baseado no projeto Algoritmos de Escalonamento da [disciplina IF66D](http://dainf.ct.utfpr.edu.br/~maziero/doku.php/so:algoritmos_de_escalonamento) (DAINF-UFTPR), de autoria do Prof. Maziero, que está licenciado sob a licença [Creative Commons BY-NC-SA](http://creativecommons.org/licenses/by-nc-sa/3.0/br/). \ No newline at end of file diff --git a/teaching/2015.1-SO-trabalho-pratico/REPORT.md b/teaching/2015.1-SO-trabalho-pratico/REPORT.md new file mode 100644 index 0000000..e5f242c --- /dev/null +++ b/teaching/2015.1-SO-trabalho-pratico/REPORT.md @@ -0,0 +1,25 @@ +# Identificação + +* Página do repositório do trabalho ([link GitHub](TODO)) + +* Discente 1 + * Nome: TODO + * Matrícula: TODO +* Discente 2 + * Nome: TODO + * Matrícula: TODO + +# Discussão + +* TODO: Em cada seção: + * explicar e discutir sobre o comportamento do programa para cada experimento; + * sempre referenciar o código fonte e o gráfico do experimento realizado; + * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; + * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); + * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. + + +## Utilização intensa da UCP + + +## Utilização intensa da UCP e memória diff --git a/teaching/2015.1-SO-trabalho-pratico/src/main.c b/teaching/2015.1-SO-trabalho-pratico/src/main.c new file mode 100644 index 0000000..c0df132 --- /dev/null +++ b/teaching/2015.1-SO-trabalho-pratico/src/main.c @@ -0,0 +1,33 @@ +#include +#include +#include +#include +#include + +int main (int argc, char *argv[], char *envp[]) { + +int pid ; /* identificador de processo */ + +pid = fork () ; /* replicação do processo */ + +if ( pid < 0 ) { /* se fork não funcionou */ + perror ("Erro: ") ; + exit (-1) ; /* encerra o processo com código de erro -1 */ +} +else if( pid > 0 ) /* se sou o processo pai*/ +{ + //TODO guarde a cada segundo o consumo de memória (em Kilobytes) e CPU (em porcentagem) do processo filho + //TODO após 10 segundos de execução, mate o proceso filho +} +else /* senão, sou o processo filho*/ +{ + //TODO se argv[1] for igual a 'cpu', executar código com utilização intensa da UCP + //TODO se argv[1] for igual a 'cpu-mem', executar código com utilização intensa da UCP e da memória: + +} +perror ("Erro: ") ; /* execve não funcionou */ + +printf ("Tchau !\n") ; +exit(0) ; /* encerra o processo com sucesso (código 0) */ + +} \ No newline at end of file diff --git a/teaching/README.md b/teaching/README.md new file mode 100644 index 0000000..529064c --- /dev/null +++ b/teaching/README.md @@ -0,0 +1,5 @@ +#Teaching + +##Naming + +[year].[semester]-[class]-[subject] \ No newline at end of file From 053bc2e5ad9e33240bc852c7c2cf320769700a14 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 8 Oct 2015 21:30:30 -0300 Subject: [PATCH 02/29] =?UTF-8?q?C=C3=B3digo=20totalmente=20implementado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Git/2015.1-IAC-trabalho-pratico/src/main.c | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 Git/2015.1-IAC-trabalho-pratico/src/main.c diff --git a/Git/2015.1-IAC-trabalho-pratico/src/main.c b/Git/2015.1-IAC-trabalho-pratico/src/main.c new file mode 100644 index 0000000..d608e0a --- /dev/null +++ b/Git/2015.1-IAC-trabalho-pratico/src/main.c @@ -0,0 +1,57 @@ +#include +#include +#include +#include +#include +#include + +int main (int argc, char *argv[], char *envp[]) { + + int pid ; //process identifier + int i; + char cpu[100]; //command of cpu usage + char mem[100]; //command of memory usage + char cm[100]; //command used to kill the process + + pid = fork() ; //process replication + + if (pid < 0) { //if fork doesn't work + perror ("Erro: ") ; + exit (-1) ; //terminates the process with error code -1 + } + else if(pid > 0) //if I'm the father process + { + //this 3 sprintf functions format the used commands + sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); + sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); + sprintf(cm, "%s%d", "kill -9 ", pid); + + for(i = 0; i < 10; i++) { + printf("CPU(%c)\n", 37); + system(cpu); //running the cpu usage command + printf("Mem\n"); + system(mem); //running the memory usage command + printf("----\n"); + sleep(1); //waits one second + } + system(cm); //running the killing command + } + else //else I'm the son process + { + if(strcmp(argv[1], "cpu") == 0) { + for(;;) { + } + } + + if(strcmp(argv[1], "cpu-mem") == 0) { + for (;;) { + malloc(sizeof(100000)); + } + } + } + perror ("Erro: ") ; //execve didn't work + + printf ("Tchau !\n") ; + exit(0) ; //terminates the process with success (code 0) */ + +} From 498dc01e1edb40c65071433a61aa12eee6025601 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 8 Oct 2015 22:27:06 -0300 Subject: [PATCH 03/29] =?UTF-8?q?c=C3=B3digo=20implementado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/REPORT.md | 26 +++++++++ .../2015.1-IAC-trabalho-pratico/src/main.c | 58 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md create mode 100644 Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c diff --git a/Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md new file mode 100644 index 0000000..e2e58fc --- /dev/null +++ b/Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -0,0 +1,26 @@ +# Identificação + +* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching)) + +* Discente 1 + * Nome: Leandro martins de Freitas + * Matrícula: 15111982 +* Discente 2 + * Nome: TODO + * Matrícula: TODO + +# Discussão + +* TODO: Em cada seção: + * explicar e discutir sobre o comportamento do programa para cada experimento; + * sempre referenciar o código fonte e o gráfico do experimento realizado; + * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; + * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); + * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. + + +## Utilização intensa da UCP + + +## Utilização intensa da UCP e memória + diff --git a/Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c new file mode 100644 index 0000000..368acf6 --- /dev/null +++ b/Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -0,0 +1,58 @@ +#include +#include +#include +#include +#include +#include + +int main (int argc, char *argv[], char *envp[]) { + + int pid ; //process identifier + int i; + char cpu[100]; //command of cpu usage + char mem[100]; //command of memory usage + char cm[100]; //command used to kill the process + + pid = fork() ; //process replication + + if (pid < 0) { //if fork doesn't work + perror ("Erro: ") ; + exit (-1) ; //terminates the process with error code -1 + } + else if(pid > 0) //if I'm the father process + { + //this 3 sprintf functions format the used commands + sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); + sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); + sprintf(cm, "%s%d", "kill -9 ", pid); + + for(i = 0; i < 10; i++) { + printf("CPU(%c)\n", 37); + system(cpu); //running the cpu usage command + printf("Mem\n"); + system(mem); //running the memory usage command + printf("----\n"); + sleep(1); //waits one second + } + system(cm); //running the killing command + } + else //else I'm the son process + { + if(strcmp(argv[1], "cpu") == 0) { + for(;;) { + } + } + + if(strcmp(argv[1], "cpu-mem") == 0) { + for (;;) { + malloc(sizeof(100000)); + } + } + } + perror ("Erro: ") ; //execve didn't work + + printf ("Tchau !\n") ; + exit(0) ; //terminates the process with success (code 0) */ + +} + From 536096dd84c0e54e742459fc52417914876ec15a Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 8 Oct 2015 22:33:30 -0300 Subject: [PATCH 04/29] =?UTF-8?q?C=C3=B3digo=20implementado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/REPORT.md | 4 +- .../2015.1-IAC-trabalho-pratico/src/main.c | 65 +++++++++++++------ 2 files changed, 47 insertions(+), 22 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index f731759..e2e58fc 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -1,9 +1,9 @@ # Identificação -* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching.git)) +* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching)) * Discente 1 - * Nome: Leandro Martins de Freitas + * Nome: Leandro martins de Freitas * Matrícula: 15111982 * Discente 2 * Nome: TODO diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index c0df132..368acf6 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -3,31 +3,56 @@ #include #include #include +#include int main (int argc, char *argv[], char *envp[]) { -int pid ; /* identificador de processo */ + int pid ; //process identifier + int i; + char cpu[100]; //command of cpu usage + char mem[100]; //command of memory usage + char cm[100]; //command used to kill the process + + pid = fork() ; //process replication -pid = fork () ; /* replicação do processo */ + if (pid < 0) { //if fork doesn't work + perror ("Erro: ") ; + exit (-1) ; //terminates the process with error code -1 + } + else if(pid > 0) //if I'm the father process + { + //this 3 sprintf functions format the used commands + sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); + sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); + sprintf(cm, "%s%d", "kill -9 ", pid); + + for(i = 0; i < 10; i++) { + printf("CPU(%c)\n", 37); + system(cpu); //running the cpu usage command + printf("Mem\n"); + system(mem); //running the memory usage command + printf("----\n"); + sleep(1); //waits one second + } + system(cm); //running the killing command + } + else //else I'm the son process + { + if(strcmp(argv[1], "cpu") == 0) { + for(;;) { + } + } -if ( pid < 0 ) { /* se fork não funcionou */ - perror ("Erro: ") ; - exit (-1) ; /* encerra o processo com código de erro -1 */ -} -else if( pid > 0 ) /* se sou o processo pai*/ -{ - //TODO guarde a cada segundo o consumo de memória (em Kilobytes) e CPU (em porcentagem) do processo filho - //TODO após 10 segundos de execução, mate o proceso filho -} -else /* senão, sou o processo filho*/ -{ - //TODO se argv[1] for igual a 'cpu', executar código com utilização intensa da UCP - //TODO se argv[1] for igual a 'cpu-mem', executar código com utilização intensa da UCP e da memória: + if(strcmp(argv[1], "cpu-mem") == 0) { + for (;;) { + malloc(sizeof(100000)); + } + } + } + perror ("Erro: ") ; //execve didn't work -} -perror ("Erro: ") ; /* execve não funcionou */ + printf ("Tchau !\n") ; + exit(0) ; //terminates the process with success (code 0) */ -printf ("Tchau !\n") ; -exit(0) ; /* encerra o processo com sucesso (código 0) */ +} -} \ No newline at end of file From 45c2c651ecaed40e95cff2e1d9d31ef422df830f Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 8 Oct 2015 22:45:13 -0300 Subject: [PATCH 05/29] Erro --- 2015.1-IAC-trabalho-pratico/INSTALL.md | 1 - 2015.1-IAC-trabalho-pratico/LICENSE | 675 ------------------ 2015.1-IAC-trabalho-pratico/README.md | 126 ---- 2015.1-IAC-trabalho-pratico/REPORT.md | 26 - 2015.1-IAC-trabalho-pratico/src/main.c | 33 - 2015.1-SD-trabalho-pratico/README.ipynb | 261 ------- 2015.1-SD-trabalho-pratico/README.md | 14 - 2015.1-SO-trabalho-pratico/INSTALL.md | 1 - 2015.1-SO-trabalho-pratico/LICENSE | 675 ------------------ 2015.1-SO-trabalho-pratico/README.md | 228 ------ 2015.1-SO-trabalho-pratico/REPORT.md | 25 - Git/2015.1-IAC-trabalho-pratico/src/main.c | 57 -- .../2015.1-IAC-trabalho-pratico/REPORT.md | 26 - .../2015.1-IAC-trabalho-pratico/src/main.c | 58 -- .../2015.1-IAC-trabalho-pratico/INSTALL.md | 1 - teaching/2015.1-IAC-trabalho-pratico/LICENSE | 675 ------------------ .../2015.1-IAC-trabalho-pratico/README.md | 126 ---- .../2015.1-IAC-trabalho-pratico/REPORT.md | 26 - .../2015.1-IAC-trabalho-pratico/src/main.c | 58 -- .../2015.1-SO-trabalho-pratico/INSTALL.md | 1 - teaching/2015.1-SO-trabalho-pratico/LICENSE | 675 ------------------ teaching/2015.1-SO-trabalho-pratico/README.md | 226 ------ teaching/2015.1-SO-trabalho-pratico/REPORT.md | 25 - .../2015.1-SO-trabalho-pratico/src/main.c | 33 - teaching/README.md | 5 - 25 files changed, 4057 deletions(-) delete mode 100644 2015.1-IAC-trabalho-pratico/INSTALL.md delete mode 100644 2015.1-IAC-trabalho-pratico/LICENSE delete mode 100644 2015.1-IAC-trabalho-pratico/README.md delete mode 100644 2015.1-IAC-trabalho-pratico/REPORT.md delete mode 100644 2015.1-IAC-trabalho-pratico/src/main.c delete mode 100644 2015.1-SD-trabalho-pratico/README.ipynb delete mode 100644 2015.1-SD-trabalho-pratico/README.md delete mode 100644 2015.1-SO-trabalho-pratico/INSTALL.md delete mode 100644 2015.1-SO-trabalho-pratico/LICENSE delete mode 100644 2015.1-SO-trabalho-pratico/README.md delete mode 100644 2015.1-SO-trabalho-pratico/REPORT.md delete mode 100644 Git/2015.1-IAC-trabalho-pratico/src/main.c delete mode 100644 Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md delete mode 100644 Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c delete mode 100644 teaching/2015.1-IAC-trabalho-pratico/INSTALL.md delete mode 100644 teaching/2015.1-IAC-trabalho-pratico/LICENSE delete mode 100644 teaching/2015.1-IAC-trabalho-pratico/README.md delete mode 100644 teaching/2015.1-IAC-trabalho-pratico/REPORT.md delete mode 100644 teaching/2015.1-IAC-trabalho-pratico/src/main.c delete mode 100644 teaching/2015.1-SO-trabalho-pratico/INSTALL.md delete mode 100644 teaching/2015.1-SO-trabalho-pratico/LICENSE delete mode 100644 teaching/2015.1-SO-trabalho-pratico/README.md delete mode 100644 teaching/2015.1-SO-trabalho-pratico/REPORT.md delete mode 100644 teaching/2015.1-SO-trabalho-pratico/src/main.c delete mode 100644 teaching/README.md diff --git a/2015.1-IAC-trabalho-pratico/INSTALL.md b/2015.1-IAC-trabalho-pratico/INSTALL.md deleted file mode 100644 index 04ef57f..0000000 --- a/2015.1-IAC-trabalho-pratico/INSTALL.md +++ /dev/null @@ -1 +0,0 @@ -#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/2015.1-IAC-trabalho-pratico/LICENSE b/2015.1-IAC-trabalho-pratico/LICENSE deleted file mode 100644 index 733c072..0000000 --- a/2015.1-IAC-trabalho-pratico/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/2015.1-IAC-trabalho-pratico/README.md b/2015.1-IAC-trabalho-pratico/README.md deleted file mode 100644 index 6aeb77a..0000000 --- a/2015.1-IAC-trabalho-pratico/README.md +++ /dev/null @@ -1,126 +0,0 @@ -

-Universidade Federal de Alagoas
-Instituto de Computação
-

- -#Trabalho Prático AB2 - -Disciplina: Introdução à Computação
-Semestre letivo: 2015.1
-Professor: André Lage Freitas
- -## Objetivo - -Compreender o consumo dos recursos do computador pelos processos. Investigar a utilização da UCP e da memória pelos processos através de experimentos. Experimentar a gestão de processos. - -## Especificação - -**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. - -O trabalho consiste em escrever um programa que crie e monitore a execução de um processo do sistema operacional. A criação de um processo UNIX é feito pela chamada de sistema [fork](), que cria um processo filho dentro do processo que o executa (processo pai). - -O exemplo no arquivo ```main.c```, adaptado de [1], mostra como esse procedimento é feito. - -A equipe deve estudar esse código, re-escrevê-lo e adaptá-lo conforme as instruções escritas nos TODOs; ver dentro dos comentários do programa. - - -* Exemplo de código com utilização intensa da UCP: - -``` -for (;;) {} -``` - -* Exemplo de código com utilização intensa da UCP e da memória: - -``` -for (;;) { - malloc(sizeof(100000)); -} -``` - - -## Relatório - -Deverá ser entregue um relatório feito em [Markdown](https://en.wikipedia.org/wiki/Markdown), com **mínimo de 600 e máximo de 1.000 palavras**. O relatório deverá utilizar o modelo ```REPORT.md``` como especificado dentro do modelo. - - -## Controle de versão - -A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. - -Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. - -## Linguagem de programação - -O programa deve ser implementado na linguagem de programação **C** obedecendo os seguintes critérios: - -* código sob o padrão ANSI C; -* utilização dos compiladores gcc ou g++; -* bibliotecas externas deve ser entregues junto com o código; -* os comandos completos para compilação do programa devem ser indicados; -* se o comando não for indicado, o seguinte comando será utilizado: - -``` -gcc -o bin main.c -``` - -* se for utilizado algum programa para automação de compilação, os comandos devem ser indicados; - * os programas de automação aceitos são o [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). - -## Sistema operacional - -O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). - -Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. - -Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu programa. - -## Critérios de Correção - - -* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: - * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. - * Conteúdo (**16,0 pontos**): - * **10,0 pontos**: se o programa compila, executa e funciona como especificado; - * **6,0 pontos**: relatório, sendo 3 pontos para cada seção da Seção Discussão. - -* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. -* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. - -### Pontuação extra - -O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. - -O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. - - -### Plágio - -A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). - - -## Entrega do trabalho - -### Forma - -O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **filipebatista** (no) **ic ufal br** - - -Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. - -A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. - -### Prazos - -O prazo de entrega sem atraso é o dia **20/10/15**. - -Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. - - -## Referências - -[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. - -## Disclaimer - -Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e está licenciado sob a licença _GNU General Public License v3.0_. diff --git a/2015.1-IAC-trabalho-pratico/REPORT.md b/2015.1-IAC-trabalho-pratico/REPORT.md deleted file mode 100644 index 16e5696..0000000 --- a/2015.1-IAC-trabalho-pratico/REPORT.md +++ /dev/null @@ -1,26 +0,0 @@ -# Identificação - -* Página do repositório do trabalho ([link GitHub](TODO)) - -* Discente 1 - * Nome: TODO - * Matrícula: TODO -* Discente 2 - * Nome: TODO - * Matrícula: TODO - -# Discussão - -* TODO: Em cada seção: - * explicar e discutir sobre o comportamento do programa para cada experimento; - * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); - * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. - - -## Utilização intensa da UCP - - -## Utilização intensa da UCP e memória - \ No newline at end of file diff --git a/2015.1-IAC-trabalho-pratico/src/main.c b/2015.1-IAC-trabalho-pratico/src/main.c deleted file mode 100644 index c0df132..0000000 --- a/2015.1-IAC-trabalho-pratico/src/main.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include -#include - -int main (int argc, char *argv[], char *envp[]) { - -int pid ; /* identificador de processo */ - -pid = fork () ; /* replicação do processo */ - -if ( pid < 0 ) { /* se fork não funcionou */ - perror ("Erro: ") ; - exit (-1) ; /* encerra o processo com código de erro -1 */ -} -else if( pid > 0 ) /* se sou o processo pai*/ -{ - //TODO guarde a cada segundo o consumo de memória (em Kilobytes) e CPU (em porcentagem) do processo filho - //TODO após 10 segundos de execução, mate o proceso filho -} -else /* senão, sou o processo filho*/ -{ - //TODO se argv[1] for igual a 'cpu', executar código com utilização intensa da UCP - //TODO se argv[1] for igual a 'cpu-mem', executar código com utilização intensa da UCP e da memória: - -} -perror ("Erro: ") ; /* execve não funcionou */ - -printf ("Tchau !\n") ; -exit(0) ; /* encerra o processo com sucesso (código 0) */ - -} \ No newline at end of file diff --git a/2015.1-SD-trabalho-pratico/README.ipynb b/2015.1-SD-trabalho-pratico/README.ipynb deleted file mode 100644 index 37fd815..0000000 --- a/2015.1-SD-trabalho-pratico/README.ipynb +++ /dev/null @@ -1,261 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "

\n", - "Universidade Federal de Alagoas
\n", - "\n", - "Instituto de Computação
\n", - "\n", - "

\n", - "\n", - "#Trabalho Prático AB2\n", - "\n", - "Disciplina: Sistemas Distribuídos\n", - "\n", - "Semestre letivo: 2015.1\n", - "\n", - "Professor: André Lage Freitas\n", - "\n", - "## Especificação\n", - "\n", - "**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. \n", - "\n", - "Baseado(a) no exemplo a seguir de implementação do B-multicast em Julia, façam os exercícios descritos nesse documento." - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "oi!\n" - ] - } - ], - "source": [ - "function B_multicast(g,m,B_deliver)\n", - " for p in g\n", - " remotecall(p, B_deliver, m)\n", - " end\n", - "end\n", - "\n", - "# Adding 3 processes (workers)\n", - "#addprocs(3)\n", - "\n", - "# My group is composed by all workers\n", - "g = workers()\n", - "\n", - "# Multicasting \"oi!\" message to group `g` by assuming `println` as B_deliver function.\n", - "B_multicast(g,\"oi!\",println)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Exercício 1: Sincronismo (2,0 pontos)\n", - "\n", - "Adicione 100 processos com o comando `addprocs` abaixo. \n", - "\n", - "_Atenção_: sua instalação local de Julia pode não conseguir adicionar 100 processos, use a [JuliaBox](https://juliabox.org)." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1-element Array{Any,1}:\n", - " 2" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "addprocs(100)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Modifique a implementação do B-multicast para utilizar communicação síncrona." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#TODO implementação do B-multicast síncrono." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Execute as duas versões do B-multicast (síncrona e assíncrona) e compare as saídas.\n", - "\n", - "A ordem das mensagens das saídas foram as mesmas para ambas versões do B-multicast? Por quê?\n", - "\n", - "**Resposta**: _em itálico_\n", - "\n", - "\n", - "\n", - "### Exercício 2: Análise de desempenho do B-multicast (2,0 pontos)\n", - "\n", - "Meça o tempo de execução duas versões do B-multicast (síncrona e assíncrona). Dica: utilize a macro `@time`.\n", - "\n", - "* Execute 50 vezes essa medição e construa um gráfico em forma de barras:\n", - "\t* cada barra representando cada versão do B-multicast;\n", - "\t* calcule e coloque no gráfico o [intervalo de confiança](https://en.wikipedia.org/wiki/Confidence_interval) com nível de 95%.\n", - " \n", - "**Gráfico**: _por aqui_ \n", - " \n", - " \n", - "* Qual das duas versões teve o menor tempo de execução? Por quê?\n", - "\n", - "**Resposta**: _em itálico_\n", - "\n", - "\n", - "\n", - "### Exercício 3: Análise de desempenho do R-multicast (3,0 pontos)\n", - "\n", - "Implemente duas versões do algoritmo R-multicast: uma assíncrona e outra síncrona.\n", - "\n", - "* R-multicast assíncrono" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "#TODO implementação do R-multicast síncrono." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "* R-multicast assíncrono" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "#TODO implementação do R-multicast assíncrono." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "collapsed": true - }, - "source": [ - "Faça a mesma análise de desempenho para o R-multicast que você fez no Exercício 2.\n", - "\n", - "\n", - "**Gráfico**: _por aqui_ \n", - " \n", - " \n", - "* Qual das duas versões (R-multicast assíncrono e assíncrono) teve o menor tempo de execução? Por quê?\n", - "\n", - "**Resposta**: _em itálico_\n", - "\n", - "\n", - "\n", - "### Exercício 4: Análise de desempenho: B-multicast vs. R-multicast (3,0 pontos)\n", - "\n", - "Para cada uma das comparações abaixo, qual dos algoritmos teve o menor tempo de execução? Por quê?\n", - "\n", - "* B-multicast assíncrono vs. R-multicast assíncrono.\n", - " \n", - "\n", - "**Resposta**: _em itálico_ \n", - " \n", - "* B-multicast síncrono vs. R-multicast síncrono.\n", - "\n", - "\n", - "**Resposta**: _em itálico_\n", - "\n", - "## Entrega\n", - "\n", - "As respostas deverão ser entregues nos devidos campos desse arquivo, ou seja, em [Markdown](https://en.wikipedia.org/wiki/Markdown) e no formato [IJulia Notebook](https://github.com/JuliaLang/IJulia.jl).\n", - "\n", - "O programa deve ser implementado na linguagem de programação **Julia**. Seu trabalho será testado na [JuliaBox](https://juliabox.org), portanto teste seu arquivo IJulia na JulizBox antes de enviá-lo.\n", - "\n", - "\n", - "### Forma \n", - "\n", - "O arquivo IJulia Notebook deverá ser entregue ao Professor **exclusivamente por e-mail** para o seguinte endereço: **prof.alage** (no) **gmail com**\n", - "\n", - "\n", - "Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do Professor. \n", - "\n", - "A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do Professor.\n", - "\n", - "### Prazos\n", - "\n", - "O prazo de entrega sem atraso é o dia **20/10/15**.\n", - "\n", - "Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso.\n", - "\n", - "\n", - "## Pontuação extra\n", - "\n", - "O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. \n", - "\n", - "O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc.\n", - "\n", - "\n", - "**Plágio** A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf).\n", - "\n", - "## Disclaimer\n", - "\n", - "Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e está licenciado sob a licença _GNU General Public License v3.0_." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 0.3.8", - "language": "julia", - "name": "julia-0.3" - }, - "language_info": { - "name": "julia", - "version": "0.3.11" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/2015.1-SD-trabalho-pratico/README.md b/2015.1-SD-trabalho-pratico/README.md deleted file mode 100644 index d396a07..0000000 --- a/2015.1-SD-trabalho-pratico/README.md +++ /dev/null @@ -1,14 +0,0 @@ -## Instruções para acesso à especificação do trabalho - -### JuliaBox - - Baixar o arquivo `README.ipynb` e carregar no [JuliaBox](https://juliabox.org): - -1. Sign in -2. Upload -3. Clicar no arquivo `README.ipynb` - -### Instalação local - -Instale o [IJulia Notebook](https://github.com/JuliaLang/IJulia.jl) e carregue o `README.ipynb`. - diff --git a/2015.1-SO-trabalho-pratico/INSTALL.md b/2015.1-SO-trabalho-pratico/INSTALL.md deleted file mode 100644 index 04ef57f..0000000 --- a/2015.1-SO-trabalho-pratico/INSTALL.md +++ /dev/null @@ -1 +0,0 @@ -#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/2015.1-SO-trabalho-pratico/LICENSE b/2015.1-SO-trabalho-pratico/LICENSE deleted file mode 100644 index 733c072..0000000 --- a/2015.1-SO-trabalho-pratico/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/2015.1-SO-trabalho-pratico/README.md b/2015.1-SO-trabalho-pratico/README.md deleted file mode 100644 index 5e68816..0000000 --- a/2015.1-SO-trabalho-pratico/README.md +++ /dev/null @@ -1,228 +0,0 @@ -

-Universidade Federal de Alagoas
-Instituto de Computação
-

- -#Trabalho Prático AB2 - -Disciplina: Sistemas Operacionais
-Semestre letivo: 2015.1
-Professor: André Lage Freitas
- -## Objetivo - -Simulador o Escalonador de Tarefas de um Sistema Operacional. - -## Especificação - -**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. - -O trabalho consiste em simular o escalonamento de um conjunto de tarefas usando os seguintes algoritmos de escalonamento de tarefas [1]: - -* **FCFS** (First Come, First Served) -* **Round-Robin** com quantum = **2s** - * Observação: quem implementar com prioridade, será considerado como pontuação extra (até 1,0 ponto) - - -### Entrada do Programa - -#### ```args[1]``` - -O programa deverá ler os dados dos processos a partir de um arquivo passado como o primeiro parâmetro (```args[1]```). Cada linha da entrada corresponde a um processo, com os seguintes dados fornecidos como inteiros separados por um ou mais espaços em branco: - -* data de criação; -* duração em segundos; -* prioridade estática (escala de prioridades positiva). - -A seguir, um exemplo de arquivo de entrada: - -``` -0 5 2 -0 2 3 -3 3 4 -1 4 1 -``` - -Nesse exemplo de entrada, o processo P1 (primeira linha) tem data de criação 0, sua execução dura 5 segundos e sua prioridade é 2. Esse formato de entrada deverá ser respeitado, pois o simulador será testado com outros dados de entrada. - -Observe que essa listagem não precisa necessariamente estar ordenada por data de criação de cada processo. Entretanto, o programa deverá ser capaz de identificar cada tempo de ingresso e escalonar o processo corretamente. - -**O programa deverá aceitar, no mínimo, 9 processos** nomeados de P1 à P9, ordenados com base no tempo de ingresso no sistema onde P1 ingressou antes de P2 que ingressou antes de P3 e, assim, sucessivamente. - - -#### ```args[2]``` - -O segundo parâmetro de entrada deve ser a política de escalonamento de tarefas: - -* ```fcfc``` FCFS (First Come, First Served) -* ```rr``` Round-Robin com quantum = **2s**, com prioridade - -#### Exemplos de compilação e execução em C - -O exemplo a seguir compila e executa o programa com arquivo de entrada ```input.txt``` e simulando a política FCFS: - -``` -$ gcc -o bin main.c -$ ./bin input.txt fcfs -... -``` - -### Saída do Programa - -O simulador deverá produzir **o diagrama de tempo da execução** gravado em arquivo. Esse arquivo deverá ser nomeado de ```output```. - -O diagrama de tempo de cada execução deve ser gerado na vertical, de cima para baixo (uma linha por segundo), conforme mostra o exemplo a seguir: - -``` -tempo P1 P2 P3 P4 - 0- 1 ## -- - 1- 2 ## -- -- - 2- 3 -- ## -- - 3- 4 -- ## -- -- - 4- 5 -- ## -- - 5- 6 -- ## -- - 6- 7 ## -- -- - 7- 8 ## -- -- - 8- 9 -- -- ## - 9-10 -- -- ## -10-11 -- ## -- -11-12 -- ## -- -12-13 ## -- -13-14 ## -``` - -### Implementação - -Sugestão de implementação (pseudo-código que deve ser ajustado para cada política): - -``` -início - lê dados das tarefas da entrada padrão - imprime cabeçalho do diagrama - - t = 0 - enquanto t < tmax - - se há uma tarefa rodando - se a tarefa rodando chegou ao fim da execução - migra a tarefa para o estado terminado - libera o processador - senão - se a tarefa rodando chegou ao fim de seu quantum - migra a tarefa para a fila de prontos - libera o processador - fim se - fim se - - para cada tarefa i - se a tarefa i inicia agora (em t) - coloca a tarefa na fila de prontos - fim se - fim para - - se o processador estiver livre - se houver tarefa na fila de prontas - escolhe uma tarefa da fila de prontas - migra essa tarefa para o estado "rodando" - fim se - fim se - - imprime linha do diagrama com o estado de cada tarefa - - incrementa o tempo (t++) - incrementa contadores da tarefa corrente (tempo de vida e de quantum) - - fim enquanto - - calcula e imprime tempos médios -fim -``` - -Sugere-se definir para cada tarefa: - -* identificador; -* datas de inicio e de conclusão; -* duração (tempo necessário no processador); -* estado atual (nova, pronta, rodando, terminada, ...); -* tempo já executado (total e no quantum atual); -* (outros campos podem ser necessários para algumas políticas). - -## Controle de versão - -A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. - -Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. - -## Linguagem de programação - -O trabalho poderá ser implementado na linguagem de programação desejada pelo discente desde que: - -* o compilador seja software livre e/ou gratuito e esteja disponível para instalação no sistema operacional definido nessa especificação; -* o(a) discente informe como instalar o compilador da linguagem no sistema operacional definido nessa especificação; -* se a linguagem de programação for **C**, os critérios são: - * código sob o padrão ANSI C; - * utilização dos compiladores gcc ou g++; -* bibliotecas externas deve ser entregues junto com o código; -* os comandos completos para compilação do programa devem ser indicados no arquivo ```INSTALL.md```; - * se for utilizado algum programa para automação de compilação ou [IDE](https://pt.wikipedia.org/wiki/Ambiente_de_desenvolvimento_integrado), os comandos para instalação do programa devem ser indicados; - * exemplos de programas de automação: [maven](http://maven.apache.org), [ant](http://ant.apache.org), [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). - - -## Sistema operacional - -O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). - -Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. - -Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu código devem ser indicados no arquivo ```INSTALL.md```. - -## Critérios de Correção - -* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: - * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. - * Conteúdo (**16,0 pontos**): se o programa funciona de acordo com a sua especificação: - * **8,0 pontos**: simula corretamente a política de escalonamento **FCFS** (First Come, First Served); - * **8,0 pontos**: simula corretamente a política de escalonamento **Round-Robin** com quantum = **2s**, com prioridade. - -* Cada equipe deverá conter **dois** discentes no máximo. -* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. -* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. - -### Pontuação extra - -O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. - -O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. - - -### Plágio - -A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). - - -## Entrega do trabalho - -### Forma - -O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **thiagopeixoto** (no) **linux com** - - -Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. - -A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. - -### Prazos - - -O prazo de entrega sem atraso é o dia **20/10/15**. - -Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. - - -## Referências - -[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. - -## Disclaimer - -Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e foi baseado no projeto Algoritmos de Escalonamento da [disciplina IF66D](http://dainf.ct.utfpr.edu.br/~maziero/doku.php/so:algoritmos_de_escalonamento) (DAINF-UFTPR), de autoria do Prof. Maziero, que está licenciado sob a licença [Creative Commons BY-NC-SA](http://creativecommons.org/licenses/by-nc-sa/3.0/br/). \ No newline at end of file diff --git a/2015.1-SO-trabalho-pratico/REPORT.md b/2015.1-SO-trabalho-pratico/REPORT.md deleted file mode 100644 index e5f242c..0000000 --- a/2015.1-SO-trabalho-pratico/REPORT.md +++ /dev/null @@ -1,25 +0,0 @@ -# Identificação - -* Página do repositório do trabalho ([link GitHub](TODO)) - -* Discente 1 - * Nome: TODO - * Matrícula: TODO -* Discente 2 - * Nome: TODO - * Matrícula: TODO - -# Discussão - -* TODO: Em cada seção: - * explicar e discutir sobre o comportamento do programa para cada experimento; - * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); - * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. - - -## Utilização intensa da UCP - - -## Utilização intensa da UCP e memória diff --git a/Git/2015.1-IAC-trabalho-pratico/src/main.c b/Git/2015.1-IAC-trabalho-pratico/src/main.c deleted file mode 100644 index d608e0a..0000000 --- a/Git/2015.1-IAC-trabalho-pratico/src/main.c +++ /dev/null @@ -1,57 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int main (int argc, char *argv[], char *envp[]) { - - int pid ; //process identifier - int i; - char cpu[100]; //command of cpu usage - char mem[100]; //command of memory usage - char cm[100]; //command used to kill the process - - pid = fork() ; //process replication - - if (pid < 0) { //if fork doesn't work - perror ("Erro: ") ; - exit (-1) ; //terminates the process with error code -1 - } - else if(pid > 0) //if I'm the father process - { - //this 3 sprintf functions format the used commands - sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); - sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); - sprintf(cm, "%s%d", "kill -9 ", pid); - - for(i = 0; i < 10; i++) { - printf("CPU(%c)\n", 37); - system(cpu); //running the cpu usage command - printf("Mem\n"); - system(mem); //running the memory usage command - printf("----\n"); - sleep(1); //waits one second - } - system(cm); //running the killing command - } - else //else I'm the son process - { - if(strcmp(argv[1], "cpu") == 0) { - for(;;) { - } - } - - if(strcmp(argv[1], "cpu-mem") == 0) { - for (;;) { - malloc(sizeof(100000)); - } - } - } - perror ("Erro: ") ; //execve didn't work - - printf ("Tchau !\n") ; - exit(0) ; //terminates the process with success (code 0) */ - -} diff --git a/Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md deleted file mode 100644 index e2e58fc..0000000 --- a/Git/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ /dev/null @@ -1,26 +0,0 @@ -# Identificação - -* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching)) - -* Discente 1 - * Nome: Leandro martins de Freitas - * Matrícula: 15111982 -* Discente 2 - * Nome: TODO - * Matrícula: TODO - -# Discussão - -* TODO: Em cada seção: - * explicar e discutir sobre o comportamento do programa para cada experimento; - * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); - * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. - - -## Utilização intensa da UCP - - -## Utilização intensa da UCP e memória - diff --git a/Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c deleted file mode 100644 index 368acf6..0000000 --- a/Git/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ /dev/null @@ -1,58 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int main (int argc, char *argv[], char *envp[]) { - - int pid ; //process identifier - int i; - char cpu[100]; //command of cpu usage - char mem[100]; //command of memory usage - char cm[100]; //command used to kill the process - - pid = fork() ; //process replication - - if (pid < 0) { //if fork doesn't work - perror ("Erro: ") ; - exit (-1) ; //terminates the process with error code -1 - } - else if(pid > 0) //if I'm the father process - { - //this 3 sprintf functions format the used commands - sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); - sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); - sprintf(cm, "%s%d", "kill -9 ", pid); - - for(i = 0; i < 10; i++) { - printf("CPU(%c)\n", 37); - system(cpu); //running the cpu usage command - printf("Mem\n"); - system(mem); //running the memory usage command - printf("----\n"); - sleep(1); //waits one second - } - system(cm); //running the killing command - } - else //else I'm the son process - { - if(strcmp(argv[1], "cpu") == 0) { - for(;;) { - } - } - - if(strcmp(argv[1], "cpu-mem") == 0) { - for (;;) { - malloc(sizeof(100000)); - } - } - } - perror ("Erro: ") ; //execve didn't work - - printf ("Tchau !\n") ; - exit(0) ; //terminates the process with success (code 0) */ - -} - diff --git a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md deleted file mode 100644 index 04ef57f..0000000 --- a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md +++ /dev/null @@ -1 +0,0 @@ -#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/teaching/2015.1-IAC-trabalho-pratico/LICENSE b/teaching/2015.1-IAC-trabalho-pratico/LICENSE deleted file mode 100644 index 733c072..0000000 --- a/teaching/2015.1-IAC-trabalho-pratico/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/teaching/2015.1-IAC-trabalho-pratico/README.md b/teaching/2015.1-IAC-trabalho-pratico/README.md deleted file mode 100644 index 9f80ae1..0000000 --- a/teaching/2015.1-IAC-trabalho-pratico/README.md +++ /dev/null @@ -1,126 +0,0 @@ -

-Universidade Federal de Alagoas
-Instituto de Computação
-

- -#Trabalho Prático AB2 - -Disciplina: Sistemas Operacionais
-Semestre letivo: 2015.1
-Professor: André Lage Freitas
- -## Objetivo - -Compreender o consumo dos recursos do computador pelos processos. Investigar a utilização da UCP e da memória pelos processos através de experimentos. Experimentar a gestão de processos. - -## Especificação - -**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. - -O trabalho consiste em escrever um programa que crie e monitore a execução de um processo do sistema operacional. A criação de um processo UNIX é feito pela chamada de sistema [fork](), que cria um processo filho dentro do processo que o executa (processo pai). - -O exemplo no arquivo ```main.c```, adaptado de [1], mostra como esse procedimento é feito. - -A equipe deve estudar esse código, re-escrevê-lo e adaptá-lo conforme as instruções escritas nos TODOs; ver dentro dos comentários do programa. - - -* Exemplo de código com utilização intensa da UCP: - -``` -for (;;) {} -``` - -* Exemplo de código com utilização intensa da UCP e da memória: - -``` -for (;;) { - malloc(sizeof(100000)); -} -``` - - -## Relatório - -Deverá ser entregue um relatório feito em [Markdown](https://en.wikipedia.org/wiki/Markdown), com **mínimo de 600 e máximo de 1.000 palavras**. O relatório deverá utilizar o modelo ```REPORT.md``` como especificado dentro do modelo. - - -## Controle de versão - -A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. - -Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. - -## Linguagem de programação - -O programa deve ser implementado na linguagem de programação **C** obedecendo os seguintes critérios: - -* código sob o padrão ANSI C; -* utilização dos compiladores gcc ou g++; -* bibliotecas externas deve ser entregues junto com o código; -* os comandos completos para compilação do programa devem ser indicados; -* se o comando não for indicado, o seguinte comando será utilizado: - -``` -gcc -o bin main.c -``` - -* se for utilizado algum programa para automação de compilação, os comandos devem ser indicados; - * os programas de automação aceitos são o [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). - -## Sistema operacional - -O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). - -Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. - -Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu programa. - -## Critérios de Correção - - -* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: - * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. - * Conteúdo (**16,0 pontos**): - * **10,0 pontos**: se o programa compila, executa e funciona como especificado; - * **6,0 pontos**: relatório, sendo 3 pontos para cada seção da Seção Discussão. - -* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. -* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. - -### Pontuação extra - -O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. - -O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. - - -### Plágio - -A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). - - -## Entrega do trabalho - -### Forma - -O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **filipebatista** (no) **ic ufal br** - - -Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. - -A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. - -### Prazos - -O prazo de entrega sem atraso é o dia **20/10/15**. - -Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. - - -## Referências - -[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. - -## Disclaimer - -Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e está licenciado sob a licença _GNU General Public License v3.0_. diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md deleted file mode 100644 index e2e58fc..0000000 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ /dev/null @@ -1,26 +0,0 @@ -# Identificação - -* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching)) - -* Discente 1 - * Nome: Leandro martins de Freitas - * Matrícula: 15111982 -* Discente 2 - * Nome: TODO - * Matrícula: TODO - -# Discussão - -* TODO: Em cada seção: - * explicar e discutir sobre o comportamento do programa para cada experimento; - * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); - * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. - - -## Utilização intensa da UCP - - -## Utilização intensa da UCP e memória - diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c deleted file mode 100644 index 368acf6..0000000 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ /dev/null @@ -1,58 +0,0 @@ -#include -#include -#include -#include -#include -#include - -int main (int argc, char *argv[], char *envp[]) { - - int pid ; //process identifier - int i; - char cpu[100]; //command of cpu usage - char mem[100]; //command of memory usage - char cm[100]; //command used to kill the process - - pid = fork() ; //process replication - - if (pid < 0) { //if fork doesn't work - perror ("Erro: ") ; - exit (-1) ; //terminates the process with error code -1 - } - else if(pid > 0) //if I'm the father process - { - //this 3 sprintf functions format the used commands - sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); - sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); - sprintf(cm, "%s%d", "kill -9 ", pid); - - for(i = 0; i < 10; i++) { - printf("CPU(%c)\n", 37); - system(cpu); //running the cpu usage command - printf("Mem\n"); - system(mem); //running the memory usage command - printf("----\n"); - sleep(1); //waits one second - } - system(cm); //running the killing command - } - else //else I'm the son process - { - if(strcmp(argv[1], "cpu") == 0) { - for(;;) { - } - } - - if(strcmp(argv[1], "cpu-mem") == 0) { - for (;;) { - malloc(sizeof(100000)); - } - } - } - perror ("Erro: ") ; //execve didn't work - - printf ("Tchau !\n") ; - exit(0) ; //terminates the process with success (code 0) */ - -} - diff --git a/teaching/2015.1-SO-trabalho-pratico/INSTALL.md b/teaching/2015.1-SO-trabalho-pratico/INSTALL.md deleted file mode 100644 index 04ef57f..0000000 --- a/teaching/2015.1-SO-trabalho-pratico/INSTALL.md +++ /dev/null @@ -1 +0,0 @@ -#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/teaching/2015.1-SO-trabalho-pratico/LICENSE b/teaching/2015.1-SO-trabalho-pratico/LICENSE deleted file mode 100644 index 733c072..0000000 --- a/teaching/2015.1-SO-trabalho-pratico/LICENSE +++ /dev/null @@ -1,675 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {one line to give the program's name and a brief idea of what it does.} - Copyright (C) {year} {name of author} - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - {project} Copyright (C) {year} {fullname} - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. - diff --git a/teaching/2015.1-SO-trabalho-pratico/README.md b/teaching/2015.1-SO-trabalho-pratico/README.md deleted file mode 100644 index 32482f6..0000000 --- a/teaching/2015.1-SO-trabalho-pratico/README.md +++ /dev/null @@ -1,226 +0,0 @@ -

-Universidade Federal de Alagoas
-Instituto de Computação
-

- -#Trabalho Prático AB2 - -Disciplina: Sistemas Operacionais
-Semestre letivo: 2015.1
-Professor: André Lage Freitas
- -## Objetivo - -Simulador o Escalonador de Tarefas de um Sistema Operacional. - -## Especificação - -**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. - -O trabalho consiste em simular o escalonamento de um conjunto de tarefas usando os seguintes algoritmos de escalonamento de tarefas [1]: - -* **FCFS** (First Come, First Served) -* **Round-Robin** com quantum = **2s**, com prioridade - - -### Entrada do Programa - -#### ```args[1]``` - -O programa deverá ler os dados dos processos a partir de um arquivo passado como o primeiro parâmetro (```args[1]```). Cada linha da entrada corresponde a um processo, com os seguintes dados fornecidos como inteiros separados por um ou mais espaços em branco: - -* data de criação; -* duração em segundos; -* prioridade estática (escala de prioridades positiva). - -A seguir, um exemplo de arquivo de entrada: - -``` -0 5 2 -0 2 3 -3 3 4 -1 4 1 -``` - -Nesse exemplo de entrada, o processo P1 (primeira linha) tem data de criação 0, sua execução dura 5 segundos e sua prioridade é 2. Esse formato de entrada deverá ser respeitado, pois o simulador será testado com outros dados de entrada. - -Observe que essa listagem não precisa necessariamente estar ordenada por data de criação de cada processo. Entretanto, o programa deverá ser capaz de identificar cada tempo de ingresso e escalonar o processo corretamente. - -**O programa deverá aceitar, no mínimo, 9 processos** nomeados de P1 à P9, ordenados com base no tempo de ingresso no sistema onde P1 ingressou antes de P2 que ingressou antes de P3 e, assim, sucessivamente. - - -#### ```args[2]``` - -O segundo parâmetro de entrada deve ser a política de escalonamento de tarefas: - -* ```fcfc``` FCFS (First Come, First Served) -* ```rr``` Round-Robin com quantum = **2s**, com prioridade - -#### Exemplos de compilação e execução em C - -O exemplo a seguir compila e executa o programa com arquivo de entrada ```input.txt``` e simulando a política FCFS: - -``` -$ gcc -o bin main.c -$ ./bin input.txt fcfs -... -``` - -### Saída do Programa - -O simulador deverá produzir **o diagrama de tempo da execução** gravado em arquivo. Esse arquivo deverá ser nomeado de ```output```. - -O diagrama de tempo de cada execução deve ser gerado na vertical, de cima para baixo (uma linha por segundo), conforme mostra o exemplo a seguir: - -``` -tempo P1 P2 P3 P4 - 0- 1 ## -- - 1- 2 ## -- -- - 2- 3 -- ## -- - 3- 4 -- ## -- -- - 4- 5 -- ## -- - 5- 6 -- ## -- - 6- 7 ## -- -- - 7- 8 ## -- -- - 8- 9 -- -- ## - 9-10 -- -- ## -10-11 -- ## -- -11-12 -- ## -- -12-13 ## -- -13-14 ## -``` - -### Implementação - -Sugestão de implementação (pseudo-código que deve ser ajustado para cada política): - -``` -início - lê dados das tarefas da entrada padrão - imprime cabeçalho do diagrama - - t = 0 - enquanto t < tmax - - se há uma tarefa rodando - se a tarefa rodando chegou ao fim da execução - migra a tarefa para o estado terminado - libera o processador - senão - se a tarefa rodando chegou ao fim de seu quantum - migra a tarefa para a fila de prontos - libera o processador - fim se - fim se - - para cada tarefa i - se a tarefa i inicia agora (em t) - coloca a tarefa na fila de prontos - fim se - fim para - - se o processador estiver livre - se houver tarefa na fila de prontas - escolhe uma tarefa da fila de prontas - migra essa tarefa para o estado "rodando" - fim se - fim se - - imprime linha do diagrama com o estado de cada tarefa - - incrementa o tempo (t++) - incrementa contadores da tarefa corrente (tempo de vida e de quantum) - - fim enquanto - - calcula e imprime tempos médios -fim -``` - -Sugere-se definir para cada tarefa: - -* identificador; -* datas de inicio e de conclusão; -* duração (tempo necessário no processador); -* estado atual (nova, pronta, rodando, terminada, ...); -* tempo já executado (total e no quantum atual); -* (outros campos podem ser necessários para algumas políticas). - -## Controle de versão - -A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. - -Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. - -## Linguagem de programação - -O trabalho poderá ser implementado na linguagem de programação desejada pelo discente desde que: - -* o compilador seja software livre e/ou gratuito e esteja disponível para instalação no sistema operacional definido nessa especificação; -* o(a) discente informe como instalar o compilador da linguagem no sistema operacional definido nessa especificação; -* se a linguagem de programação for **C**, os critérios são: - * código sob o padrão ANSI C; - * utilização dos compiladores gcc ou g++; -* bibliotecas externas deve ser entregues junto com o código; -* os comandos completos para compilação do programa devem ser indicados no arquivo ```INSTALL.md```; - * se for utilizado algum programa para automação de compilação ou [IDE](https://pt.wikipedia.org/wiki/Ambiente_de_desenvolvimento_integrado), os comandos para instalação do programa devem ser indicados; - * exemplos de programas de automação: [maven](http://maven.apache.org), [ant](http://ant.apache.org), [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). - - -## Sistema operacional - -O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). - -Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. - -Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu código devem ser indicados no arquivo ```INSTALL.md```. - -## Critérios de Correção - -* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: - * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. - * Conteúdo (**16,0 pontos**): se o programa funciona de acordo com a sua especificação: - * **8,0 pontos**: simula corretamente a política de escalonamento **FCFS** (First Come, First Served); - * **8,0 pontos**: simula corretamente a política de escalonamento **Round-Robin** com quantum = **2s**, com prioridade. - -* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. -* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. - -### Pontuação extra - -O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. - -O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. - - -### Plágio - -A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). - - -## Entrega do trabalho - -### Forma - -O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **thiagopeixoto** (no) **linux com** - - -Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. - -A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. - -### Prazos - - -O prazo de entrega sem atraso é o dia **20/10/15**. - -Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. - - -## Referências - -[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. - -## Disclaimer - -Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e foi baseado no projeto Algoritmos de Escalonamento da [disciplina IF66D](http://dainf.ct.utfpr.edu.br/~maziero/doku.php/so:algoritmos_de_escalonamento) (DAINF-UFTPR), de autoria do Prof. Maziero, que está licenciado sob a licença [Creative Commons BY-NC-SA](http://creativecommons.org/licenses/by-nc-sa/3.0/br/). \ No newline at end of file diff --git a/teaching/2015.1-SO-trabalho-pratico/REPORT.md b/teaching/2015.1-SO-trabalho-pratico/REPORT.md deleted file mode 100644 index e5f242c..0000000 --- a/teaching/2015.1-SO-trabalho-pratico/REPORT.md +++ /dev/null @@ -1,25 +0,0 @@ -# Identificação - -* Página do repositório do trabalho ([link GitHub](TODO)) - -* Discente 1 - * Nome: TODO - * Matrícula: TODO -* Discente 2 - * Nome: TODO - * Matrícula: TODO - -# Discussão - -* TODO: Em cada seção: - * explicar e discutir sobre o comportamento do programa para cada experimento; - * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); - * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. - - -## Utilização intensa da UCP - - -## Utilização intensa da UCP e memória diff --git a/teaching/2015.1-SO-trabalho-pratico/src/main.c b/teaching/2015.1-SO-trabalho-pratico/src/main.c deleted file mode 100644 index c0df132..0000000 --- a/teaching/2015.1-SO-trabalho-pratico/src/main.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include -#include -#include -#include - -int main (int argc, char *argv[], char *envp[]) { - -int pid ; /* identificador de processo */ - -pid = fork () ; /* replicação do processo */ - -if ( pid < 0 ) { /* se fork não funcionou */ - perror ("Erro: ") ; - exit (-1) ; /* encerra o processo com código de erro -1 */ -} -else if( pid > 0 ) /* se sou o processo pai*/ -{ - //TODO guarde a cada segundo o consumo de memória (em Kilobytes) e CPU (em porcentagem) do processo filho - //TODO após 10 segundos de execução, mate o proceso filho -} -else /* senão, sou o processo filho*/ -{ - //TODO se argv[1] for igual a 'cpu', executar código com utilização intensa da UCP - //TODO se argv[1] for igual a 'cpu-mem', executar código com utilização intensa da UCP e da memória: - -} -perror ("Erro: ") ; /* execve não funcionou */ - -printf ("Tchau !\n") ; -exit(0) ; /* encerra o processo com sucesso (código 0) */ - -} \ No newline at end of file diff --git a/teaching/README.md b/teaching/README.md deleted file mode 100644 index 529064c..0000000 --- a/teaching/README.md +++ /dev/null @@ -1,5 +0,0 @@ -#Teaching - -##Naming - -[year].[semester]-[class]-[subject] \ No newline at end of file From 991a7ffeb270d38625406097a13b95d575678300 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 8 Oct 2015 22:48:34 -0300 Subject: [PATCH 06/29] =?UTF-8?q?C=C3=B3digo=20implementado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/REPORT.md | 26 +++++++++ .../2015.1-IAC-trabalho-pratico/src/main.c | 58 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 teaching/2015.1-IAC-trabalho-pratico/REPORT.md create mode 100644 teaching/2015.1-IAC-trabalho-pratico/src/main.c diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md new file mode 100644 index 0000000..e2e58fc --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -0,0 +1,26 @@ +# Identificação + +* Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching)) + +* Discente 1 + * Nome: Leandro martins de Freitas + * Matrícula: 15111982 +* Discente 2 + * Nome: TODO + * Matrícula: TODO + +# Discussão + +* TODO: Em cada seção: + * explicar e discutir sobre o comportamento do programa para cada experimento; + * sempre referenciar o código fonte e o gráfico do experimento realizado; + * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; + * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); + * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. + + +## Utilização intensa da UCP + + +## Utilização intensa da UCP e memória + diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c new file mode 100644 index 0000000..368acf6 --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -0,0 +1,58 @@ +#include +#include +#include +#include +#include +#include + +int main (int argc, char *argv[], char *envp[]) { + + int pid ; //process identifier + int i; + char cpu[100]; //command of cpu usage + char mem[100]; //command of memory usage + char cm[100]; //command used to kill the process + + pid = fork() ; //process replication + + if (pid < 0) { //if fork doesn't work + perror ("Erro: ") ; + exit (-1) ; //terminates the process with error code -1 + } + else if(pid > 0) //if I'm the father process + { + //this 3 sprintf functions format the used commands + sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); + sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); + sprintf(cm, "%s%d", "kill -9 ", pid); + + for(i = 0; i < 10; i++) { + printf("CPU(%c)\n", 37); + system(cpu); //running the cpu usage command + printf("Mem\n"); + system(mem); //running the memory usage command + printf("----\n"); + sleep(1); //waits one second + } + system(cm); //running the killing command + } + else //else I'm the son process + { + if(strcmp(argv[1], "cpu") == 0) { + for(;;) { + } + } + + if(strcmp(argv[1], "cpu-mem") == 0) { + for (;;) { + malloc(sizeof(100000)); + } + } + } + perror ("Erro: ") ; //execve didn't work + + printf ("Tchau !\n") ; + exit(0) ; //terminates the process with success (code 0) */ + +} + From 6b60ed7f5d830e73f64585eae2e486916ea13551 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 8 Oct 2015 22:50:19 -0300 Subject: [PATCH 07/29] =?UTF-8?q?Adi=C3=A7=C3=A3o=20dos=20demais=20arquivo?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/INSTALL.md | 1 + teaching/2015.1-IAC-trabalho-pratico/LICENSE | 675 ++++++++++++++++++ .../2015.1-IAC-trabalho-pratico/README.md | 126 ++++ 3 files changed, 802 insertions(+) create mode 100644 teaching/2015.1-IAC-trabalho-pratico/INSTALL.md create mode 100644 teaching/2015.1-IAC-trabalho-pratico/LICENSE create mode 100644 teaching/2015.1-IAC-trabalho-pratico/README.md diff --git a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md new file mode 100644 index 0000000..04ef57f --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md @@ -0,0 +1 @@ +#TODO Instruções para compilação e execução do programa \ No newline at end of file diff --git a/teaching/2015.1-IAC-trabalho-pratico/LICENSE b/teaching/2015.1-IAC-trabalho-pratico/LICENSE new file mode 100644 index 0000000..733c072 --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/LICENSE @@ -0,0 +1,675 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {project} Copyright (C) {year} {fullname} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + diff --git a/teaching/2015.1-IAC-trabalho-pratico/README.md b/teaching/2015.1-IAC-trabalho-pratico/README.md new file mode 100644 index 0000000..6aeb77a --- /dev/null +++ b/teaching/2015.1-IAC-trabalho-pratico/README.md @@ -0,0 +1,126 @@ +

+Universidade Federal de Alagoas
+Instituto de Computação
+

+ +#Trabalho Prático AB2 + +Disciplina: Introdução à Computação
+Semestre letivo: 2015.1
+Professor: André Lage Freitas
+ +## Objetivo + +Compreender o consumo dos recursos do computador pelos processos. Investigar a utilização da UCP e da memória pelos processos através de experimentos. Experimentar a gestão de processos. + +## Especificação + +**Importante**. Leia atentamente essa seção pois só serão aceitos trabalhos que obedecerem as a especificações a seguir. + +O trabalho consiste em escrever um programa que crie e monitore a execução de um processo do sistema operacional. A criação de um processo UNIX é feito pela chamada de sistema [fork](), que cria um processo filho dentro do processo que o executa (processo pai). + +O exemplo no arquivo ```main.c```, adaptado de [1], mostra como esse procedimento é feito. + +A equipe deve estudar esse código, re-escrevê-lo e adaptá-lo conforme as instruções escritas nos TODOs; ver dentro dos comentários do programa. + + +* Exemplo de código com utilização intensa da UCP: + +``` +for (;;) {} +``` + +* Exemplo de código com utilização intensa da UCP e da memória: + +``` +for (;;) { + malloc(sizeof(100000)); +} +``` + + +## Relatório + +Deverá ser entregue um relatório feito em [Markdown](https://en.wikipedia.org/wiki/Markdown), com **mínimo de 600 e máximo de 1.000 palavras**. O relatório deverá utilizar o modelo ```REPORT.md``` como especificado dentro do modelo. + + +## Controle de versão + +A equipe deverá fazer um [git fork](https://help.github.com/articles/fork-a-repo/) desse [projeto](https://github.com/alage/2015.1-IAC-trabalho-pratico) e utilizá-lo para a execução do trabalho. + +Todos os dados necessários para a reprodução do experimento devem estar no repositório com seus passos descritos no arquivo ```INSTALL.md``` em Markdown. As instruções do arquivo ```INSTALL.md``` serão utilizadas para compilar e executar os códigos. + +## Linguagem de programação + +O programa deve ser implementado na linguagem de programação **C** obedecendo os seguintes critérios: + +* código sob o padrão ANSI C; +* utilização dos compiladores gcc ou g++; +* bibliotecas externas deve ser entregues junto com o código; +* os comandos completos para compilação do programa devem ser indicados; +* se o comando não for indicado, o seguinte comando será utilizado: + +``` +gcc -o bin main.c +``` + +* se for utilizado algum programa para automação de compilação, os comandos devem ser indicados; + * os programas de automação aceitos são o [make](https://www.gnu.org/software/make/) e o [cmake](http://www.cmake.org). + +## Sistema operacional + +O programa será testado no sistema operacional GNU/Linux, distribuição Ubuntu 14.04.2 LTS. Essa distribuição pode ser obtida gratuitamente [nessa página Web](http://www.ubuntu.com/download/desktop). + +Usuários de outros sistemas operacionais podem utilizar gratuitamente a [VirtualBox](https://www.virtualbox.org/wiki/Downloads) para instalação do Ubuntu. + +Em suma, entendam que quem corrigirá o seu trabalho utilizará outro ambiente computacional. Logo, forneçam as instruções e programas necessários para a compilação e execução do seu programa. + +## Critérios de Correção + + +* A nota máxima atribuída será de 20,0 pontos distribuídos da seguinte maneira: + * Organização (**4,0 pontos**): código bem escrito, padronizado e comentado. + * Conteúdo (**16,0 pontos**): + * **10,0 pontos**: se o programa compila, executa e funciona como especificado; + * **6,0 pontos**: relatório, sendo 3 pontos para cada seção da Seção Discussão. + +* Cada equipe deverá distribuir os pontos entre os membros da equipe sendo a nota individual de cada membro não poderá ser maior que 10,0 pontos. +* Após a divulgação da nota do trabalho pelo Monitor da disciplina, a equipe terá **48h** para enviar as notas individuais para o Monitor por e-mail. + +### Pontuação extra + +O(a) discente que realizar mais tarefas, além do que foi especificado neste trabalho, o professor atribuirá de 0,5 a 1,0 ponto extra a depender da relevância da contribuição no programa. O critério será decidido pelo professor. + +O(a) discente deve indicar qual é a tarefa executada. Por exemplo, adição de funcionalidades, armazenamento de dados em arquivo, documentação de código, comentários em inglês sem erros ortográficos, etc. + + +### Plágio + +A nota zero será atribuída caso haja qualquer tipo de cópia parcial ou integral assim como as devidas medidas legais. Leia a [cartilha sobre plágio](http://www.noticias.uff.br/arquivos/cartilha-sobre-plagio-academico.pdf). + + +## Entrega do trabalho + +### Forma + +O código-fonte deverá ser entregue **exclusivamente por e-mail** para o monitor da disciplina para o seguinte endereço: **filipebatista** (no) **ic ufal br** + + +Será registrada como data de recebimento do trabalho a data indicada pelo servidor de e-mail do monitor. + +A responsabilidade sobre a integridade do arquivo contendo trabalho é exclusivamente dos discentes. Serão ignorados os trabalhos cujos arquivos não conseguirem ser abertos ou se o e-mail não chegar à caixa de entrada de e-mail do monitor. + +### Prazos + +O prazo de entrega sem atraso é o dia **20/10/15**. + +Trabalhos entregues com atraso serão aceitos, no máximo, até o o dia **22/10/15**. Serão descontados 5% da nota obtida por dia de atraso. + + +## Referências + +[1] Maziero, Carlos A. [Sistemas Operacionais: Conceitos e Mecanismos](http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-livro.pdf). 2013. + +## Disclaimer + +Esse material foi elaborado pelo [Prof. André Lage Freitas](https://sites.google.com/a/ic.ufal.br/andrelage/) e está licenciado sob a licença _GNU General Public License v3.0_. From b6f7af153e30309d4d19eacc0bc12f75fe6efa1b Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Fri, 9 Oct 2015 00:45:39 -0300 Subject: [PATCH 08/29] =?UTF-8?q?corre=C3=A7=C3=A3o=20do=20REPORT.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 2 +- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index e2e58fc..8ed63e5 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -3,7 +3,7 @@ * Página do repositório do trabalho ([link GitHub](https://github.com/Leandro97/teaching)) * Discente 1 - * Nome: Leandro martins de Freitas + * Nome: Leandro Martins de Freitas * Matrícula: 15111982 * Discente 2 * Nome: TODO diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 368acf6..a8b24d4 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -29,7 +29,7 @@ int main (int argc, char *argv[], char *envp[]) { for(i = 0; i < 10; i++) { printf("CPU(%c)\n", 37); system(cpu); //running the cpu usage command - printf("Mem\n"); + printf("Mem(kB)\n"); system(mem); //running the memory usage command printf("----\n"); sleep(1); //waits one second From 33696dc2f2ef0d5d0de4916c3b790f6b7b1f226a Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Tue, 13 Oct 2015 10:10:16 -0300 Subject: [PATCH 09/29] =?UTF-8?q?Comitando=20modifica=C3=A7=C3=B5es=20no?= =?UTF-8?q?=20report.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 4 ++-- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 8ed63e5..867ec5a 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -6,8 +6,8 @@ * Nome: Leandro Martins de Freitas * Matrícula: 15111982 * Discente 2 - * Nome: TODO - * Matrícula: TODO + * Nome: Douglas Henrique Maximo da Silva + * Matrícula: 15111881 # Discussão diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index a8b24d4..12282de 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -7,7 +7,7 @@ int main (int argc, char *argv[], char *envp[]) { - int pid ; //process identifier + int pid ; //process identifier int i; char cpu[100]; //command of cpu usage char mem[100]; //command of memory usage From e2e4f82c7296f06a820e04df0e6ee0915ad3330d Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Tue, 13 Oct 2015 10:23:47 -0300 Subject: [PATCH 10/29] =?UTF-8?q?Commit=20de=20teste,=20apenas=20modifica?= =?UTF-8?q?=C3=A7=C3=A3o=20no=20arquivo=20INSTALL.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md index 04ef57f..8e995c0 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md +++ b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md @@ -1 +1 @@ -#TODO Instruções para compilação e execução do programa \ No newline at end of file +#TODO Instruções para compilação e execução do programa From c253e24d7a4513db7d93e8cfd094e65aa91eaf45 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Tue, 13 Oct 2015 10:32:51 -0300 Subject: [PATCH 11/29] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20main.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 12282de..48389b9 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -23,7 +23,7 @@ int main (int argc, char *argv[], char *envp[]) { { //this 3 sprintf functions format the used commands sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); - sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); + sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmSize | awk '{print $2}'"); sprintf(cm, "%s%d", "kill -9 ", pid); for(i = 0; i < 10; i++) { From da5005844888ff8a86964c7c10199703c13e1f8f Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Tue, 13 Oct 2015 11:02:29 -0300 Subject: [PATCH 12/29] =?UTF-8?q?Modifica=C3=A7=C3=A3o=20no=20main.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 48389b9..7e0fa90 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -8,7 +8,7 @@ int main (int argc, char *argv[], char *envp[]) { int pid ; //process identifier - int i; + int i; //counter char cpu[100]; //command of cpu usage char mem[100]; //command of memory usage char cm[100]; //command used to kill the process From caae85d6802cbfcfe57164506c44cb6b6ba8e4fb Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Thu, 15 Oct 2015 21:47:03 -0300 Subject: [PATCH 13/29] =?UTF-8?q?Agora=20a=20porcentagem=20de=20consumo=20?= =?UTF-8?q?de=20mem=C3=B3ria=20=C3=A9=20dividida=20por=20n=C3=BAcleo=20do?= =?UTF-8?q?=20processador?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/src/main.c | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 7e0fa90..7be2958 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -9,9 +9,12 @@ int main (int argc, char *argv[], char *envp[]) { int pid ; //process identifier int i; //counter + int nucleos; //number of CPU's cores + FILE *file; //auxiliar file char cpu[100]; //command of cpu usage char mem[100]; //command of memory usage char cm[100]; //command used to kill the process + char aux1[100], aux2[100]; pid = fork() ; //process replication @@ -21,19 +24,29 @@ int main (int argc, char *argv[], char *envp[]) { } else if(pid > 0) //if I'm the father process { - //this 3 sprintf functions format the used commands - sprintf(cpu, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); - sprintf(mem, "%s%d%s", "cat /proc/", pid,"/status | grep VmSize | awk '{print $2}'"); + //these sprintf function format the used command + sprintf(aux1, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); + sprintf(aux2, "%s%d%s", "cat /proc/", pid,"/status | grep VmSize | awk '{print $2}'"); sprintf(cm, "%s%d", "kill -9 ", pid); + nucleos = get_nprocs_conf(); + for(i = 0; i < 10; i++) { - printf("CPU(%c)\n", 37); - system(cpu); //running the cpu usage command - printf("Mem(kB)\n"); - system(mem); //running the memory usage command + printf("t%d:\n", i + 1); + //file receives the result of the command and the string cpu stores the result + file = popen(aux1, "r"); + fgets(cpu, 100, file); + printf("CPU: %.1f%c\n", atof(cpu)/nucleos , 37); + + //file receives the result of the command and the string mem stores the result + file = popen(aux2, "r"); + fgets(mem, 100, file); + printf("Memória: %d kB\n", atoi(mem)); + printf("----\n"); sleep(1); //waits one second } + fclose(file); system(cm); //running the killing command } else //else I'm the son process @@ -56,3 +69,4 @@ int main (int argc, char *argv[], char *envp[]) { } + From 2513811ed8f523e567d5b7395d3c58de6f4aa70e Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Fri, 16 Oct 2015 10:51:58 -0300 Subject: [PATCH 14/29] =?UTF-8?q?Corre=C3=A7=C3=A3o=20de=20consumo=20de=20?= =?UTF-8?q?mem=C3=B3ria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 7be2958..37ec6e1 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -26,7 +26,7 @@ int main (int argc, char *argv[], char *envp[]) { { //these sprintf function format the used command sprintf(aux1, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); - sprintf(aux2, "%s%d%s", "cat /proc/", pid,"/status | grep VmSize | awk '{print $2}'"); + sprintf(aux2, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); sprintf(cm, "%s%d", "kill -9 ", pid); nucleos = get_nprocs_conf(); From 2fe6120628c7d6cceee134d5d59000efcb15523a Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Fri, 16 Oct 2015 19:45:37 -0300 Subject: [PATCH 15/29] Arquivo INSTALL.md finalizado. --- .../2015.1-IAC-trabalho-pratico/INSTALL.md | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md index 8e995c0..b694937 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md +++ b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md @@ -1 +1,23 @@ -#TODO Instruções para compilação e execução do programa +

+Universidade Federal de Alagoas
+Instituto de Computação
+

+ +#Compilação e execução do algoritmo + +A seguir, serão descritos os passos necessários para realizar a utilização do algoritmo em questão com sucesso. + +## Compilação: + +* Para a compilação do algoritmo, primeiramente deve-se certificar de que está no diretório que contém o arquivo ```main.c```, caso contrário, navegue até ele. Em caso de dúvidas, o diretório é o seguinte: ``` /teaching/2015.1-IAC-trabalho-pratico/src/ ```. + +* Em seguida, executar o seguinte comando: ```gcc main.c```. + * Isso irá compilar o algoritmo, gerando como saída um binário nomeado como ```a.out```. + +## Execução: + +* Tendo realizados os passo anteriores, agora deve-se executar o comando ```./a.out cpu```. + * Esse comando irá executar o binário resultante da compilação realizada anteriormente. Nesta execução, o algoritmo irá apenas fazer a análise do uso da cpu. + +* Após finalizada a execução anterior, com o parâmetro ```cpu```, agora pode-se realizar a execução completa, com o seguinte comando: ```./a.out cpu-mem```. + * Esse comando irá executar o binário resultante da compilação realizada anteriormente. Nesta execução, o algoritmo irá fazer a análise do uso da cpu e alocar memória, também analisando o seu uso. From 2ec238da949903175ee866c8cf4e4774bd87c1b1 Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Fri, 16 Oct 2015 20:01:29 -0300 Subject: [PATCH 16/29] =?UTF-8?q?Modifica=C3=A7=C3=A3o=20no=20arquivo=20IN?= =?UTF-8?q?STALL.md,=20n=C3=A3o=20estava=20finalizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md index b694937..4afd282 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md +++ b/teaching/2015.1-IAC-trabalho-pratico/INSTALL.md @@ -19,5 +19,5 @@ A seguir, serão descritos os passos necessários para realizar a utilização d * Tendo realizados os passo anteriores, agora deve-se executar o comando ```./a.out cpu```. * Esse comando irá executar o binário resultante da compilação realizada anteriormente. Nesta execução, o algoritmo irá apenas fazer a análise do uso da cpu. -* Após finalizada a execução anterior, com o parâmetro ```cpu```, agora pode-se realizar a execução completa, com o seguinte comando: ```./a.out cpu-mem```. +* Para realizar a execução completa, o seguinte comando deverá ser executado: ```./a.out cpu-mem```. * Esse comando irá executar o binário resultante da compilação realizada anteriormente. Nesta execução, o algoritmo irá fazer a análise do uso da cpu e alocar memória, também analisando o seu uso. From 9a074192c71fb2bf6f93ae581097c048d95d0085 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Sun, 18 Oct 2015 13:37:24 -0300 Subject: [PATCH 17/29] =?UTF-8?q?Apenas=20modifica=C3=A7=C3=A3o=20na=20viz?= =?UTF-8?q?ualiza=C3=A7=C3=A3o=20das=20sa=C3=ADdas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 37ec6e1..0f00797 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -32,18 +32,17 @@ int main (int argc, char *argv[], char *envp[]) { nucleos = get_nprocs_conf(); for(i = 0; i < 10; i++) { - printf("t%d:\n", i + 1); + printf("t%d - ", i + 1); //file receives the result of the command and the string cpu stores the result file = popen(aux1, "r"); fgets(cpu, 100, file); - printf("CPU: %.1f%c\n", atof(cpu)/nucleos , 37); + printf("CPU: %.1f%c. ", atof(cpu)/nucleos , 37); //file receives the result of the command and the string mem stores the result file = popen(aux2, "r"); fgets(mem, 100, file); printf("Memória: %d kB\n", atoi(mem)); - printf("----\n"); sleep(1); //waits one second } fclose(file); From face7a04f00fbaf3ba47e4ff7f2fca1f5df16035 Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Sun, 18 Oct 2015 19:16:45 -0300 Subject: [PATCH 18/29] =?UTF-8?q?REPORT.md=20modificado,=20relat=C3=B3rio?= =?UTF-8?q?=20do=20experimento=20I=20parcialmente=20finalizado=20e=20image?= =?UTF-8?q?ns=20de=20gr=C3=A1ficos=20de=20ambos=20os=20experimentos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 867ec5a..0a274db 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -19,8 +19,17 @@ * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. -## Utilização intensa da UCP +##Utilização intensa da UCP +![Gráfico do Experimento I](I.png) + +No experimento em questão, foi notado que na marca de 1 segundo, a utilização de CPU é de 0.0%, isso se dá pelo fato de que, quando o algoritmo é executado pelo usuário, o seu processo é mandado, inicialmente, para a fila de espera para a execução no processador. + +A partir do tempo 2 até o tempo 10, o experimento tem como saída, em média, 25.3% de uso de CPU, para um computador com 4 núcleos - como o utilizado no experimento -, isso evidencia que, durante o tempo de execução, numa máquina com apenas um núcleo, este se dedicaria inteiramente à execução do processo. + +Nota-se também que a quantidade de memória mantem-se constante, pois apenas a quantidade de memória suficiente à execução do programa foi alocada. + ## Utilização intensa da UCP e memória +![Gráfico do Experimento II](II.png) From b067b5ddfb6af503da7efd8944b1b4abf17f2d81 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Sun, 18 Oct 2015 22:40:26 -0200 Subject: [PATCH 19/29] =?UTF-8?q?Coment=C3=A1rios=20mais=20desenvolvidos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index 0f00797..b12ff91 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -14,7 +14,7 @@ int main (int argc, char *argv[], char *envp[]) { char cpu[100]; //command of cpu usage char mem[100]; //command of memory usage char cm[100]; //command used to kill the process - char aux1[100], aux2[100]; + char aux1[100], aux2[100]; pid = fork() ; //process replication @@ -25,8 +25,17 @@ int main (int argc, char *argv[], char *envp[]) { else if(pid > 0) //if I'm the father process { //these sprintf function format the used command + + //the "ps" command lists the running process. The parameters "pid" and "pcpu" returns the CPU consumption through process with this PID + //grep is used to filter result of system log files(in this case, I just want the data relative to this PID) + //awk formats outputs(in this case, I just want to print the second column of output) sprintf(aux1, "%s%d%s", "ps -e -o pid,pcpu | grep ", pid, " | awk '{print $2}'"); + + //the /proc on Linux is a virtual directory that provides, among others, information about processes. + //"VmRSS" indicates the amount of memory currently in use by process sprintf(aux2, "%s%d%s", "cat /proc/", pid,"/status | grep VmRSS | awk '{print $2}'"); + + //this command "kills" the process sprintf(cm, "%s%d", "kill -9 ", pid); nucleos = get_nprocs_conf(); From 95af262b5d3b9f108745f7ef40256906dd4c8c0a Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Sun, 18 Oct 2015 23:00:06 -0300 Subject: [PATCH 20/29] =?UTF-8?q?Relat=C3=B3rio=20parcialmente=20finalizad?= =?UTF-8?q?o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 0a274db..7dcb46e 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -24,12 +24,16 @@ ![Gráfico do Experimento I](I.png) -No experimento em questão, foi notado que na marca de 1 segundo, a utilização de CPU é de 0.0%, isso se dá pelo fato de que, quando o algoritmo é executado pelo usuário, o seu processo é mandado, inicialmente, para a fila de espera para a execução no processador. +No experimento em questão, foi notado que na marca de 1 segundo, a utilização de CPU é de 0.0%, isso se dá pelo fato de que, quando o algoritmo é executado pelo usuário, o seu processo é mandado, inicialmente, para a fila de espera para apenas em seguida ir para a execução no processador. A partir do tempo 2 até o tempo 10, o experimento tem como saída, em média, 25.3% de uso de CPU, para um computador com 4 núcleos - como o utilizado no experimento -, isso evidencia que, durante o tempo de execução, numa máquina com apenas um núcleo, este se dedicaria inteiramente à execução do processo. -Nota-se também que a quantidade de memória mantem-se constante, pois apenas a quantidade de memória suficiente à execução do programa foi alocada. +Nota-se também que a quantidade de memória mantem-se constante, pois apenas a quantidade de memória suficiente à execução do programa foi alocada. Vide figura Gráfico do Experimento I. ## Utilização intensa da UCP e memória ![Gráfico do Experimento II](II.png) + +No experimento II, quanto ao uso de UCP, é idêntico ao Experimento I, tendo no tempo 1, 0.0% de uso e a partir do tempo 2 até o tempo 10, mantem-se em média com 25.3% de uso. +Já em relação ao uso de memória, nota-se que, diferentemente do Experimento I, o experimento II, aloca memória em cada tempo, tendo um grande crescimento a partir do tempo 1 até o tempo 8, e do tempo 8 ao 10, o crescimento no uso de memória diminui e tende a se estabilizar, vide figura Gráfico do Experimento II. A explicação para tal fato é que o alocamento de memória está se aproximando do máximo da capacidade da máquina, com isso, o sistema operacional bloqueia a quantidade máxima de memória a ser utilizada por aquele processo, por isso o crescimento do alocamento de memória tende a zerar. + From ff500a9c682399552533452426630c341a5c6816 Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Sun, 18 Oct 2015 23:06:30 -0300 Subject: [PATCH 21/29] =?UTF-8?q?Mandando=20as=20imagens=20dos=20gr=C3=A1f?= =?UTF-8?q?icos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/I.png | Bin 0 -> 12114 bytes teaching/2015.1-IAC-trabalho-pratico/II.png | Bin 0 -> 22341 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 teaching/2015.1-IAC-trabalho-pratico/I.png create mode 100644 teaching/2015.1-IAC-trabalho-pratico/II.png diff --git a/teaching/2015.1-IAC-trabalho-pratico/I.png b/teaching/2015.1-IAC-trabalho-pratico/I.png new file mode 100644 index 0000000000000000000000000000000000000000..eba03570215161eb4a46d07aeb02c72e518c2a24 GIT binary patch literal 12114 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 literal 0 HcmV?d00001 diff --git a/teaching/2015.1-IAC-trabalho-pratico/II.png b/teaching/2015.1-IAC-trabalho-pratico/II.png new file mode 100644 index 0000000000000000000000000000000000000000..40aa693e693c4c36ce70ebc6ee61c129347f1eab GIT binary patch literal 22341 zcmc({1wfTu@;Ln5pt~C`jdXW6N_R;kEuGRJA`L2`(jC%LqLfNXw~8PQN_T!2-CcFp z-F^4n{eA!Q3@7Hy%$d`3p66UHCog9K?CbJM@&E`703i4STz&<@)oq$b#z|p5L6y z`YO%K$8B*H3YznnUxnP!C*x_`10#|9^@-y0zl8lV0x~7`ElCm5C zf@_Aha-{-XPr&K6hnuE?G)&*X5Qa1bKmam;0H6b?%q`tru4w+w!Fm7c4#uzQ2mm8& zSN^plv6+e;opK-PlZBozA&e{Bzi`-A*6x<@W|D=|_*%dVhsRstaeNDHO&NH66abLX zt(>f^003ncj*qnYMuTd5MPu_5jiaZN9RQ&EU*Vms&E4Vg1bCdz!okG@9F z`WF9**TdQpE)Vqs9FOkhX$>z6^{QR&d3#*(qFvP=-_phHDjp7x3s~Bk!)ef(;c?dQ z`om)YK;?ebfJ$;Q{9Ho({A}E8Trdkqb4v%9yQR6~mDK;WyXvd&GU>7a01K{L-GHU1 zo7Z<7^eR9APys9eA0PoJ0a}0wU<0@T0YC(h1muA0fEu6;7yu@KC149U0d9ad;17fV z5kNGM06YR71DQY`Pz;m<)j&Pa4734nfnHz`7z5q|v%n&-4r~Djz$pj>LIPoc@IWLW zDiA%01;h;!1c`&>K*}IZkO9aHWCOYl@&x&V!a&iWB+z3}HmDd>1!@Gffx1CMpefKC zXce>rIsrq#=wN&>1(*TM0Tu*Hfp37d!8gG+U{|moI2;@YP6g+H%fNNuHgGR^3_J^7 z2k%1w2pWVCLJeVq2ts5aY7j%nEr=T=5E2DRhU7rXAx)4@$OvQ>@&$4XMTFu(VNf=x z2viZO1GR*@LIa^O(8tgsXdU!5bObsF-GW{qU?7kqupkH{C?V)0*dTZ#L?9$16d*iD zc!My8u!wMgh=@pt$cQL_sEBBQXpeXYF$OUmu>!FbaR_l9aUTf@i3EuSNeoF1$sEZ8 zDFP`CsSK$FX&7k{=?EDOnF^U3SsvLC`8IMWax!uW@+;(F8 zlz5aplqQq`ltq+NR2)=BR54U-RD0AA)Kt`R)HkRfP!A8Mmz?Q)_#}34Pg58KcfxVA|hr@-V zhU0`2gHwXjjkAJ_gv)>{hiio!j+=|yfjf@}!K1~K!L!5*!^^{agSUu}h|h?xgl~@@ zjsFb4AAgGgmw=Z*m%xYM3BgN(SwaXQ1ECV3BVjyYHQ_kn2@wU66p=O2eWG%rVWLA~ zGGa+$YvL&43gR*16A~DS9Ek%-B1t{TM^Y#$GpPotH)#gx8`3Xi_+%nvmSj<6)nwD; zU~*=1P4YYBx#WH1`xKNE3KT9BX%rn4UnmJFB`NJGA5y-eT&2RJ5~s4GdPvnmwFV=A zNx>Xpsj%0uEoyRVMQTs#Z0dgMQyNAZ9hy*@3Yw3!sI-E#w`d>Iw$pCWQPHW;`O}rs zP1B>$3)0)tr_guOA2Kj9=rP=5sApJVBxY1%^kXb#{J@04B*Em$l*2T74e^@bHHT~I z*9Muv%zVtY%ukpHSimg&EOspEEJLgatU|1}S#ww?*wERe*u2TEbi+N8+<2t)!J?f#kB( zH7R?kGN}z|PH8vk=hBBV!ZHCet+EhV1=%RsemPt@9l6JHGx9X@Hu9zNTMB#%cNAI` z5fpDICMr%SQ7Bm|6)SCB7q}j9{q+s>8(KFW-}tP|tn8-TqykpCuJSKacpmNdCE{WUwa@U%>|O0*8NrM2U=-|H~xcKYap?i2+W)8}Tl38{&r z$xBl#Q*+ZAGXyg|vl6p2b2alE^L+~?i>DS_mNJ$pmg`oMRu8RKt;MX9te096?T2(y5)Amt-u}Re$&0d10TM@^m#IQ-u0aG68C!Ib>ywbmmExUDjl_LUvsa zLr!uoVy;*2Ql4&JXTD&5aRF&TbisMy?ZVk2&7#-E0>#B8&o&q|3^iVF zY;O{2dj5j_MPV~_^OKhZFXLaKz6yVJ+2Yr--|Eu(rOl>ozTLF_eTRO>=xdGF{cmo( z>3S>wwxd(3v!zR{tGQdayRk>Gr@oiJx2}(`@A*5vchCFz`|Ab-1{wy12AhUNhh7a! z47ZKQj=UXJ8tolZ9UB_g8K0amo|v7qnp~N3oZ6oDnm&CW`~l%Z)JN=($us0LIiIe5 zs+i@UeK{vP*Y{cL^ZR+r`Sk_&g|o%*C5)xyWvb=k74DVhRr%GyHKVn~b(i(iFA-mH zzCPVx+Nj->-0a)Z-&)*u+rHe1*(KR6+~eJA-&fzCIdD2SJ&ZacIVw69JnlTvJ6S&U zK0`W7J->F|baCV2!==;ZFz@M`uqrn3jvVr8SHV zc4fqTHz59J{tr9FA`JlQ?*ahv^bZ`o81?T(eYe}b#ecFde^CScgAYOo01zIy^_uqs z=bQrog8OiMg1em!?21!HQycbEJFsb5-?DbIz74OcuAQ~F-EA9q{cl^@dDuDMhS}Y| zvfh3)(=R3e4-!B0{9!YDSo^^3O1PfRF1~JdHntuxrQ06XZnw>^G%|Pm);n%jI=VZ% zdDwY6vBJ3FX8{0kzs1A-O(hVzEZofdba}bU002l20pL9T^71tM^70(s7LfM<(CT^l z9*_Z05Rs6P5K)kkkx@}m&@hRxFflMN$?*wrh-fHjX{jk;FnVS_HhM;GCK!xef`eN? zNK{mmj!jx#N?4vxL{#WX2nZDw6%!qk3=4})hylhR^dGy+b^r$%L905kvy2L#3e zUA_iL;b)O=?nfJgp%4TRB0P`qD&q(KDh9sd`8|FbK!?Cj4LD#NxPRXIE8q7NWXW9- z5ZVK9HTqVT2Y*NLdtAK4aG&qcy0zfh-m8q8Cxkv9#c-lIo-zP=^_=!sY9#)5&R%P-S`&ps+iLS4hyI2S4?kWhvgp^? zAK)N(`Xqbksq@!NNyWUV-$S8c>%gncykeri zwK*>U>R|s8F$+JHag6S4h)KcMs()};5`(QK{lo(*$1{aZXDjD;n6v+=QfG2*y;%D5 zokgNwhENv3<1&#j(pyFve{VEOaj{n-*VRsLSdI?fkN+ItDuC{JKXe*O`OAuXg%I~t z{XkK_VLhsXXnQp=zB~8j-qlL@f|9c4n~~ls7yK9WPXUDR6Vs>uJCp&AN4}eq{$m5b z4!MrT3aB5SxOeW52($G+wA&zn$bQEsjtn-myYdL-T}5BCdcNmw&N=$d)#8=wd>)fA!E`y)D%kUk6eYBu7@|Q&`ay2ZonI2F7FXaK%cGu z_hLbrlAV?GGKhsY)3lgPk;YK;@N(c?<%gTiktrQsnrM%k&3?06J?Z*)IeCJI;_6pg z%um8sOSj`mV0jR}%DK-M0gp-eg7Kn#08ENjr1X_wprZk53TxL8jbiBcr(*QDjhXWyiFM(&5Kx_BpB@iY2 zaZ7>rCHX;>;lazG4^(HI8W%H+jc$0(PBn`uhc{Wv-R11_N@<6Zd<{rx>J&Fv<i^>}hi>pC)pVS601^Z9(^(i#H{6Zf{Gdidy1Z8|RC@1a7{2 z^~$F7hKv>e{|eOJvBp_t%&lY?h~7`ww_gx@7Td2EkQX!(GgpMfF{(VbU)`kG(DxlY zWEJa0{?sz^N}kiWl(#$KV3=}R=Dp$_J7fzFhn;kdDoa`le$BTr1zZ8F)xE4W>~dBn zC~D5vzAlP27uG-A>hsxAaT_?RajfzG^G~&am6P>_l1>b*k&>nROv9$TsHQI-#mZRc zoisAzIHsJa-$Qm!tXxlxaT?-h`B46EG!@D67fe*mEm1)e4-TeO^ysdsoZRQuAZXY~ z)W9h|Uar6t8PnUAI@t+)&rFb(P-Pf(kej49=3lkGV0}#D_l#@{2)(%7U?M^+wb;7lD4?|kGMWZdHXsGVS{ z5sfJAQ^!GbvEhp&%k@U^K@sT-7cnpBd^Qt%c?cChk+#1RM5;B@h8}I-*fT0TlT9=%sON0V zmONLi&E8_SgBp4bx}|>Rr|vODO@@J_a!2m2Jy%=Dh%U#78$*@zTGUe*3I8of(5+Hd z=Hg_ICws|iPeIkIIdc4R4e(<$<@x20EL-Ai)=V3_=VH&u_Z_1jC@p)hucfcIs$!v{P)<7@v&xFCgV9 z>+!zKr`RvMg!DfF{7fQdTC=TB-MSA@*jn5Zl2eN{E&+MvyxLCxsPSB_)q;sPU=cSb zBcYK(<$4ygyCq#sKacm{&5XZ{>L3P9ngS6|yJZ#sl{?9li{Z|nwr?bL4Umr{zMULd zW0cc(y#xk&S@wGm4Va=VF9Fce+WxlEg0gq69>s>0lbhhx@^IhUQDJidN3yHu_e;gM zCFJ;qiKthO+D`obQov}OMR%-Wpuo#AHP#v&%jcO!VswIE&t>v0Z?5f+H7K2$dK3ro zzpPNxF{DT;*R?b}_vqEIoJdF(D1FIvN5Fw3*Y=++OF!@}`3X@g)L-tYCRvunIq?4d zJpRpcp_(qTou-p_qqc>FYTkmaurx(Gc9k~3xGB$hhq3({uJ*p$+T^Duf7%D#+m0_J zX1fyyj_A57_DvYm3Ci5WS|+SwgW5LaY02ZAOY<#>X5;N!#x~^n%BRFkY4uy6k4i29 zJt5L@u?jT4KsEPe6Cgy&X^kLtaNGVpSzJRSF{u7SMmg48hG`hOtSj-mA2JqeI~_ljZPlpZDN#GTpNrS6dS);ET8&IWeuBC6qe1-J z*Kebt_N+KXiSD_w!U_-g~-ED^adh=7!tTo;NWMKxQ&N-6~Vev3yQYX)i}A z|LFo7Zo<&w0ATPB^X0n^4)TQAK@iH7f5cq;nsWBdj@+(TgHuU zi@hoA-vhRnZi>Br1pWCqvh?xVBJ=OtlK1d650&O{^o>1hw($dJ+D&i7x~-H48nIcw zX{0lMDO*(&k@ne0apw(w-Ge}A)obgQ2;@%rCB|Y+EHiVyDX0rNFTK@A!rT;hURMp! zrF@NtD@*@PSqKDfbN$tUz~7Xm=GMUDlrpFJi@NZa4p-`GtS0ODGB-amxgPNFlu12X z`YtN|_h3`oh&j2ej#r^*KqGc}Ix|j;HC1EO&3PuOmu_dbQ;(t}rF~Lnal1r}i zoCNgo0xczq5o*DZ8SbF@e&xdRs!O2OG}A@E;b2mi;I6s;pY_CfgRyE5UqlV+sbUctdC+KWAygx%8d$D4c&3NU+OF=+rT4Boi zNlnHuGAUm%O>2eRU2j~R*C)}*vFU?ISLT;m@bDI}9$SVT87s)h z8k~zgEGl7+$|)*gQG!;$ZNBBTX75WNvt;|zMPO-X(D6wH#W$o42ab39`Pc{ht;fv_ z6)2_c|3#!ckhpV5Lpu9DUuo;n7+pSt=G8c*J}U9XKFP&`$_ZuVT`brLdP6Wuj!K-X-RI+ zyB}Rnn*z1s(QhrLP<$HBLOu)I;iN|K>-SCKspUnpto$ht?H0XD2e%MOx8>$l!}cQLRf*bQyVp1g67yac@4KW|G&?Z%O$ zE;T%w>D>z-Pa1kX*v(7CasS;W&BVqfFh8)@$L@?vwgGQex!%w2ce$CF zkkioC`DdQCQFDp}i)iSg1$>Zy8|i=Vy%1GfG!zN-IDc(I_K?H7`+1YdZSniBn$G68 zmiJWIp-O{P1MURfT?2ee{sV1K8!d8oR6AahvO8vBSXVW%VuAzcWimc^N1S@E)qi_Z z+io-S{U!b#^FQ?0w;6))dgvWG(8XnTljcE|tGm8e=KD&wz^vhsjMf(x9i>>w= zC%C2&^l2n0uNFU&UvlFa!!%S#KG%J6oOYJMw(Omg!IKq0EhFn65;E7YSS&&#sA6SV zjM8r&N`!q+(#mf6D}1V;Oc&h$H`C?sr^w$XSm)~u>bC-^rV&;YOFftB z$2ja+!44Ll`OyX9TLoBJ({o#A1O2IAf?b3aA1ZeDLlmclbCfws3C9 z8pey0TwBe$$P-uhbOPDkKjzHW_3n`+;klfe?~KjDy{(S-q}_M#-(n=$T--vL3R^Z7 z>{T$5FPRBSm9`8E#@N$O*}30&-DH<*lW}!OGU!@N?RSi-drad@M$a!hO1|{*kUUrd|d`WC^ z)w9#8lJ1Kg3!z}jzU7GJ)h_v#!n)9``11QXf2^e6C?oTk*L_jgBA(jn@qy4}1Mlrz zBpa@{XvvjfwWK5p(zab$DLX=}_PE{V&@-86|A)N(`Lo9C>k&`3xxa2T1Qj2@CyPn) z7{|eZ5(^JhCXBo6@wI&XSKEdj&+{Eq8N!sMvQp-r>Oby%X|fQr6GpGO>krrAj6QSA&H-^}C|>VzmQ^k>u~UtXsNehl5DySY!5zWzSB zLC}x#^&|L{q2fy+Uf4`&o=<)lt?{7mY*@OA0f`}{B>WKpM_z<0_EakQuh+kWcO&E+8S*YqD>ddm-%<%&%{FKrQE)*PA*Bj zucB*}8p(c!A0IV4`Jf;lSjkjvJ9JGc!GK{^WwZg16%9nhS|%?vtNS}@Db@^kkd#gf z$qlE@$0yA0a=zW^WWRWs(l|bU{zB-fcM{f}nx~S`jO~fNFLrhXBy5a9yky65)U0fX z1tLg@3ky)3!!MHN)99-sHT12K4PUSgZ?2#&JsDO$;I{Slf(pY9jCT*5&D(O6R1+*b zdQQnhreqbv$ri+(i$_NU4AEyrCZu*$#vi#W5T2)Cyw0G_yl^CZ%JH$QJ6vgQ9S9M3 zAV+FWy+0(jffL@t_>p9o!xM8ZnES1piX*Z}QvBQt3ePcbBV6b`l`_L_AxnqE$McMa zT5(db2yZp4K$JFGyI!A-Fu6+gUbrshWVswgC}U|OJACX-j(Tdy)?vl{QPCl?lT9>{ zxG~RBD-#LZ!ei`)l<;e0xxuewNu5NtuIUe8*xka%#cVz}3F)J4RBR5G^5dm`vDaye zn8Mt7Ds&=AnZ|kRaZCMMv{BNU#; zs*hx2ZJ(B9h0=i}vg*wiDaerI=_RnG06*!lVP735Az&yXW!~f?#}#YV652)q(V|3N zA*DK{>QjD@9edichDyRaJW|@dM3UZkg1l0{9~YX6qJ*(V-V1wVeh?PSwpi`y%=Iw7 zFmLF+EQMo1kjs55%~QaDlO&R)zd}vXoR^#$B4a26)nZhMb(bJH;n~g1z62~J!I%-4 z&{}lyeh}j0@Yy%bGGNEbx7)S|Dv6W{IEbLi$3yDeLh4Uc6$Ns`-+)Npp5L+ntfYl` zP&`%3Q`MngU);}3PT(`6X2xR7^Pw%WwP>S|(YgdO96ZU$P9(`kBZ)~S)Gwf<3G}sf z$-~n|H|(6)^8a-7xFZ>6un_>}hPgfMA#tdC;62ck`c)?nq zJ(SX+w;5I(1M4gj+3#e{#bk|s8jU}q{|rI`JX(d)K%52vYWiR%Y(-?e5ctQFyo3}T zo;yRfCl!5W(0n?K0CNC_pM<-XrSx7=qI0OV%PF&b#85oBu~Xv9eCC1cz^UN!d3YWU zsZVzy-r9YY<|Jxv*a>H@i~o>Hr7|Cd((#2jG_m1r377f+DBF5|-M4S9UE}7f|d3k^`2=Q;4k`|50|KWss zth-xQ^pGNNg`xv`eNngu^&sdc0XbqO6kf?*urvxeq@_U96gT&gwT0kPB(*XcRn@rD zn!QX_1w~Zz6;kAeu&fIpwVGcmSYZ_)MSZ_`Y=a~wUT)v|z>qh*omS24ajI?CJA7`? z{pD3llda$^+Xqu1B!>G`A4RvaC9-1nLdwo>Hbz}v^Ok6*la2_`2qll#A2~$4Pd-b- zVa~k{gN4!x^VD|-%Nu5nwcSltlB3`{4kZgo<_#w_v$S#{#^bZ|w6w*iJU4IKoSQxL zmGimN$}?e&@3B_h-|0=PLCP6Lfz^?qDkTJ6!21sZ$+8&>PQQiFNJ!2<<=w^kItO-( z7=N{b%_x-uIqXAlp{CF z&vhC^1Kcyv9)~=VBDv-?8c)}SctQ@B5B*YS&*|vaS%6tLdWu{JlHDW!eTfp>5#(&p z`%OHy3fP@XK=aAD>Mmy>SR7rst~q4$Tup4os=9^h4-Q1-O3G03`u$wo7}2dh`26~5 z(EUSVK<}=*?fc>k2|1Eivnnb{Z4S|X2Q; z1ksBE8_7ep2jR~+L`pAka1jyKLR*db&4-Sn_l6i{W+1nK5E8llBf|Af!mc{GYPJWo z3h!EjTMTi6|}_HZ`2V+FiUi9}4Yk_vrE<2XK&PNP8jJP3@ThzsBC zY_)(c8BQK^p0xjF+e`k$86vCShsez%)&{pZsQj7?-|fG+ZHCeREbwljXg@=;hB7a+ zwc> zqDh4zk0cgF?@{~q%FQ6JFQY7CcQ@^4dfcl_QaioN&m5L`Q&>=qDMDqU426JHD*o=T zyXT-P@{?38RHM|^;2^pGWOtRbrJNx!4AWCAgIM9xh+1&jLLx>@4cqUCsO?AIF0#2L zehIXVFo0IxCMbpt!Z;--1E>P6I`qw}A|*N0f}@BP9ZVW6O`iB;Nm6bfCLTUO4q1|; z2pJdO`9FJhm+&MbgNqmu))$fcr57w!GlBNQ$2}}0?gB3f<4exo0@pPqC&sbCASG({ z5@>pD*qMJW8pLSvD77t>}}PLwR*8 z#JS)|9{0&wI3_Y8nP^I~IF_P$L-3xBGoa?^GMjF&UkL^jGUNF*_&Tvq>?-oLM_-d1&= zEgqAZj5_5^?pzlmEN0;=J|3R0;(xT8{$}&~+h(lB1s}NmY%JHPIzm`gymH?A1Vif} zoHD#fvu|Vf(Iu;~<+Bt*${|kj=vk69qfj3dsZ`-sEP#X!^ay$Ky=A85EIpzHN?G=K z=DlqOq-=5QS)hyVwf~vmE9iX^#N5NLvkZ8hlC#WNt%Eb`wg-c|XQ7tq3a#%S6+pz> z5pj|;KzJc6uAo_-`fvfWN<$yCNJ$S&kQo-|%lKd*+yF{6-%b)aEp?JO%g>_Tk)uFo z0LGd;!sg^uMV>F`4-O^nI(iy|p%g=v!>v|O38sZ|2HK**D1dWGeE{c{C^lJI79LC1$x0 zwiSw=F+_@1Rdta0s21smadjrx`=fWEn&DuVHUn*(;bX*cgY(4c3W6>Lww? zyL}_3i#7w4fOH;zeEKQYJx>ka6%Y>9$FXXOsf2R&J-h%;%LufH0#) zPj5^6ZlD?V-4GDKv+!wylLQLC^XlV{K8TK`MS;zPOzhmZHlEOWo&bZSB|)(9UK5fp zSpz+o@=fz&k~D70gdtC#AK!n9XjTwybS!P`k`zvdaC+A+>wa(o)fd?(Ym&siHitMi zUUXCwBT5Fb#b7bdbajJ96fLi;cP?mJJO)LJ6CP~u>M%_|m1(`em5e4$OFu1gXTN7M zEz?s*%p2GhTAP4v-e6^XyI+znP8A&;I*1cWEF3l}EtLVFBtql`_Ji$3m-Hr`_Wgrh zqf%eMq!axjJwjRqPv2oDC!#NZMWF*p0xp@UfRmlb`E0?`Z@avz%poeWGAFY9rwtHJGZW2(Tbp}I*-768ta=6*WtU&PSKXDD)8=N3GTiV?da#-Rl8!}9zfsi z6m=gUzZx;U@Z>KtYX+`Hk~^HB_ZR#Q7&}yk=`YIs!os_a1kL)j*1seBMcUs8;IFtC z;g=9VkgH1wfBnS*{1q3qMk4&mgjCfQr+G-WOK{uw@Ag->Ca}+uU{V8Iczv=BrWzaf zEhCc!|E&jo7$?wlKb?nbKj^``w52|PdR2Qv)CZLIrF~avKQ%Sj_4NwUw9cpq>bs8j zvB=E1q&Y{cfT5$Dmie1?(t%rq!BBorf)9$imLplGk5z{da{!lxV3N$Qtq=G_>|eS2GB5N;_y?-2b7Q0Y;}@XaM7@n4Q5+u?2awJz0ibT)wt^JtN#A>8x;_ML(Mg` zEoDBZ;kpG2NmS3SYQyG~{P~3@_9d{ip#!e4bJ%+-(e&u>B%pw&*mwUKRsQ`XB@iFi z#F^P$il;>SBdRq}rY~kq{Y`uD+ZAUDc~y;OI1}~AtuMTlPipL)iIZV9>w?d8M|3%_ zCy%z)K6*6!0@XFufezGF*33>Ok{YZ(%FsXbf~a&HdKP96^eiWE zI?MOSo4;&6%*Vw}hrK3mGnmP`bwASK;~j^Za@Td1wdfEt>r2S339S&egWoL4(AJKoAyKQmX+kuN(1i0+CS(Oc?`U0UZFCkdSQR7){a*(v zLGN{0uFoKJ6%9HWd(z6QP7g0Wv{Mo8c|LZou8 z{NcNs^b^gu9}|q_*Ybq1t!@$$2Tjr2>Zy5EKO!b}oXmSs&zmw%(~k*$ugJc6!*G=x zs%jvI004UoHUI0HBOq%PiKmDcsUz4ID*3qSqC>n$TRy=r0?(tnf;1kz8F`#z03jy5 zHaeOYWF*ZNNl;O#1xUcYy zqb7&24(59M>6K+F16XILx`3{PhL(Mjve)xq(k#AVJI#5*Vf8HuK( z4Q3JgIU66v*0cbJR=zMTk3-K(fK;Kf;_K7o)$ZFryeKBt`!>48U&(vXQ#{V;uU%gc zs_FM6n_3jUwFz324YEsoT^OrIn!zV(?=!kxJg@ckk0uAB`N=5LwURyxv5mlAWE;jZ zO=szuO0IR9ebENKvXF1;__vA(M1;t{qNAQE- zp=LupAMWi?)@E=>MDnThT{qUdBnWlo;pc@2)h*BEWxz{t+Wf z^O36axo^39Q2q94i=M1C;mpuTv6tk6jAJm!*9A|NFZ;{m$^meRQb|fwW>;kZcj?_p zxo*sd&F9%>^t=#l6Y*V%(9$P+HG33lJS9ddMn;7Sr>FC^#iMJ>AA&xU29LXzrS_4O zSMV5*-z|CO3Zm2Iv~xkrdL5iq3CTk+7#=yNd_i+(T*7y3-n8uu{t2vf;Y0VVc73i= z>?kOLmoHu)4f&omDvz(8^tnr)HyQF2U)k8)YV?lZKInzs=`M&@rp0&mU4z7VleVdJmUDj^?XN7e^z9tHP5PXQ( z($mh*sm=ZAIM;ZKwHBbgD~RMvSaxF^`T$3Pms5+^Jt6`pu(kKd8A0A*{UJ-&=Ffl} zY^EV2{^~iivW@t?<_g;Xx6pD5nB!2JahelRnj^?69j3aTP`WtgLvM~%pJo^aKRh>e zXp_ZclT;7tnbE-=e5ShHz?4a!g8IHZ-_PdUr0k%kVjZ3I$hr)|yR_voqJKT4SARVJ z&T7d;XcqIJeea$lqWR(a!Cj1J#1gs3o5)xmRJ%or`=oZ`qH?I^469#*)_U9wy=KqN z)(V~zuu+f|&Is2VH=S5?Zlbi)8sMksL^QUYAS1cR@11pK zO+iDn@x=Kj^7D_pnUQ#3W4!f@GMg9bRd0CwNl#@ZH#%VTwPejgP8@tSlDMCtXT;&! z`14ZuV^RF4u`pPsr@%?zj(BI8i6%3a!Zjx<+Z8)?7J6R_B>OSWpdx0|nG(R&f0|9g zJl}JC+dL^*n`SLsv)@97{=?8|+)Jv|;97nJ=_>08Ry`j{bp4`SCc;=J=USX;Ce0pO zVueD3yf6L~g_g5lMW~SMCXYl^JKLtc#4$&zw!G5g!)pIXCS?O*9@aEM(jIe=^B0+u z2+-unQ8b05BGn(_{uAXAgEC7cD)P&#_38-xjUsrd{OA)rPOqoy@$?u#{X{1G*_9 z_=YVeBVllx%}u|ru2>Pti?k*=oce_YxRj|Jn79xjmXB#Y^a>wxnhOk&@ba4$=01HH zBq?0nCIp!txq&u+FXFg>RCnSx}qvCWbG|(jY^E<H42LfMBcN6%Jc< zMAdfe5Wuy*C&S0ueHLIFa7`={;g*DD&&Bgw^!Xb|0!e}y&$G3lh06o#HhD(37|WO zt)8pO)GmnJ@YF#G@LXMW$+dk}!)}sMwjlBi|No;`e@fmHVy@weUQ>}LRT!QV%6o%TvXD)7vJagCczyUR{J!cxI_qr94Rcwp<4pqQA|L$H?4l9XuY@Y01&}gF3 z$~!gh!d)n)f9k}CPuom$>!lxpl=hD#*SudN;zJl^5T0);OvEkZeQi6LY#KGxU~aVK zRn|n&U=bqFxnQpcF~|*Jxo7tLS;L!t-=mfOpe$gnsi{}$ApiXSp&r5+mmu4N(5e3; zFM&?)OT;HdSbuEp7uSQ>agqE+!>qTd`vYnf6O_Xq7cE8t@09P>p~>bVy1Q)TP8uCs z-&ohX=*-A2f7PkKTCYnq|K`>3B~bMKiCFxIwmroDQU2axSc2IZH0y=C_XRl5S{Ff` zxgYJu39qF00fUQ4rh4aY(6fCmZPsA;|3SDnoW&e${}zc5IX*w#Edcc9*>&WO6362^ zEzK^Q6HgAPb3u~$RD~W}HXfvmdE$P$%{s*{Yj-5(GSGqOlDjXt)z4erCVpW#g`Zwf z1X(~Au;2xfAiV#x_WD;nArW*WXGO|eA{cif=+xas4)U|4`rI711BXZvk9(V^?I8C1 zudID37XRPDtZ|)}&EZ}ig5TTVwiJZ%o$4~)t|(Z;i-1?T!G!Pm4{alo0F&C3J&~za zL%14v(mOVss}!;KqbLrtL%h5oRpEs6mF#F?1g@N)}{gqtJz>IOVD+mH7cb9sY01+ zFIdz`Y*w(5Q6sBXNCF~ho`GrzE5RQF#BRlgBQRR+UjkW`x6B6D?h*VU8I&*!D6#mT6<-4(t7B%NA%3%B?Yd`7(rP~1l{TVejADn%#3S$eHS|?D zmm-Efugmm)RwcSv}XoGR;N)`!>dav|G|bnKw3IZ+UdDayaQ?X0lHGBt_1VnCE1uD}tR?P*|? z1FVwIdU!T}c)utT-#(oEvruKvU;uH4hfiw%*i!pC_wF^%oQks~+xB>iw&Pn^?fsgV z1i4222|jEX_@MGnXYRC3>n4482f-PAY&6e3#Rn$qkVH(Xi$OI3tgPcXvIanzktAyO zgBAlF&IW#AO{4~j`A7W1-cD5(cIM=-!J`hPM1BluVc^=e-fK7ZN!@cbAB-8X8;)YR zauizLvFaHxqFF7uDc+$KTp`(%%-p}7`(i22>8Jn&!8D5*o4@KAy1kSz^!T>k`J5{u=zGFhizjB1{7a>v0-~~Oa@vLbL%N>=%(H45ZF@{#-RbKNwX@6W zP9P{x9R_3QxUUtA?l)>OhaeYK7h~|1z0obvHAHfK!bQfjf5zK_@Wa#bj1$(O4L=JXEkL|i{muA3b|^X z6J7c(o$w);rLu(Y<7a>(siAergp!{@$veG4V}z+3j^Zp-He1jE)+K;^30zM7e~+m7 A3jhEB literal 0 HcmV?d00001 From 9a6d875d4eba8b4788afb216c38ff2bd80879216 Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Mon, 19 Oct 2015 14:48:02 -0300 Subject: [PATCH 22/29] =?UTF-8?q?Modifica=C3=A7=C3=A3o=20do=20REPORT.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2015.1-IAC-trabalho-pratico/REPORT.md | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 7dcb46e..13b5021 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -14,26 +14,35 @@ * TODO: Em cada seção: * explicar e discutir sobre o comportamento do programa para cada experimento; * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCP e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de CUP em porcentagem e consumo de memória em Kilobytes); + * colocar um gráfico do consumo da Unidade central de processamento e da memória pelo processo filho em função do tempo sendo duas curvas; + * cada curva representa uma métrica medida (consumo de Unidade central de processamento em porcentagem e consumo de memória em Kilobytes); * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. -##Utilização intensa da UCP +##Utilização intensa da Unidade central de processamento ![Gráfico do Experimento I](I.png) -No experimento em questão, foi notado que na marca de 1 segundo, a utilização de CPU é de 0.0%, isso se dá pelo fato de que, quando o algoritmo é executado pelo usuário, o seu processo é mandado, inicialmente, para a fila de espera para apenas em seguida ir para a execução no processador. +No experimento em questão, foi notado que na marca de 1 segundo, a utilização de CPU é de 0.0%, isso se dá pelo fato de que, quando o algoritmo é executado pelo usuário o seu processo é mandado, inicialmente, para a fila de espera para apenas em seguida ir para a execução no processador. A partir do tempo 2 até o tempo 10, o experimento tem como saída, em média, 25.3% de uso de CPU, para um computador com 4 núcleos - como o utilizado no experimento -, isso evidencia que, durante o tempo de execução, numa máquina com apenas um núcleo, este se dedicaria inteiramente à execução do processo. Nota-se também que a quantidade de memória mantem-se constante, pois apenas a quantidade de memória suficiente à execução do programa foi alocada. Vide figura Gráfico do Experimento I. -## Utilização intensa da UCP e memória +## Utilização intensa da Unidade central de processamento e memória ![Gráfico do Experimento II](II.png) -No experimento II, quanto ao uso de UCP, é idêntico ao Experimento I, tendo no tempo 1, 0.0% de uso e a partir do tempo 2 até o tempo 10, mantem-se em média com 25.3% de uso. -Já em relação ao uso de memória, nota-se que, diferentemente do Experimento I, o experimento II, aloca memória em cada tempo, tendo um grande crescimento a partir do tempo 1 até o tempo 8, e do tempo 8 ao 10, o crescimento no uso de memória diminui e tende a se estabilizar, vide figura Gráfico do Experimento II. A explicação para tal fato é que o alocamento de memória está se aproximando do máximo da capacidade da máquina, com isso, o sistema operacional bloqueia a quantidade máxima de memória a ser utilizada por aquele processo, por isso o crescimento do alocamento de memória tende a zerar. +No experimento II, quanto ao uso de Unidade central de processamento, é idêntico ao Experimento I, tendo no tempo 1, 0.0% de uso e a partir do tempo 2 até o tempo 10, mantem-se em média com 25.3% de uso. Já em relação ao uso de memória, nota-se que, diferentemente do Experimento I, o experimento II, aloca memória em cada tempo, tendo um grande crescimento a partir do tempo 1 até o tempo 8, e do tempo 8 ao 10, o crescimento no uso de memória diminui e tende a se estabilizar, vide figura Gráfico do Experimento II. + +A explicação para tal fato é que o alocamento de memória está se aproximando do máximo da capacidade da máquina, com isso, o sistema operacional bloqueia a quantidade máxima de memória a ser utilizada por aquele processo, por isso o crescimento do alocamento de memória tende a zerar. + +Quando executado em máquinas diferentes da utilizada para elaboração do relatório, o algoritmo executado para análise de CPU e memória, causou travamento ao se aproximar da capacidade total de memória das máquinas. Há, porém, uma particularidade: na máquina usada para a realização dos experimentos, não há área de swap. Fizemos uso de 2 máquinas virtuais com Ubuntu 14.04 versão 64 bits - uma com área de swap e outra sem - para simular os experimentos de alocação de memória. Ao atingir o limite máximo de alocação de memória o computador sem swap não apresenta travamentos e a quantidade de memória usada mantém-se constante depois de um certo tempo. + +![Experimentos](Teste.jpg) +Os programas foram executados “ao mesmo tempo”. + +Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o SWAP + From 652c6e14752d2c1f557fc51752e384210d9b364d Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Mon, 19 Oct 2015 14:50:48 -0300 Subject: [PATCH 23/29] =?UTF-8?q?Adi=C3=A7=C3=A3o=20de=20imagem=20de=20tes?= =?UTF-8?q?te=20e=20modifica=C3=A7=C3=A3o=20do=20REPORT.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 12 ++++++------ teaching/2015.1-IAC-trabalho-pratico/Teste.jpg | Bin 0 -> 80256 bytes 2 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 teaching/2015.1-IAC-trabalho-pratico/Teste.jpg diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 13b5021..2db6045 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -14,12 +14,12 @@ * TODO: Em cada seção: * explicar e discutir sobre o comportamento do programa para cada experimento; * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da Unidade central de processamento e da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de Unidade central de processamento em porcentagem e consumo de memória em Kilobytes); + * colocar um gráfico do consumo da UCPe da memória pelo processo filho em função do tempo sendo duas curvas; + * cada curva representa uma métrica medida (consumo de UCPem porcentagem e consumo de memória em Kilobytes); * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. -##Utilização intensa da Unidade central de processamento +##Utilização intensa da UCP ![Gráfico do Experimento I](I.png) @@ -30,19 +30,19 @@ A partir do tempo 2 até o tempo 10, o experimento tem como saída, em média, 2 Nota-se também que a quantidade de memória mantem-se constante, pois apenas a quantidade de memória suficiente à execução do programa foi alocada. Vide figura Gráfico do Experimento I. -## Utilização intensa da Unidade central de processamento e memória +## Utilização intensa da UCPe memória ![Gráfico do Experimento II](II.png) No experimento II, quanto ao uso de Unidade central de processamento, é idêntico ao Experimento I, tendo no tempo 1, 0.0% de uso e a partir do tempo 2 até o tempo 10, mantem-se em média com 25.3% de uso. Já em relação ao uso de memória, nota-se que, diferentemente do Experimento I, o experimento II, aloca memória em cada tempo, tendo um grande crescimento a partir do tempo 1 até o tempo 8, e do tempo 8 ao 10, o crescimento no uso de memória diminui e tende a se estabilizar, vide figura Gráfico do Experimento II. -A explicação para tal fato é que o alocamento de memória está se aproximando do máximo da capacidade da máquina, com isso, o sistema operacional bloqueia a quantidade máxima de memória a ser utilizada por aquele processo, por isso o crescimento do alocamento de memória tende a zerar. +A explicação para tal fato é que o alocamento de memória está se aproximando do máximo da capacidade da máquina, em um sistema 32-bits, o sistema operacional bloqueia a quantidade máxima de memória a ser utilizada por aquele processo, por isso o crescimento do alocamento de memória tende a zerar. Quando executado em máquinas diferentes da utilizada para elaboração do relatório, o algoritmo executado para análise de CPU e memória, causou travamento ao se aproximar da capacidade total de memória das máquinas. Há, porém, uma particularidade: na máquina usada para a realização dos experimentos, não há área de swap. Fizemos uso de 2 máquinas virtuais com Ubuntu 14.04 versão 64 bits - uma com área de swap e outra sem - para simular os experimentos de alocação de memória. Ao atingir o limite máximo de alocação de memória o computador sem swap não apresenta travamentos e a quantidade de memória usada mantém-se constante depois de um certo tempo. ![Experimentos](Teste.jpg) Os programas foram executados “ao mesmo tempo”. -Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o SWAP +Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o swap diff --git a/teaching/2015.1-IAC-trabalho-pratico/Teste.jpg b/teaching/2015.1-IAC-trabalho-pratico/Teste.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cde48dc70e0b99fe39d4bd01bb9c017d6f18f286 GIT binary patch literal 80256 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 literal 0 HcmV?d00001 From e253219b52a2e89e24bc8dddc703e6167e41d0e3 Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Mon, 19 Oct 2015 15:17:18 -0300 Subject: [PATCH 24/29] =?UTF-8?q?Sa=C3=ADdas=20gravadas=20em=20arquivo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index b12ff91..b7bb653 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -11,6 +11,7 @@ int main (int argc, char *argv[], char *envp[]) { int i; //counter int nucleos; //number of CPU's cores FILE *file; //auxiliar file + FILE *log; char cpu[100]; //command of cpu usage char mem[100]; //command of memory usage char cm[100]; //command used to kill the process @@ -40,20 +41,24 @@ int main (int argc, char *argv[], char *envp[]) { nucleos = get_nprocs_conf(); + log = fopen("log.out", "w"); + for(i = 0; i < 10; i++) { printf("t%d - ", i + 1); //file receives the result of the command and the string cpu stores the result file = popen(aux1, "r"); fgets(cpu, 100, file); printf("CPU: %.1f%c. ", atof(cpu)/nucleos , 37); + fprintf(log, "CPU: %.1f%c. ", atof(cpu)/nucleos , 37); //file receives the result of the command and the string mem stores the result file = popen(aux2, "r"); fgets(mem, 100, file); printf("Memória: %d kB\n", atoi(mem)); - + fprintf(log, "Memória: %d kB\n", atoi(mem)); sleep(1); //waits one second } + fprintf(log, "\n"); fclose(file); system(cm); //running the killing command } From 1d453e30d5e4a5a6a3a6db9b2165d5ed62de694d Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Mon, 19 Oct 2015 15:30:11 -0300 Subject: [PATCH 25/29] =?UTF-8?q?Corre=C3=A7=C3=A3o=20do=20REPORT.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 2db6045..581e43d 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -11,18 +11,10 @@ # Discussão -* TODO: Em cada seção: - * explicar e discutir sobre o comportamento do programa para cada experimento; - * sempre referenciar o código fonte e o gráfico do experimento realizado; - * colocar um gráfico do consumo da UCPe da memória pelo processo filho em função do tempo sendo duas curvas; - * cada curva representa uma métrica medida (consumo de UCPem porcentagem e consumo de memória em Kilobytes); - * o eixo das abscissas deve representar o tempo medido a cada segundo e o eixo das coordenadas deve ser a métrica medida. - - ##Utilização intensa da UCP - ![Gráfico do Experimento I](I.png) +Gráfico do Experimento I No experimento em questão, foi notado que na marca de 1 segundo, a utilização de CPU é de 0.0%, isso se dá pelo fato de que, quando o algoritmo é executado pelo usuário o seu processo é mandado, inicialmente, para a fila de espera para apenas em seguida ir para a execução no processador. @@ -33,6 +25,7 @@ Nota-se também que a quantidade de memória mantem-se constante, pois apenas a ## Utilização intensa da UCPe memória ![Gráfico do Experimento II](II.png) +Gráfico do Experimento II No experimento II, quanto ao uso de Unidade central de processamento, é idêntico ao Experimento I, tendo no tempo 1, 0.0% de uso e a partir do tempo 2 até o tempo 10, mantem-se em média com 25.3% de uso. Já em relação ao uso de memória, nota-se que, diferentemente do Experimento I, o experimento II, aloca memória em cada tempo, tendo um grande crescimento a partir do tempo 1 até o tempo 8, e do tempo 8 ao 10, o crescimento no uso de memória diminui e tende a se estabilizar, vide figura Gráfico do Experimento II. @@ -43,6 +36,11 @@ Quando executado em máquinas diferentes da utilizada para elaboração do relat ![Experimentos](Teste.jpg) Os programas foram executados “ao mesmo tempo”. -Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o swap +Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o swap o processo leva mais tempo para alocar a memória necessária quando o limite de memória é atingido, por isso há travamento no sistema. + +# Funcionalidades adicionais + +*Comentários em inglês feitos por Leandro Martins de Freitas. +*Gravação da saída em arquivos feita por Douglas Henrique Maximo da Silva From 5f2f54bdf3185770f3bb183f3e36248df9e70e7c Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Tue, 20 Oct 2015 10:00:24 -0200 Subject: [PATCH 26/29] Update REPORT.md --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index 581e43d..b01837f 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -34,13 +34,13 @@ A explicação para tal fato é que o alocamento de memória está se aproximand Quando executado em máquinas diferentes da utilizada para elaboração do relatório, o algoritmo executado para análise de CPU e memória, causou travamento ao se aproximar da capacidade total de memória das máquinas. Há, porém, uma particularidade: na máquina usada para a realização dos experimentos, não há área de swap. Fizemos uso de 2 máquinas virtuais com Ubuntu 14.04 versão 64 bits - uma com área de swap e outra sem - para simular os experimentos de alocação de memória. Ao atingir o limite máximo de alocação de memória o computador sem swap não apresenta travamentos e a quantidade de memória usada mantém-se constante depois de um certo tempo. ![Experimentos](Teste.jpg) -Os programas foram executados “ao mesmo tempo”. +Os programas foram executados “ao mesmo tempo”. À esquerda, máquina sem swap e a direita com swap. Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o swap o processo leva mais tempo para alocar a memória necessária quando o limite de memória é atingido, por isso há travamento no sistema. # Funcionalidades adicionais -*Comentários em inglês feitos por Leandro Martins de Freitas. +* Comentários em inglês feitos por Leandro Martins de Freitas. -*Gravação da saída em arquivos feita por Douglas Henrique Maximo da Silva +* Gravação da saída em arquivos feita por Douglas Henrique Maximo da Silva From 1c4c416964813324a534421bab0d5330c40ff65a Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Tue, 20 Oct 2015 10:09:56 -0200 Subject: [PATCH 27/29] Update REPORT.md --- teaching/2015.1-IAC-trabalho-pratico/REPORT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md index b01837f..d1de5a4 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/REPORT.md +++ b/teaching/2015.1-IAC-trabalho-pratico/REPORT.md @@ -34,7 +34,7 @@ A explicação para tal fato é que o alocamento de memória está se aproximand Quando executado em máquinas diferentes da utilizada para elaboração do relatório, o algoritmo executado para análise de CPU e memória, causou travamento ao se aproximar da capacidade total de memória das máquinas. Há, porém, uma particularidade: na máquina usada para a realização dos experimentos, não há área de swap. Fizemos uso de 2 máquinas virtuais com Ubuntu 14.04 versão 64 bits - uma com área de swap e outra sem - para simular os experimentos de alocação de memória. Ao atingir o limite máximo de alocação de memória o computador sem swap não apresenta travamentos e a quantidade de memória usada mantém-se constante depois de um certo tempo. ![Experimentos](Teste.jpg) -Os programas foram executados “ao mesmo tempo”. À esquerda, máquina sem swap e a direita com swap. +Os programas foram executados “ao mesmo tempo”. À esquerda, máquina sem swap e à direita com swap. Visto que a comunicação entre o processador e o disco rígido é muito mais lenta que a troca de mensagens entre CPU e memória principal, ao utilizar o swap o processo leva mais tempo para alocar a memória necessária quando o limite de memória é atingido, por isso há travamento no sistema. From 83c47858b713fa3817a6ac4acd28adb321aee004 Mon Sep 17 00:00:00 2001 From: Leandro97 Date: Tue, 20 Oct 2015 13:17:54 -0200 Subject: [PATCH 28/29] =?UTF-8?q?Apenas=20uns=20coment=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/src/main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/src/main.c b/teaching/2015.1-IAC-trabalho-pratico/src/main.c index b7bb653..f699cd4 100644 --- a/teaching/2015.1-IAC-trabalho-pratico/src/main.c +++ b/teaching/2015.1-IAC-trabalho-pratico/src/main.c @@ -11,7 +11,7 @@ int main (int argc, char *argv[], char *envp[]) { int i; //counter int nucleos; //number of CPU's cores FILE *file; //auxiliar file - FILE *log; + FILE *log; //file that stores the results char cpu[100]; //command of cpu usage char mem[100]; //command of memory usage char cm[100]; //command used to kill the process @@ -58,8 +58,11 @@ int main (int argc, char *argv[], char *envp[]) { fprintf(log, "Memória: %d kB\n", atoi(mem)); sleep(1); //waits one second } + fprintf(log, "\n"); fclose(file); + fclose(log); + system(cm); //running the killing command } else //else I'm the son process From bc1479622033114863f1ad6ecc63812ce4befa03 Mon Sep 17 00:00:00 2001 From: DouglasMaximo Date: Wed, 21 Oct 2015 19:37:44 -0300 Subject: [PATCH 29/29] =?UTF-8?q?Mudan=C3=A7a=20dos=20gr=C3=A1ficos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- teaching/2015.1-IAC-trabalho-pratico/I.png | Bin 12114 -> 12532 bytes teaching/2015.1-IAC-trabalho-pratico/II.png | Bin 22341 -> 14590 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/teaching/2015.1-IAC-trabalho-pratico/I.png b/teaching/2015.1-IAC-trabalho-pratico/I.png index eba03570215161eb4a46d07aeb02c72e518c2a24..8e69f9d1d30d67c95693465905b5c60f76b7a00c 100644 GIT binary patch literal 12532 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 literal 12114 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 diff --git a/teaching/2015.1-IAC-trabalho-pratico/II.png b/teaching/2015.1-IAC-trabalho-pratico/II.png index 40aa693e693c4c36ce70ebc6ee61c129347f1eab..ad7f031b70be6c09099efa3d5266be3d74fd32d6 100644 GIT binary patch literal 14590 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 literal 22341 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 A3jhEB