מספר גדילים שונים של rRNA מקוּדדים על ידי גן בודד; גן זה עשוי לקודד ל-rRNA של היחידה הקטנה ושל היחידה הגדולה יחדיו; סידור הגדילים השונים מתבצע לאחר השעתוק. הגנים משועתקים לשתי יחידות והריבוזום מסודרים באשכולות על גבי ה-DNA. ריבוי הגנים בייצורים השונים שהוזכר לעיל הוא למעשה הכפלה של גנים אלו; בייצורים מפותחים קיימים מאות עותקים זהים של הגנים ל-rRNA.
לאחר שעתוק הגנים ל-rRNA נוצר באיקריוטים תעתיק המכונה pre-rRNA, "קדם rRNA". תעתיק זה עובר מספר תהליכי עיבוד לפני קבלת ה-rRNA הסופי. תהליכי העיבוד, המתרחשים בגרעינון, מתבצעים בעיקר על ידי RNA") snoRNA גרעינוני קטן"). תהליכי העיבוד כוללים:
ביצורים איקריוטיים מוקדש האנזים RNA פולימראז I לשעתוקם של הגנים המקודדים ל-rRNA (את הגנים המקודדים לחלבון משעתק RNA פולימראז II, ואת הגנים ל-tRNA, וכן לסוג בודד של rRNA, משעתק RNA פולימראז III). הקדשת אנזים ייחודי לייצור rRNA מבטיח ייצור מהיר ויעיל ואספקה שוטפת של הכמויות הרבות של rRNA הדרושות לקיום התא. RNA פולימראז I נקשר אך ורק לקדמים השייכים לגנים של rRNA, ולפיכך "דעתו אינה מוסחת" על ידי שאר הקדמים בגנום.
תפקיד.
גודלם של גדילי rRNA המרכיבים את היחידה הקטנה של הריבוזום נע בין 1500 ל-1900 נוקלאוטידים. ה-rRNA של היחידה הגדולה מונה בין 2900 ל-4700 נוקלאוטידים. ה-rRNA מהווה תשתית למבנה הריבוזום ומקנה נקודות אחיזה לחלבונים הרבים הבונים את הריבוזום. עם זאת, ל-rRNA גם תפקיד קטליטי: הוא מזרז את התגובה המביאה ליצירת קשר פפטידי בין חומצות האמינו. במשך שנים סברו החוקרים כי חלבוני הריבוזום אחראיים לכך; גילוי הפעילות הקטליטית של rRNA חולל מהפכה בביולוגיה המולקולרית. rRNA חיוני, לפיכך, לבניית החלבון.
ה-rRNA הוא בעל קצב שינוי מאוד איטי, ולפיכך משמש בקביעת מרחקים פילוגנטיים (קרבה אבולוציונית) בין ממלכות ומערכות בעולם החי. למרות הצורך בכמות רבה של rRNA בתא, התגלה כי בזבוב הפירות ובצפרדע ניתן להשתיק או למחוק כמחצית מהגנים המקודדים ל-rRNA מבלי שייגרם נזק לייצור.
רנ&quot;א מעביר
מסגרת הקריאה הפתוחה של הגן
אקסון (גנטיקה)
בגנטיקה, אקסון (באנגלית: Exon) הוא רצף נוקלאוטידים ב-DNA המהווה חלק מה-mRNA הבוגר לאחר ששאר חלקי הגן אשר קרויים אינטרונים מוצאים החוצה בתהליך של splicing
המושג נטבע על ידי וולטר גילברט ב-1978 והוא נגזר מהמילה Expressed באנגלית, "מבוטא". יחד עם זאת, לא בהכרח מתורגם כחלק מהחלבון. (ייתכן ונמצא ב-mature mRNA בקצה 5'-UTR או 3'-UTR)
היות שאינטרונים מופיעים כמעט באופן בלעדי בייצורים איקריוטיים, הרי שבחיידקים ובנגיפים המושג "אקסון" אינו רלוונטי; לחלופין ניתן לומר כי גן שאינו מכיל אינטרונים מורכב מאקסון בודד. האקסונים מהווים חלק קטן מרוב הגנים האיקריוטיים (בין אחוז לאחוז וחצי מכלל הגנום); רוב הנוקלאוטידים בכל גן משתייכים לאינטרונים. קצוות הגן הם תמיד אקסונים; האינטרונים מופיעים בפנים הגן בלבד. לאחר תהליך השעתוק, בו נבנה גדיל mRNA לפי תבנית ה-DNA, נחתכים האינטרונים מה-mRNA והאקסונים מחוברים האחד לשני בתהליך הקרוי שחבור. לפיכך, האינטרונים אינם זוכים לצאת מגרעין התא אל הריבוזומים ולהיות מתורגמים לחומצות אמינו, אבני הבניין של החלבונים. גדיל mRNA שטרם עבר שחבור נקרא pre-mRNA או hnRNA.
בין גנים המשתייכים למשפחה מסוימת קיימת בדרך כלל זהות רבה באקסונים, זאת לעומת שוני באינטרונים. היות שהאקסונים מקודדים לחלבונים, הרי שקיים "צורך" אבולוציוני לשמר את רצף הנוקלאוטידים ככל שניתן; באינטרונים לא קיים צורך זה והם לפיכך מועדים יותר לשינוי. הדבר נכון גם לגבי גנים הומולוגיים בייצורים שונים; בדרך כלל קיימת זהות רבה באקסונים של גנים אלו, זאת לעומת אינטרונים שונים לחלוטין.
אקסון בייצורים מפותחים מקודד בממוצע לכחמישים חומצות אמינו. הגן המקודד לחלבון האנושי טיטין מכיל את מספר האקסונים הרב ביותר בטבע—178—וכן את האקסון הארוך ביותר בגנום האנושי—17,000 נוקלאוטידים. טיטין מורכב מכ-27,000 חומצות אמינו. אקסונים מקודדים לעיתים קרובות לאזורים (או "תת-יחידות") בעלי מבנה ותפקיד מוגדר בחלבון. הדוגמה הקלאסית לתופעה זו היא הגנים המקודדים לנוגדנים של מערכת החיסון. כל אזור מוגדר בנוגדן (האזור הקבוע והאזור המשתנה, למשל) מקודד על ידי אקסון נפרד.
סך כל האקסונים בגנום מסוים מכונים אקסום (exome).
איסוף זבל (מדעי המחשב)
איסוף זבל (באנגלית: Garbage collection) הוא תהליך שבו סביבת הריצה של תוכנית מחשב משחררת באופן אוטומטי זיכרון שהוקצה דינאמית ואין בו עוד צורך.
המנגנון הומצא ויושם לראשונה בשנת 1959 על ידי ג'ון מקארתי עבור שפת Lisp. איסוף זבל נפוץ בשפות תכנות מונחות-עצמים מודרניות כגון Java ו-#C, וכן בשפות המורצות על ידי מפרש כמו Perl, פייתון, PHP ו-JavaScript. יש שפות כגון עדה ושפת D (ובמידה מסוימת גם Delphi) המאפשרות למתכנת לבחור אם להשתמש במנגנון זה או לנהל הקצאות ושחרור זיכרון באופן עצמאי.
בהקשר הנוכחי, "זבל" הוא כל מקטע זיכרון שהוקצה באופן דינמי ואין בו ולא יהיה בו שימוש נוסף בתוכנית. מצב בו זיכרון "זבל" לא משוחרר מכונה "דליפת זיכרון" (Memory leak) ועלול להביא למצב בו משאבי הזיכרון שהתוכנית משתמשת בהם הולכים וגדלים ובסופו של דבר אף לקריסה (הפסקת ריצה לא מתוכננת) של התוכנית.
איסוף זבל חוסך מהמתכנת את המעקב אחר זיכרון שהוקצה במהלך ריצת התוכנית ואת שחרורו באופן מפורש. באופן עקרוני, יש קושי עצום להגדיר שפת תכנות המכילה רפרנסים (או מצביעים) כך שתהיה בעלת טיפוסיות חזקה ובטוחה, אם היא הכוללת שחרור זיכרון מפורש (במקום איסוף זבל).
חסרונו הבולט של המנגנון הוא תוספת מסוימת של תקורות בביצועי התוכנית בפועל, ובמיוחד התנהגות לא דטרמיניסטית של זמן הריצה באופן שאיננו ברור מקוד התוכנית, היבט משמעותי במיוחד עבור תוכניות זמן אמת. בנוסף, מנגנוני איסוף זבל לא מזהים דליפת זיכרון שנובעת מהחזקה של אובייקטים שאינם בשימוש בתוך מבני נתונים (כגון רשימה) שנמצאים בשימוש, ואינם יכולים למנוע דליפת זיכרון מסוג זה.
יישום איסוף אוטומטי בשפות תכנות.
רוב שפות התכנות המודרניות כגון Java, Basica, Lisp, פייתון, C# (כחלק מכלל פלטפורמת ה-NET.), Ruby וג'וליה משחררות את המתכנת מניהול מפורש של שחרור הזיכרון שהוקצה, ומותירה את הניהול למנגנון איסוף זבל שמתבצע בזמן ריצה.
שפת C לא מגדירה איסוף זבל, ועל המתכנת מוטלת האחריות לשחרר באופן מפורש כל זיכרון שהוקצה. עם זאת, השפה לא אוכפת בזמן קומפילציה את ניהול הזיכרון. מסיבה זו, דליפות זיכרון הן בעיה חמורה ושכיחה ביותר בתכנות בשפת C, וישנן תוכנות מיוחדות שמטרתן לעזור לאתר דליפות זיכרון.
בשפת ++C, בדומה לשפת C, לא קיים איסוף זבל אוטומטי, אבל ניתן לדמות איסוף זבל אוטומטי באמצעות "מצביעים חכמים", אובייקטים שעוטפים מצביעים רגילים ומנהלים את איסוף הזבל של הזיכרון אליו הם מצביעים באופן אוטומטי (למשל באמצעות מניית התייחסויות). מנגנון זה פותר חלק מהבעיות הקשורות בדליפת זיכרון, אך לא מאפשר לטפל באופן אוטומטי בכל תבנית של ניהול זיכרון.
שפת Rust אוכפת בזמן קומפילציה, דרך מערכת הטיפוסים, ניהול חוקי של הזיכרון. בכך הופכת השפה את איסוף הזבל בזמן ריצה לטריוויאלי, ומשיגה יעילות יחד עם היעדר דליפות זיכרון. המחיר הוא מערכת טיפוסים מורכבת ולעיתים לא אינטואיטיבית, שדורשת השקעה משמעותית על מנת לקמפל תוכניות.
טכניקות איסוף זבל אוטומטי.
קיימות שתי טכניקות עיקריות של איסוף זבל אוטומטי.
סימון ומחיקה.
טכניקה אחת, הקרויה "סימון ומחיקה" (Mark and sweep). בשיטה זו, אחת לכמה זמן מתעורר תהליך שעובר על האובייקטים שנמצאים בשימוש כרגע (בשפות תכנות בדרך כלל מדובר באובייקטים סטטיים וגלובליים ואובייקטים במחסנית). התהליך רץ על כל ההצבעות שנמצאות בשימוש אל אובייקטים הנמצאים בזיכרון באזור הערימה (heap) שהוקצו דינמית, ומסמן את כל האובייקטים שעבר דרכם כאובייקטים בשימוש. לבסוף, כל האובייקטים שאינם מסומנים נמחקים.
היתרונות העיקריים של שיטה זו:
החסרונות העיקריים של סימון ומחיקה:
מניית התייחסויות.
טכניקה נוספת הקרויה "מניית התייחסויות" (Reference counting) מבוססת על כך שלכל אובייקט יש מונה הסופר את מספר המצביעים שמתייחסים אליו. ברגע שמספר ההתייחסויות יורד ל-0, האובייקט מוחק את עצמו באופן אוטומטי.
היתרונות של שיטה זו:
החסרונות של שיטה זו:
בשל פשטותה היא נמצאת בשימוש במספר רב של סביבות ריצה, כגון פרל, פייתון, PHP ועוד.
איסוף זבל ב-.NET וב-Java.
כאמור לעיל, מספר שפות משתמשות במנגנון איסוף זבל אוטומטי. המכונה הווירטואלית מחייבת שכל האובייקטים יוקצו בערימה המנוהלת (managed heap). המתכנת לא משחרר אובייקטים מהערימה, אלא הם משוחררים אוטומטית כאשר לאפליקציה אין עוד שימוש בהם. האלגוריתם שבו מתבצע איסוף הזבל ב-.NET הוא סימון ומחיקה.
Finalization.