Я делаю школьный проект для класса операционных систем. Я должен оценить различные накладные расходы — например, накладные расходы на измерение времени, накладные расходы на переключение контекста, накладные расходы на доступ к памяти / диску. В некоторых из этих контекстов мне необходимо оценить, каким будет программный компонент служебной информации и какой будет аппаратный компонент. Может ли кто-нибудь привести пример того, какие операции будут характеризоваться как аппаратные издержки, а какие операции будут программными? Правильно ли я полагаю, что установка стека при вызове функции — это программные издержки, поскольку она включает только перемещение указателей? Доступ к блоку на диске был бы аппаратным? Эти операции кажутся простыми для характеристики. Возможно, кто-нибудь мог бы привести некоторые другие примеры, чтобы подтвердить мое понимание.
Тот, кто дал вам задание, должен был определить соответствующие термины, такие как software overhead
или же hardware component
, Если они этого не сделали, вы должны спросить.
Это не так ясно, как может показаться. Вы, кажется, принимаете это Accessing a block on disk would be hardware overhead
, Тогда как насчет памяти? Память — это аппаратный компонент, как и жесткий диск. Каждый доступ к памяти требует измеримого, хотя и крошечного, времени. Это должно быть учтено в счетах программного и аппаратного обеспечения? И это даже раньше, чем говорить о каналах, кэшах или сбоях страниц виртуальной памяти, которые могут привести к доступу к диску.
Я мог бы сделать аналогичные замечания о сети, GPU, мониторе и так далее. Однако остается главным моментом, что для задания всегда лучше спросить, чем угадать — и, возможно, угадать неправильно.
Это правильные примеры. Некоторые другие примеры аппаратных издержек включают ожидание устройства (например, принтера) и ожидание другого узла в сети.
Служебные программы могут получить доступ к общей библиотеке, как и виртуальные таблицы. Вам будет сложно найти любое из них в пространстве ядра; Я не думаю, что общие объекты могут существовать вне пользовательской земли.