User Tools

Site Tools


blog:spring2016:pgrant3:journal

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
blog:spring2016:pgrant3:journal [2016/03/08 01:44] – [FEB 29, 2015] pgrant3blog:spring2016:pgrant3:journal [2016/05/09 20:32] (current) – [May 2, 2016] pgrant3
Line 37: Line 37:
  
 This week we started to take a look at forking our programs.  We have to take the brute force methods and the square root methods that we had implemented last week, and make them much more efficient through the process of forking, allowing two or more algorithms, or multiple implementations of the same one to run simultaneously.  This will in turn reduce the run time of the program by 40ish percent.  At this point, I am still trying to wrap my head around how exactly to do this.  In class we had an implementation that I mostly understand, but running an algorithm, especially parsing information from the command line to do it, it a little more tricky.  I think that I have to just look at it a bit longer in order to grasp fully what is going on. This week we started to take a look at forking our programs.  We have to take the brute force methods and the square root methods that we had implemented last week, and make them much more efficient through the process of forking, allowing two or more algorithms, or multiple implementations of the same one to run simultaneously.  This will in turn reduce the run time of the program by 40ish percent.  At this point, I am still trying to wrap my head around how exactly to do this.  In class we had an implementation that I mostly understand, but running an algorithm, especially parsing information from the command line to do it, it a little more tricky.  I think that I have to just look at it a bit longer in order to grasp fully what is going on.
 +
 +====Mar 14, 2016===
 +
 +I have gotten a good grasp on how to implement a program that utilizing threading when finding prime numbers.  So far I have finished the brute force method, aside from putting the thread outputs back in order.  I am thinking that I can put them in strings like I did when running them under different processes.  I am just not completely sure how it is managing memory so I would like to get confirmation that I attempt to implement the solution to that problem.  I know implementing the square root threading program will be simple as I have the core concepts down.  I am much more comfortable using structs as well as the arrow operator in my programs now too.
 +
 +I think a big mental hurdle for me occurred last week when implementing multiple child processes.  Wrapping my head around what goes on in a program that you write without explicitly seeing it was new for me.  I couldn’t look at my program from the top down and analyze what was happening, I had to think about multiple things happening at the same time.  Threading takes the same mental approach and since I have, at least in my opinion, gained a new perspective when approaching problems, the solution came a bit easier.  After looking at it for a while and studying what threading is and the syntax to accomplish it, I  surprisingly had no logical errors on my first compile.  I can’t remember the last time that has happened.  I am confident that going forward with this project I can finish it without rushing last minute.
 +
 +Last week we also started to take a look at sockets.  I have a feeling that sockets are going to throw me for another mental curve ball.  We only started getting it set up, and I can’t even recall what exactly we did in class.  I can definitely wait for that project to come around.
 +
 +====Mar 21, 2016====
 +
 +It seems that I made a recurring mistake with regards to the threading project.  I assumed that after I had printed out the prime numbers, although not in order, that printing them in order would be relatively simple.  I was wrong.  Getting the threading to work went faster than I expected.  It was recommended to me that I use a 2d array in order to organize the output of the primes back in order so that it would pass the primerun test, and run correctly.  This was the first time that I had ever used a 2d array to solve a problem.  After looking online for a while, and having it explained to me, I got it implemented.  This part of the project took longer than actually implementing threading.  Picking up the pieces you put down is no joke.
 +
 +We are looking at sockets now and there is a lot to them.  I have a hard time gathering everything that we do in class, because it is so much information.  I can see it being done, but if I had to recreate it, or half the time even explain what the program did, it would not be as easy as anything has been so far this semester.  It is fascinating though.  It is the hardest but most interesting thing that we have done.  I am just glad that I have gotten the grasp of everything so far.  The fact that if you want a server to receive data from more than one client, threading is needed, or could be utilized, is cool.  How things build off of each other out of necessity.
 +
 +I started attempting to create my own client server model at home.  I started running virtual machines so that I can play with systems programming outside of lab46.  I am also reading Beej's guide to systems programming and while helpful, there is so much information in there that saying read through is a gross understatement.
 +
 +Hopefully by next week I will be writing about how I have set up my first client server model using virtualization and systems programming.
 +
 +====April 4, 2016====
 +
 +So after having a week off and many aspirations of accomplishing side projects and enhancing my learning experience, it turns out laziness won the day. Or week.  I didn't manage to get anything I had planned done.  I am okay with that though because I guess they give us break weeks for a reason.  I feel like actually utilizing a break week to take a break from school related activities.  I think it will be beneficial for me going forward into the last month of the semester and finals.
 +
 +I'm not sure if I wrote about finishing the project that was last due outright, just that I had implemented a 2d array to store the results and print them back out in order upon request.  When I was running the program at home, and even on a pod, it wasn't seeming to work.  After getting help and looking at the top command, it appeared that when I ran the program it was taking up much more memory than it was supposed to.  That sounds weird, but something is going on where it balloons out of control and hits the systems limits when it runs.  This messes up the execution, and makes it fail the tests in primerun.  After moving it to a system that has no memory restrictions, and when the restrictions were removed on lab46, the program ran perfectly fine.  I am not sure if I will be able to figure out why my program seems to be taking up so much memory.
 +
 +The Friday before break we didn't continue on sockets, but instead we starting looking at kernel commands and reading the bit patterns that have them set to active or not active.  We specifically did the with echo.  We didn't get too much deeper than that but it was certainly interesting seeing how direct bit patterns can dictate commands in the kernel.
 +
 +====April 11, 2016====
 +
 +It looks like we have diverged from looking at sockets for now.  We have learned a lot about them recently, and their uses are really interesting to me.  Now we are looking at something else that seems like it is pretty interesting in signals.  At this point we have just learned that certain programs can and will block signals, in certain kill commands.
 +
 +We starting by running a loop that counts and prints the integer it is currently at.  When a kill command is issued, or a signal is sent.  Depending on the signal, the program will react differently.  This is based completely on what we decide to have it do.  Using the signal function, we are able to block the original signal, and react how we choose to that attempted command.
 +
 +The intricacies that happen "under the hood" of our program and kernel, and how the commands are not actually interfaces with the program itself, but the CPU are still sort of mysterious to me.  The more we look at it, the more I am sure I will understand it.
 +
 +====April 18, 2016====
 +
 +Last week we continued to work on shared memory.  We are doing it in the form of a basic sort of chat room.  Since everything is a file in unix, we are writing to files that others access.  When one person writes to a file, everyone else reads from it.  After messing with in class for a few days we seem to have gotten it working on a basic level.  When one person writes a message to their screen, it ends up displaying that onto the screen of anyone else running the same program.
 +
 +Were looking into shared memory on a very basic level.  I am excited to look deeper into it to see where we can go with it.  There is talk of using ncurses to make a paceman like game and have other users control the ghosts or something of that nature while one player controls pacman.  We talked in class about how this was capable of being done on a closed network, and that if you were to open it up to other networks that it would be easy for somebody to do something malicious.
 +
 +====April 25, 2016====
 +
 +This past week we got our end of course experience.  I can't wait to get started on that.  It brings back such great memories from C programming and Unix.  In all seriousness, I am excited to work on it and see how much I have retained throughout the semester.  It seems like we have covered so much, and at the same time, it feels like we have barely scratched the surface.  I know going forward that there is always much more to be learned.  Now I feel like I have a basic understanding of how to find the information I need.
 +
 +This week we have also started looking at and playing with ncurses.  This is the first time I have ever looked at this library.  In class we basically did fancy things with a hello world version of ncurses.  It turns out that it is pretty fun to mess with.  After messing with it in class we were asked to create a program that would move a cursor type character, in the variations of V, around the screen in a spiral, where the V would face whichever direction the cursor was going.  There was something else we were asked to look at but I honestly can't remember what it was.  I think we're going to go over it in class tomorrow though so I think I will be okay.
 +
 +As far as the cursor program, when I first started working on it I assumed it would be a giant headache figuring out how to plot where to print to, because thats all that it requires.  It turns out after looking at it and playing around with it for an hour or two, that you only need four sequential for loops embedded within a standard i counter loop, with some variation on conditions based on the i value to get it to function properly.  The only thing that is a little annoying about ncurses is that when you test your program to see if it runs properly, you're just staring at a blinking moving cursor around the screen.  It almost strains your eyes after a while.  Hopefully I don't have the tetris effect of that animation when I go to sleep.
 +
 +====May 2, 2016====
 +
 +This week starts the last week of the semester.  It seems like it has gone by really fast.  The fastest of the three semesters I have been attending college.  I have taken a deeper look into the end of course experience and am comfortable that I will be able to maintain a solid pace to finish it on time.  Especially since my finals week isn't too rigorous this semester.
 +
 +In class we're continuing to look at ncurses and are creating an ncurses pacman game.  This project branches out further in my opinion than any we have done thus far.  We're getting into multi file implementations, which is always nice to gain experience with.  So far we are working on getting the attributes of what we are going to print to the screen finished.  Hopefully tomorrow in class we can finish creating the game field at the very least.  I feel like we can get further than that for sure.
 +
 +====May 9, 2016====
 +
 +So this is going to be my last opus entry for the standard opus outside of the eoce.  I am working through the end of course experience now and it seems to be going smoothly.  We have covered so much but it is nice that I have so many examples, and can reliably find information on my own to figure things out now in a manner that is more efficient previous to me taking this class.  I am confident I will finish on time.
 +
 +Whether or not I will need to come in to class to clear some things up is still up in the air, but hopefully I don't have to make an extra trip up to the college to finish it up.  Going forward I am looking forward to taking data structures.  I feel that systems programming is a nice gap class to have taken to learn a lot of new things, that I will be able to apply during data structures.
 ====CONTENT QUESTIONS==== ====CONTENT QUESTIONS====
  
blog/spring2016/pgrant3/journal.1457401481.txt.gz · Last modified: 2016/03/08 01:44 by pgrant3