|
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
|
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
|
<channel>
|
|
|
<title>Preface on System Programming</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/</link>
|
|
|
<description>Recent content in Preface on System Programming</description>
|
|
|
<generator>Hugo -- gohugo.io</generator>
|
|
|
<language>en-US</language><atom:link href="https://doc.cyub.vip/cs341/en/index.xml" rel="self" type="application/rss+xml" />
|
|
|
<item>
|
|
|
<title></title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap1/Authors/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap1/Authors/</guid>
|
|
|
<description>Authors # Bhuvan Venkatesh &lt;bhuvan.venkatesh21@gmail.com&gt; Lawrence Angrave &lt;angrave@illinois.edu&gt; joebenassi &lt;joebenassi@gmail.com&gt; jakebailey &lt;zikaeroh@gmail.com&gt; Ebrahim Byagowi &lt;ebrahim@gnu.org&gt; Alex Kizer &lt;the.alex.kizer@gmail.com&gt; dimyr7 &lt;dimyr7.puma@gmail.com&gt; Ed K &lt;ed.karrels@gmail.com&gt; ace-n &lt;nassri2@illinois.edu&gt; josephmilla &lt;jjtmilla@gmail.com&gt; Thomas Liu &lt;thomasliu02@gmail.com&gt; Johnny Chang &lt;johnny@johnnychang.com&gt; goldcase &lt;johnny@johnnychang.com&gt; vassimladenov &lt;vassi1995@icloud.com&gt; SurtaiHan &lt;surtai.han@gmail.com&gt; Brandon Chong &lt;bchong95@users.noreply.github.com&gt; Ben Kurtovic &lt;ben.kurtovic@gmail.com&gt; dprorok2 &lt;dprorok2@illinois.edu&gt; anchal-agrawal &lt;aagrawa4@illinois.edu&gt; Lawrence Angrave &lt;angrave@illinois.eduuutoomanyu&gt; daeyun &lt;daeyunshin@gmail.com&gt; bchong95 &lt;bschong2@illinois.edu&gt; rushingseas8 &lt;georgealeks@hotmail.com&gt; lukspdev &lt;lllluuukke@gmail.com&gt; hilalh &lt;habashi2@illinois.edu&gt; dimyr7 &lt;dimyr7@hotmail.com&gt; Azrakal &lt;genxswordsman@hotmail.com&gt; G. Carl Evans &lt;gcevans@gmail.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Condition Variables</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap7/Condition_Variables/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap7/Condition_Variables/</guid>
|
|
|
<description>Condition Variables # Condition variables allow a set of threads to sleep until woken up. The API allows either one or all threads to be woken up. If a program only wakes one thread, the operating system will decide which thread to wake up. Threads don’t wake threads other directly like by id. Instead, a thread ‘signal’s the condition variable, which then will wake up one (or all) threads that are sleeping inside the condition variable.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Debugging and Environments</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap2/Debugging_Environments/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap2/Debugging_Environments/</guid>
|
|
|
<description>Debugging and Environments # I’m going to tell you a secret about this course: it is about working smarter not harder. The course can be time-consuming but the reason that so many people see it as such (and why so many students don’t see it as such) is the relative familiarity of people with their tools. Let’s go through some of the common tools that you’ll be working on and need to be familiar with.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>GDB</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap2/GDB/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap2/GDB/</guid>
|
|
|
<description>GDB # GDB is short for the GNU Debugger. GDB is a program that helps you track down errors by interactively debugging them (“GDB: The Gnu Project Debugger”1). It can start and stop your program, look around, and put in ad hoc constraints and checks. Here are a few examples.
|
|
|
Setting breakpoints programmatically # A breakpoint is a line of code where you want the execution to stop and give control back to the debugger.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Homework 0</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap2/Homework0/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap2/Homework0/</guid>
|
|
|
<description>Homework 0 # // First, can you guess which lyrics have been transformed into this C-like system code? char q[] = &#34;Do you wanna build a C99 program?&#34;; #define or &#34;go debugging with gdb?&#34; static unsigned int i = sizeof(or) != strlen(or); char* ptr = &#34;lathe&#34;; size_t come = fprintf(stdout,&#34;%s door&#34;, ptr+2); int away = ! (int) * &#34;&#34;; int* shared = mmap(NULL, sizeof(int*), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0); munmap(shared,sizeof(int*)); if(!</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Mutex</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap7/Mutex/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap7/Mutex/</guid>
|
|
|
<description>Mutex # Synchronization coordinates various tasks so that they all finishin the the correct state. In C, we have series of mechanisms to control what threads are allowed to perform at a given state. Most of the time, the threads can progress without having to communicate, but every so often two or more threads may want to access a critical section. A critical section is a section of code that can only be executed by one thread at a time if the program is to function correctly.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Semaphore</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap7/Semaphore/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap7/Semaphore/</guid>
|
|
|
<description>Semaphore # A semaphore is another synchronization primitive. It is initialized to some value. Threads can either sem_wait or sem_post which lowers or increases the value. If the value reaches zero and a wait is called, the thread will be blocked until a post is called.
|
|
|
Using a semaphore is as easy as using a mutex. First, decide if on the initial value, for example the number of remaining spaces in an array.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Systems Architecture</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap2/Systems_Architecture/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap2/Systems_Architecture/</guid>
|
|
|
<description>Systems Architecture # This section is a short review of System Architecture topics that you’ll need for System Programming.
|
|
|
Assembly # What is assembly? Assembly is the lowest that you’ll get to machine language without writing 1’s and 0’s. Each computer has an architecture, and that architecture has an associated assembly language. Each assembly command has a 1:1 mapping to a set of 1’s and 0’s that tell the computer exactly what to do.</description>
|
|
|
</item>
|
|
|
|
|
|
<item>
|
|
|
<title>Valgrind</title>
|
|
|
<link>https://doc.cyub.vip/cs341/en/chap2/Valgrind/</link>
|
|
|
<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
|
|
|
|
|
|
<guid>https://doc.cyub.vip/cs341/en/chap2/Valgrind/</guid>
|
|
|
<description>Valgrind # Valgrind is a suite of tools designed to provide debugging and profiling tools to make your programs more correct and detect some runtime issues (“4. Memcheck: A Memory Error Detector,” #ref-valgrind). The most used of these tools is Memcheck, which can detect many memory-related errors that are common in C and C++ programs and that can lead to crashes and unpredictable behavior (for example, unfreed memory buffers). To run Valgrind on your program:</description>
|
|
|
</item>
|
|
|
|
|
|
</channel>
|
|
|
</rss>
|