This is actually the week of Spring Break, so not a whole lot is going on. I do have 3 full days of work, though, so that will give me time to do some computer related work on the side.
Unfortunately for me, though, a lot of time was spent trying to fix my Debian Mint system, as the latest Update Pack properly borked my system. Essentially, it only let me boot in to bash, with seemingly no internet connection, because many packages were broken, and some dependencies were missing. Luckily, I was able to fix it, an adventure which I will detail through an HPC2 project explaining how to fix packages and dependencies in such a way.
Not much is going on, as you might imagine. It seems to be independent work time for everyone. Some are working on computer simulation codes, others on the opus (like me!). I managed to finish up all of my keywords for the second part of my opus (a little late on it, but hey, I blame spring break. Yes, that thing I said I was going to do a lot of work during. That's always how it is planned out to be, isn't it?). I do believe my keywords are of a notable quality, and I am quite pleased with them. Now, I just have to get some experiments for part 2 and 3, and also start the keywords for part 3. Comp. Org. keywords are just a matter of doing a bit of reading and writing, but HPC2 requires making up some keywords, so that might take a little longer this time around.
Things are starting to wind down at this point. Our EOCE's have been announced and posted and whatnot. The end of the semester is necessarily stressful, it seems. Looking at the EOCE's, they seem to be just challenging enough. Well, except for the EOCE for HPC2, but it's understandable why it is extremely simple given the nature of the class. ASM's EOCE is actually pretty exciting, since the codes for it look to be pretty fun to write, barring and serious problems. At any rate, I'm going to try to keep to a very detailed schedule for the week leading up to my last final. I'll probably end up slacking, but with the detailed schedule I've written, plenty will still get done.
Things are wrapping up for real, now. It's the last day of the semester as far as our CS classes are concerned, as everything is due tonight. I'm writing about the end of the semester here due to the general lack of notable activity throughout the end of April. My EOCEs are more or less done, and all that remains is typing for my Opus and HPC2 projects. Those projects have been done already, they just haven't been archived in the halls of Lab46 forever via text format. Either way, the ASM EOCE was actually pretty fun, as I expected. I had some problems, but they were predominantly from my…adventurousness, shall I say? I wanted my code to be fancy, which was okay for all but the last bit of code. Wasn't as nice as I'd hoped, so I had to settle for a little above the bare minimum. A strong finish to my last semester here at Corning. Off to Bing after the summer!
The Fetch-Execute Cycle, also known as the Instruction Cycle, refers to the actions that the processor takes to essentially function. Simply, it explains how the processor grabs an instruction from memory, and carries out the actions required by the fetched instruction.
Below, a diagram detailing the Fetch-Execute cycle:
To clarify acronyms used within the image:
MAR: Memory Address Register MDR: Memory Data Register CIR: Current Instruction Register
[Source: Wikipedia: Instruction Cycle]
Processor Organization refers to the different parts of the processor and their relationship with one another. Some parts of a processor include–
Memory Organization refers to the hierarchy in which memory is put. From the highest level, which is closest to the processor, to the lowest–
Die map for the Intel Core i7 2600k processor, detailing the different parts of a processor. Note: the Core iX series of processors features an integrated graphics processor, which was not mentioned above. Integration of GPU's in to the CPU's die are a phenomenon that, while becoming more common, is still fairly recent.
[Source: PCMag.com]
A Subroutine is a break in the main flow of instruction, as we know, that operates a set of instructions mostly independent of the main set of instructions. We know this from the concept of functions already. Calling a subroutine is when the main set of instructions branches off in to said subroutine to perform the instructions defined within it. A return address is, of course, at the end of the subroutine, and it lets the processor know where operation left off before deferring to the subroutine.
Here's a simple example of code in C to demonstrate how a subroutine works:
int main() { int subroutineInstruction(); //Calling a subroutine return(0); } int subroutineInstruction() { printf("Operating subroutine...\n"); return(0); //Returning }
Stack Operations refers to how the FILO data structure known as a stack, in the case, the stack of operations and instructions for a processor, can be manipulated. Most importantly, we know about the push and pop operations.
Data can be represented in a number of ways. The smallest unit of data, as we know, is a bit– the binary digit. We also a byte, which is 8 bits. Integer (int) and Floating Point (float) are types of data. Integer is self explanatory (ex. 1, 2, 3, etc.), and floating point would be numbers like 1.00, 2.00, 3.00. ASCII is the American Standard Code for Information Interchange, which is a character-encoding scheme that takes a value and converts it to a character. Big Endian and Little Endian refer to how bits are stored in a byte. Big Endian stores big-end data first (ex. 0x1234), where Little Endian stores little end data first (ex. 0x3412).
Sign representation deals with encoding negative numbers in a binary system. One's Complement is one way to change a binary value to a negative complement value. All it does is flip every bit in the value, so 0's become 1 and 1's become 0. Two's Complement, however takes it a step further and adds one after flipping every value. This is so that negative values created through Two's Complement can easily coexist with positive numbers.
Example: Decimal Value: 9 Binary Value: 01001 One's Complement: 10110 Two's Complement: 10111 Decimal Value After: -9
Linking refers to putting together a bunch of different objects produced by the compiler together to form one program during the compile process. Object code, as we know is what a compiler produces when it is given source code. It is a level above Machine Code which is comprised of our familiar ones and zeroes. Machine Code is read by the processor, and as is such, is the lowest level of code.
Basically, to meet this objective, one must understand how all of the components of a computer work together to achieve what we see on our screens. This includes, specifically, how the processor works, as it is truly the heart of the computer.
This can be measured out through my progress with the opus and EOCE. Any other possible method would simply require that I repeat myself over again.
I posit that the my keyword section of my opuses demonstrate that I have met the objective. Here are some specific sections that support this claim:
Ultimately, as I said, there wasn't a whole lot else I could do other than point to my previous work or to repeat myself. I think my work on my opus speaks for itself, as far as this objective goes.
wicd is a network manager for Linux, which provides an alternative to the traditionally used NetworkManager program. It has a simple graphical interface that does not have any graphical dependencies, which allows it to be run on many different systems. It is often suggested as an alternative to NetworkManager when typical problems arise from generally simple situations.
Above, a screen cap of Wicd in action. The interface includes wired and wireless connections, and also provides the opportunity to adjust various options, making it much more flexible than NetworkManager.
When it comes to processor, the main two manufacturers are Intel and AMD. Both have a niche market, so to speak, and have various advantages over the other.
Much like the processor market, there are two big names in graphics processing– Nvidia and ATI/AMD. Their niche markets are not as clearly defined, but the loyalties to each manufacturer are the cause of many internet debates.
There are different form factors to consider with cases and motherboards. Here are some common form factors to take note of when building desktops:
An example of an ATX Motherboard. [Source: Nomenclaturo]
The inside of a Full ATX case. [Source: geeky-gadgets.com]
A Mid-ATX case for comparison. [Source: desinformado.com]
When it comes to Linux, there are many different desktop environments (or, DEs) to choose from. Here are some popular ones to consider when building a Linux system.
objectively best DE here whoop whoop i'm sorry do you see this beautiful desktop look at xfce in all of its glory
*ahem* An example of a Xfce desktop.
Here will be a minor discussion of the three major types of operating systems commonly used in personal computers nowadays.
At any rate, here would be my suggestions, if you forced me to pin a couple specific tasks for each OS to specialize in–
State the course objective
In your own words, define what that objective entails.
State the method you will use for measuring successful academic/intellectual achievement of this objective.
Follow your method and obtain a measurement. Document the results here.
Reflect upon your results of the measurement to ascertain your achievement of the particular course objective.
What is the question you'd like to pose for experimentation? State it here.
Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.
Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.
State your rationale.
How are you going to test your hypothesis? What is the structure of your experiment?
Perform your experiment, and collect/document the results here.
Based on the data collected:
What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've made.
What is the question you'd like to pose for experimentation? State it here.
Collect information and resources (such as URLs of web resources), and comment on knowledge obtained that you think will provide useful background information to aid in performing the experiment.
Based on what you've read with respect to your original posed question, what do you think will be the result of your experiment (ie an educated guess based on the facts known). This is done before actually performing the experiment.
State your rationale.
How are you going to test your hypothesis? What is the structure of your experiment?
Perform your experiment, and collect/document the results here.
Based on the data collected:
What can you ascertain based on the experiment performed and data collected? Document your findings here; make a statement as to any discoveries you've made.
Perform the following steps:
Whose existing experiment are you going to retest? Provide the URL, note the author, and restate their question.
Evaluate their resources and commentary. Answer the following questions:
State their experiment's hypothesis. Answer the following questions:
Follow the steps given to recreate the original experiment. Answer the following questions:
Publish the data you have gained from your performing of the experiment here.
Answer the following:
Answer the following: