Wie viel Hardware-Verständnis braucht man, um "Operating System" - und "Computer Architecture" -Kurse zu verstehen, die man als Informatikstudent nimmt?Hardware-Kenntnisse in der Informatik?
Antwort
Zwei Gedanken:
Zuerst läuft alles parallel. Multi-Threading ist eine Sache, Multi-Core ist eine andere. Es gibt Unmengen von Problemen rund um Caching, Speicherarchitektur, Ressourcenallokation usw. Viele davon werden für Sie "gehandhabt", aber je mehr Sie über das Metall wissen, desto besser.
Zweitens, Nummern Darstellungen in Hardware. Das ist so alt wie die Informatik selbst, aber es stolpert immer noch alle. Ich bin mir nicht sicher, wer das gesagt hat, aber es ist ein Vertrauensschüler: "Eine Unendlichkeit von Zahlern auf eine endliche Anzahl von Bits abzubilden erfordert Annäherungen." Wenn Sie dies und die numerische Analyse im Allgemeinen verstehen, werden Sie Ihren Speck immer wieder sparen. Serialisierung und Endian-Ness usw.
Außerdem macht es Spaß!
Auf dieser Ebene, je mehr Sie wissen, desto besser, aber das Nötigste sind Boolean Logik-Design für Computer-Architektur. Verstehen Sie, wie Sie Register, Addierer, Multiplexer, Flipflops usw. aus grundlegenden Logikeinheiten (und oder oder) erstellen. Sie können Betriebssysteme wahrscheinlich verstehen, ausgehend von Grundkenntnissen von ASM, Memory-Mapped IO und Interrupts.
EDIT: Ich bin nicht sicher, was Sie mit "Hardware" meinen, betrachten Sie Logik-Design als Hardware? Oder hast du über Transistoren gesprochen? Ich denke, es würde nicht schaden, die Grundlagen von Halbleitern zu verstehen, aber die Architektur wird über die reale Hardwareebene hinaus abstrahiert. Ich würde auch sagen, dass Betriebssysteme über die Architektur abstrahiert sind.
"In der Informatik geht es nicht mehr um Computer als in der Astronomie um Teleskope."
ja, aber Ihre Analogie ist nicht vollständig richtig. Computer-Architektur ist über Computer als (Teleskop-Design-Feld einfügen) ist über Teleskope. –
Ein passendes Zitat, solange es nicht falsch interpretiert wird. Ein Astronom, der nichts von Teleskopen weiß, würde sich in der Astronomie kaum auszeichnen. –
Genau das ist der Punkt. Wenn Sie nicht wissen, wie Ihre Teleskope funktionieren, die Physik dahinter, ihre Eigenschaften und Einschränkungen, dann sind Sie ein sehr armer Astronom. –
Auf der grundlegenden Ebene sollten Sie über Von Neumann architecture wissen und wie es auf echten Computern abbildet. Je mehr, desto besser. Und nicht nur das Betriebssystem - in Müll gesammelt & VM-Sprachen, wie der Heap, Stack und Anweisungen arbeiten und ausgeführt werden, damit Sie wissen, was schlecht und wie es verbessert wird, um das Beste aus der Architektur zu erzielen.
Ein guter Weg, um ein Basiswissen für Hardware-Kenntnisse zu ermitteln, die für Comp Sci-Studien allgemein benötigt werden, ist der Besuch der Curriculum-Websites einer Vielzahl von angesehenen Universitäten. Für mich würde ich den Comp Sci-Lehrplan am MIT, Stanford, Universität von Illinois in Urbana/Champaign (UIUC), Georgia Tech, etc. überprüfen. Dann würde ich ein durchschnittliches Verständnis davon bekommen.
Darüber hinaus können Sie auch Beratungsberater an Universitäten, an denen Sie teilnehmen oder sich bewerben, persönlich anrufen, um einen persönlichen Überblick über Ihre Bedürfnisse zu erhalten. Sie wären verfügbar, um Sie basierend auf Ihren Wünschen zu führen. Professoren noch mehr. Sie sind überraschend zugänglich und sehr bereit, Feedback zu solchen Dingen zu geben.
Kürzlich sah ich mich nach meinem Master-Abschluss greifen. Als Alain von UIUC habe ich ein paar alte Professoren dort gemailt und ihnen von meinem Interesse erzählt. Ich stellte ihnen einige Fragen, die darauf abzielten, die Schule und ihre Perspektive zu verstehen. Sie teilten und luden mich am meisten ein, anzurufen und zu chatten.
Persönlich würde ich @CookieOfFortune zustimmen. Je mehr Sie darüber wissen, wie ein Computer intern arbeitet, desto mehr können Sie dies beim Schreiben von Software zu Ihrem Vorteil nutzen. Das heißt, es ist nicht so, dass Sie die Physik der Elektronik in hohem Maße verstehen müssen. Es ist interessant, sicher, aber Ihr Fokus sollte auf Schaltung, Logik usw. liegen. Vieles davon sollte in einem guten Betriebssystem-Kurs präsentiert werden oder zumindest Sprungbretter bereitstellen, um selbst mehr zu lernen.
Es hilft, wenn Sie versuchen, für die Hardware, die Sie anvisieren, zu optimieren. Nehmen Sie eine Festplatte zum Beispiel, es hilft, Software zu schreiben, die Standort ausnutzt, um Suchzeit zu minimieren. Wenn Sie eine Festplatte nur so behandeln, wie sie funktioniert, und Dateien und Daten überallhin kleben, werden Sie mit starken Fragmentierungsproblemen konfrontiert, die zu einer geringeren Leistung führen.
Viele dieser Faktoren werden beim Entwerfen eines Betriebssystems berücksichtigt, da Sie versuchen, die Leistung zu maximieren. Kurz gesagt, etwas darüber zu lernen kann helfen und kann in keiner Weise schaden.
Um es klar zu stellen, es klingt wie Sie fragen, wie viel Hardware-Verständnis Sie vollständig verstehen müssen "Betriebssystem" und "Computer Architecture" Kurse, die Sie als comp sci Schüler nehmen werden. Ist das korrekt? –
@yx: Ich denke, er fragt, ob man Hardware verstehen muss, um Dinge wie Betriebssysteme und Computerarchitektur zu verstehen. Ich bin mir jedoch nicht sicher. Es ist eine sehr kryptische Frage. – Welbog
@mike das macht viel mehr Sinn, für eine Sekunde dachte ich, er war Betriebssystem als Hardware –