
- •Unit 3. Operating System Software
- •3.1 Structure
- •3.1.1 Layers of Software
- •Layers and Process Management
- •Encapsulation and Abstraction
- •The Role of the bios
- •Changing bios Settings
- •3.1.3 Process Control
- •3.2 Device Management and Configuration
- •Interrupt Priority and Nested Interrupts
- •Traps and Faults
- •Changing a Driver's Configuration
- •Managing Memory
- •Relocation
- •Virtual Memory
- •3.3.2 File and Printer Sharing
- •Printers
- •Файловые системы
- •3.4.1 File Organization
- •Folders
- •Shortcuts
- •File Names and Types
Managing Memory
Управление памятью
Управление память системы является важным работа ядра . Некоторые из основной памяти компьютера (DRAM ) зарезервировано для операционной системы , но большинство из них доступно для пользовательских программ . Давайте предположим, что пользователь работает веб-браузер , редактор и компьютерную игру . Каждая из этих программ требуется определенное количество памяти , но никто из них не нуждается в доступе ко всей памяти. Ядро выделяет некоторый объем памяти для каждой программы и отслеживает то, что программа использует чему.
Современные операционные системы , такие как Linux и Windows, обеспечивает виртуальную память , чтобы увеличить гибкость программы. ( Мы будем говорить больше о точно, что такое виртуальная память , позже. ) Чтобы понять, почему виртуальная память полезно , давайте начнем с рассмотрения того, как старые операционные системы, такие как MS-DOS работал . В этих системах , все программы работали в том же режиме реального адресного пространства , так как не было виртуальное адресное пространство .
Исполняемые программы, написанные в двоичном коде машины, содержат инструкции и данные. Обе команды и данные содержат адреса памяти . Поэтому, когда вы пишете программу в машинном коде (иликомпилятор переводит ваши языка высокого уровня в машинный код для вас) , вы (или компилятор ) должны вычислить адреса для каждой команды и каждый фрагмент данных . Допустим, вы начинаете с нуля и выложить все ваши инструкции и данные в последовательности , так что вся ваша программа занимает адреса памяти от 0 до 8462 . Теперь предположим, что все остальные пишет их программы так же, как , начиная с адреса 0 . Очевидно, вы не можете запустить две программы , которые занимают те же адреса в памяти в то же время с этой схемой - поскольку , как только вы загрузите вторую, он перепишет первым .
Relocation
переселение
Решение, которое было изобретено до виртуальной памяти было писать программы особым образом . Любая память, место, где лежатадрес был специально отмечен в двоичный файл. Когда пользователь пытался запустить программу , операционная система будет выделить память для его где-нибудь и загружать программу в память , что области. Как это было сделано , было бы " исправить " все специально обозначенных адресов ссылки так, чтобы они указывали на правильных местах . Например , скажем оригинальная программа содержала таблицу с информацией , начиная с ячейки памяти 700. Другая часть программы , например, в местоположении 210- содержала адрес таблицы (например , значение 700 ), и был специально обозначенных как содержащиеадреса. Операционная система загружает эту программу в память , начиная с местоположения 30000 . Как это происходит, это изменяет значение в положение 30210 от 700 до 30700 , и так далее. Этот процесс называется переезд .
Эта схема позволяет компьютеру для загрузки нескольких программ в памяти сразу, в любой части памяти доступен в то время. Его преимущества в том, что он прост в реализации и не требует никаких изменений в оборудовании. Но , он также имеет ряд серьезных недостатков . Прежде всего, из-за того, как переезд работ , память, выделенная в программу должны быть смежными . Предположим, что пользователь работаетс полдюжины небольших программ, в то же время . После некоторых из этих программ выходе из программы 1, 3 и 6, оно работает . Теперь пользователь хочет запустить большую заявку, но, к сожалению , там сейчас не может быть нигде его поставить. Если приложение не может втиснуться в пространстве , который был использован на программы 2 или программ 4 и 5 вместе, то она не может вписаться в памяти , даже если общее количество несмежных свободных блоков памяти может быть более чем достаточно.
Еще один недостаток этого подхода состоит в том, что размер запущенной программы ограничен объем физической памяти, установленной на компьютере , минус независимо от операционной системы зарезервировано для самого себя. Но , большие программы обычно не использовать всякую память сразу. Программа с большого адресного пространства может потребоваться доступ к несколько тысяч инструкции и несколько тысяч байт данных в то время, только . Было бы более эффективно распределять только немного оперативной памяти в то время, чтобы такой программы и сохранить остальную часть своего адресного пространства в другое место , например, на диске. Это то, что виртуальная память позволяет нам делать .