{"id":331,"date":"2008-06-24T16:23:53","date_gmt":"2008-06-24T16:23:53","guid":{"rendered":"https:\/\/driverentry.com.br\/en\/2008\/06\/24\/the-hardest-subject\/"},"modified":"2026-07-29T15:22:41","modified_gmt":"2026-07-29T15:22:41","slug":"the-hardest-subject","status":"publish","type":"post","link":"https:\/\/driverentry.com.br\/en\/2008\/06\/24\/the-hardest-subject\/","title":{"rendered":"The Hardest Subject"},"content":{"rendered":"<div style=\"text-align: right;\"><a href=\"https:\/\/driverentry.com.br\/2008\/06\/24\/a-materia-mais-dificil\/\"><img loading=\"lazy\" decoding=\"async\" title=\"Em Portugues\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/br.gif\" alt=\"\" width=\"21\" height=\"19\" \/><\/a><\/div>\n<p><img decoding=\"async\" style=\"float: right; margin: 0px 10px;\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/suicide-teddy.jpg\" border=\"0\" alt=\"\" \/><\/p>\n<p>As some of you are already tired of hearing, I am in the fifth year of Computer Engineering. At the beginning of the course I naturally struggled to learn Calculus, Algebra, Physics and those other subjects that make smoke come out of the calculator.<\/p>\n<p>Since I could not leave my technical high school and go straight into a university, I worked in the field for a while until I could afford the monthly tuition at a college. Interns really do earn little. That time, besides bringing me a bit of extra cash each month, also brought me a little experience. It was not much, but enough to spot the occasional slip-ups by professors during the programming classes. The Computer Engineering course lasts six years, and during that time I still had to work, not least because I had to pay for college. Over that period I ended up reading a book or two, or three, four, five, well, a few.<\/p>\n<p>It is natural for professors to tend not to explain exactly how things are or work, and thereby buy a little time to cover more topics in less detail. After all, you do not learn everything you need at university, but you do get a good sense of what you are getting yourself into when you go to work in the field, and where to start looking for more details on a given subject. I myself, in the driver courses I have taught, try to explain the essentials, what the student will actually use, but I always try to make it clear that there are details left to be seen.<\/p>\n<p>During the course, I could hardly wait to reach the technical subjects, the ones that would open my eyes to a new way of seeing electronic devices, integrated circuits and computers. After swallowing a few things sideways from the C Language and Software Engineering professors, I finally began to study something really interesting. The Operating Systems subject really is surprising. In it we study different operating systems running on different computer architectures. Phew! At least one architecture and one operating system I know reasonably well.<\/p>\n<p>It is fine for the professor to say that <span style=\"font-style: italic;\">Thread<\/span> and <span style=\"font-style: italic;\">Process<\/span> are the same thing, to explain <a href=\"http:\/\/en.wikipedia.org\/wiki\/Inter-process_communication\">Inter Process Communication<\/a> without even touching on <a href=\"http:\/\/en.wikipedia.org\/wiki\/Virtual_memory\">Virtual Memory<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/Marshalling_%28computer_science%29\">Marshaling<\/a>, but it was quite something trying to swallow the explanation about Synchronization and Interrupt Management in operating systems. All right, I can only say that the professor slipped up on Windows; I do not know all the other operating systems. I think he just chose the wrong operating system when giving an unfortunate example. I do not remember the exact words, but my professor taught us that Windows XP is not yet a preemptive operating system, and that calls to the operating system could not happen concurrently. First one, then the other, and so on. Personally, I think he must have confused XP with 9X. After all, both have the letter X. At that point I had to stop reading the <a href=\"http:\/\/www.amazon.com\/Developing-Drivers-Windows-Foundation-Developer\/dp\/0735623740\/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1214337511&amp;sr=8-1\">book I was reading<\/a> and ask him to repeat that. I could have misheard, but unfortunately that is not what happened. He really did say it. Later in the same class he told us that Windows XP still cannot manage interrupts properly, that if an interrupt occurs while a process is running, the system normally waits for the entire process to finish so that only afterward can it service an interrupt.<\/p>\n<p><img decoding=\"async\" style=\"float: right; margin: 0px 10px;\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/madagascar-penguins.jpg\" border=\"0\" alt=\"\" \/><\/p>\n<p>As in every university classroom, there is always a little group of students who hate Windows and defend some other operating system option. Nothing against them, nor against their choice, but every now and then some real piece of work shows up. Anyway, these ones soon said, ironically and laughing: <span style=\"font-style: italic;\">&#8220;Obviously! Because it is the smartest thing to do&#8221;<\/span>. And so everyone in the room started laughing at that terrible example of Windows interrupt management. I never say anything; I am that guy who gets to the room about 30 minutes early so I can read my book in peace. I do not go around campaigning for Windows or against other systems. I do not go around explaining how to complete an <a href=\"https:\/\/driverentry.com.br\/en\/2007\/02\/12\/cool-but-what-is-an-irp\/\">IRP<\/a> to every person I meet at the coffee shop, but this one I could not let slide. I asked the professor: <span style=\"font-style: italic;\">&#8220;Wow, how interesting! Where was it again that you read that?&#8221;<\/span>. <span style=\"font-style: italic;\">&#8220;In any Operating Systems book&#8221;<\/span> he answered me. See how naive of me: I imagined that the classic Operating Systems books had been written when Windows XP did not even exist yet. So I said: <span style=\"font-style: italic;\">&#8220;No offense, it is just that this is not what I have been seeing in the books I have been reading. Maybe I am reading the wrong books.&#8221;<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><a href=\"http:\/\/www.amazon.com\/Programming-Microsoft-Windows-Driver-Second\/dp\/0735618038\/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1214412567&amp;sr=1-1\"><img decoding=\"async\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/WDMBook.jpg\" border=\"0\" alt=\"\" \/><\/a><\/td>\n<td>\n<p><span style=\"font-weight: bold;\">Windows Driver Model (1999)<\/span><\/p>\n<blockquote>\n<p><span style=\"font-style: italic;\">&#8220;The operating system can preempt any subroutine at any moment for an arbitrarily long period of time, so we cannot be sure of completing critical tasks without interfere or delay. Even if we take steps to prevent preemption, code executing simultaneously on other CPU in same computer can interfere with our code.&#8221;<\/span><\/p>\n<\/blockquote>\n<p><br class=\"spacer_\" \/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.amazon.com\/Windows-Device-Development-Classic-Reprints\/dp\/0976717522\/ref=pd_bbs_sr_2?ie=UTF8&amp;s=books&amp;qid=1214412624&amp;sr=1-2\"><img decoding=\"async\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/devicedriversml.jpg\" border=\"0\" alt=\"\" \/><\/a><\/td>\n<td>\n<p><span style=\"font-weight: bold;\">Windows NT Device Driver Development (1999)<\/span><\/p>\n<blockquote>\n<p><span style=\"font-style: italic;\">&#8220;As was mentioned in Chapter 1, Windows NT is a pre-emptive, multithreaded, and multitasking, operating system. It employs a traditional operating system technique to provide this multitasking capability by associating a quantum with each thread when it starts running.&#8221;<\/span><\/p>\n<\/blockquote>\n<p><br class=\"spacer_\" \/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.temporeal.com.br\/produtos.php?id=153786\"><img decoding=\"async\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/Desvendando.jpg\" border=\"0\" alt=\"\" \/><\/a><\/td>\n<td>\n<p><span style=\"font-weight: bold;\">Desvendando o Windows NT (1998)<\/span><\/p>\n<blockquote>\n<p><span style=\"font-style: italic;\">&#8220;Como o Windows NT implementa um escalador preemptivo, se outro thread, com uma prioridade mais alta se aprontar para execu\u00e7\u00e3o, o thread sendo executado atualmente \u00e9 solicitado antes de terminar sua fatia de tempo.&#8221;<\/span><\/p>\n<\/blockquote>\n<p><br class=\"spacer_\" \/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.amazon.com\/Microsoft-Windows-Internals-4th-Server\/dp\/0735619174\/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1214412699&amp;sr=1-1\"><img decoding=\"async\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/Winternals.jpg\" border=\"0\" alt=\"\" \/><\/a><\/td>\n<td>\n<p><span style=\"font-weight: bold;\">Windows Internals (2005):<\/span><\/p>\n<blockquote>\n<p><span style=\"font-style: italic;\">&#8220;Windows implements a priority-driven, preemptive scheduling system the highest priority runnable (ready) thread always runs, with the caveat that thread chosen to run might be limited by the processors on wich the thread is allowed to run, a phenomenom called Processor Afinitty.&#8221;<\/span><\/p>\n<\/blockquote>\n<p><br class=\"spacer_\" \/><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><a href=\"http:\/\/www.amazon.com\/Developing-Drivers-Windows-Foundation-Developer\/dp\/0735623740\/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1214412741&amp;sr=1-1\"><img decoding=\"async\" src=\"https:\/\/driverentry.com.br\/en\/wp-content\/uploads\/2026\/07\/WDFBook.jpg\" border=\"0\" alt=\"\" \/><\/a><\/td>\n<td>\n<p><span style=\"font-weight: bold;\">Developing Drivers with Windows Driver Foundation (2007):<\/span><\/p>\n<blockquote>\n<p><span style=\"font-style: italic;\">&#8220;Windows is a preemptive multitasking operating system in wich multiple thread can try to aceess shared data or resources concurrently and multiple drivers functions can run concurrently.&#8221;<\/span><\/p>\n<\/blockquote>\n<p><br class=\"spacer_\" \/><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Anyway, it is obvious that I am not going to argue with my professor and turn my academic life into hell. Once again I will take a deep breath and let out that resounding <span style=\"font-style: italic;\">&#8220;Ahhhh, right&#8230;&#8221;<\/span>.<\/p>\n<p>It is at moments like these that I get worried about another aspect. Fortunately I can listen to and filter what the C Language programming and Operating Systems professors say, but there is nothing I can do about the Electronics, Artificial Intelligence, Microcontrollers and so many other subjects we are learning. Could it be that we are hearing the same nonsense and do not know it?<\/p>\n<p>In any case, the subject I thought would be the easiest is now one of those that torment me.<br \/>\n Keep reading&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As some of you are already tired of hearing, I am in the fifth year of Computer Engineering. At the beginning of the course I naturally struggled to learn Calculus, Algebra, Physics and those other subjects that make smoke come out of the calculator. Since I could not leave my technical high school and go [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-331","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/posts\/331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/comments?post=331"}],"version-history":[{"count":5,"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/posts\/331\/revisions"}],"predecessor-version":[{"id":336,"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/posts\/331\/revisions\/336"}],"wp:attachment":[{"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/media?parent=331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/categories?post=331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/driverentry.com.br\/en\/wp-json\/wp\/v2\/tags?post=331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}