זה תלוי איך אתה מגדיר 'מחשב' ..
בקצה הקטן יותר של הסולם, מה שאתה יכול לקרוא למיקרו-בקרים מסורתיים, אינך מקבל ניהול זיכרון ולעתים נדירות אתה רואה עוד זיכרון RAM מהכמות הזעירה המוטמעת בשבב. אני מודה במעט מאוד ידע על הארכיטקטורה של המיקרו-בקרים המסוגלים יותר הקיימים כעת, אך קיומם (או היעדרם) של תכונות אלה הוא כנראה המפתח להבחנה בין מכשיר המתאים ביותר ליישומים משובצים או לחישוב למטרות כלליות. .
על ידי 'ניהול זיכרון' אני מתייחס ליכולת להריץ תוכניות במרחבי כתובות וירטואליים ולמפות אותן ל- RAM הפיזי הקיים במערכת, פונקציה המבוצעת על ידי מה שמכונה בדרך כלל ניהול זיכרון יחידה (MMU).
ללא MMU, אם אתה מנסה להריץ מספר תהליכים, כולם נאלצים לשתף מרחב כתובות יחיד, ופירוש הדבר כי אלא אם כן כל התהליכים המעורבים עומדים בתכנית הקצאת הזיכרון שלך , תהליך אחד יכול בקלות לקרוס אחר. אז אם אתה בשליטה מוחלטת בתכנון כל התהליכים, כמו במערכת משובצת, זה לא כל כך דאגה. עם זאת, אם אתה מנסה לתמוך בחישוב למטרות כלליות, אינך יכול להבטיח שכל הקוד אשר יבוצע יכבד את תוכנית הקצאת הזיכרון, והמערכת תהיה שברירית למדי.
חוסר זיכרון RAM גם אינו מהווה בעיה גדולה עבור מערכות משובצות, (1) מכיוון שיש בדרך כלל הרבה פלאש, ו (2) אי היותך מחשב למטרות כלליות אומר שאתה לא צריך לדאוג להפעלת תוכניות לא צפויות בהוראת משתמש. אתה יודע מבעוד מועד את הסכום הכולל של כל התוכנות שיפעלו במערכת, ואתה זקוק רק ל- RAM עבור משתנים עבור אותה תוכנה. כאשר אתה מנסה להפוך את המערכת שלך למחשב למטרות כלליות, עם זאת, המשתמשים יצפו שיוכלו להריץ את מה שמתאים להם, וזה דורש זיכרון RAM.
עכשיו, זה בסדר גמור לבצע חישוב למטרות כלליות במכשירים ללא MMU, ולא הרבה זיכרון. מחשב ה- IBM המקורי של 128K זיכרון RAM, מבוסס 8088 (16 סיביות), מחשב זה, כל עוד היית צריך להריץ תוכנית אחת בכל פעם.
אז אם אתה רוצה להגדיר 'מחשב' כמשהו כמו טכנולוגיית 1982, התשובה היא בהחלט כן. או אם יש לך מערכת סגורה בה תוכל להקל על הבעיות שאין לך MMU ו / או הרבה זיכרון RAM (למשל, טלפונים סלולריים) על ידי שליטה קפדנית בעיצוב התוכנה, גם כן. לחלופין, אם למיקרו-בקר שלך יש MMU מובנה ו gobs של זיכרון RAM (או יכול להכיל אותם חיצונית), אתה אמור להיות מסוגל לבנות מערכת הדומה יותר למחשבים הנוכחיים.