LINUX.ORG.RU

опросник


0

3

День добрый, уважаемые!

попытался с данного сайта связаться с одним работодателем, он сразу же выслал опросник.

я не большой специалист в kernel, поэтому, давайте общими усилиями ответим на вопросы, которые есть в опроснике.( не для моего личного интереса( на работу к ним я не попаду в любом случае ), а для общего интереса, многие хотят получить на эти вопросы профессиональные ответы для своего поднятия знаний в этой области )

вот вопросы:

ВОПРОС 1.

Suppose you are given a task to write a simple debugger (for a proprietary operating system) that is capable of setting a break-point in an application and running it. What would be key design decisions you make in such a task?

ВОПРОС 2.

Suppose you debug a Linux application and put a break-point into a function defined by a dynamically-linked library used by the application. Will that break-point stop any other application that makes use of the same library? If not, please explain why.

ВОПРОС 3.

In modern microprocessor devices is the cache indexed by physical or virtual addresses? Suppose you are designing hardware architecture for a new microprocessor … what would be pros and cons of each approach?

ВОПРОС 4.

Assuming Linux, would it be possible to implement a TCP/IP stack in the user context (vs. kernel)? How would you do it? What would be pros and cons of such an implementation, as compared to the conventional implementations where the stack resides in the kernel?

P.S. прошу не троллить



Последнее исправление: Cinewer (всего исправлений: 1)

>Suppose you debug a Linux application and put a break-point into a function defined by a dynamically-linked library used by the application. Will that break-point stop any other application that makes use of the same library? If not, please explain why.

Нет, не остановит, потому что copy-on-write.

yoghurt ★★★★★
()

Auriga?

1. Почитай как реализуются hardware и software breakpoints.

2. Как уже сказали copy-on-write.

3. Хороший ответ есть в ARM Manual насколько я помню. Обдумай какие из адресов постоянны а какие меняются и когда. Вопрос кстати хороший.

4. Такой стэк насколько я помню есть. На счет pro и contra: в основном переключения юзерспейс и кернелспейс, валидация и т.п..

И да. Если это таки Auriga, ее работники на ЛОРе есть, так что палишся.

Svoloch ★★★
()
Ответ на: комментарий от yoghurt

Да, но не по этой причине.

Не остановит потому что библиотека проецируется на адресное пространство каждого процесса. Разные процессы не могут обращаться к памяти друг друга без специальных механизмов.

sched
()
Ответ на: комментарий от sched

Если software breakpoint, то без упоминания copy-on-write ответ как минимум неполон.
Или вы думаете, что если запустить 1000 процессов зависящих от libc то будет использовано памяти 1000*sizeof(libc)?

Svoloch ★★★
()
Ответ на: комментарий от Svoloch

Нет не будет. Но copy-on-write - это следствие фундаментальных проблем (изоляция процессов), без которых ответ как минимум не полон.

sched
()
Ответ на: комментарий от sched

Никаких фундаментальных проблем в изоляции процессов без copy-on-write нет. Но память будет жраться.

Хотя, если вдуматься, с формальной стороны вопроса, Вы правы.
Просто вы отвечаете на вопрос «почему оно так», а я скорее «как работает».

Svoloch ★★★
()
Ответ на: комментарий от Cinewer

Ну консилиум уже выяснил компанию, как видите.
Я бы даже предположил, что Auriga Москва.
Они особо любят вопросы про MMU и процессоры.

Svoloch ★★★
()
Ответ на: комментарий от Svoloch

Насколько я знаю, оно не брякается во всех процессах и при hardware breakpoints. Хотя возможно там уже учитывается адресное пространство конкретного процесса. А что на счёт ядра? Там copy-on-write насколько я знаю нет.

Booster ★★
()
Ответ на: комментарий от Booster

Боюсь соврать, но насколько я помню, hardware breakpoint на x86 работает через соответствующие регистры. И соответственно при смене процесса они сохраняются, и выставляются соответствующие новому процессу.

А copy-on-write в ядре вагон и маленькая тележка насколько я знаю. Но только к теме breakpoint это отношения уже не имеет.

Svoloch ★★★
()
Ответ на: комментарий от Svoloch

Ну ядро-то не принадлежит какому-то процессу, соответственно брякается во всех.

hardware breakpoint на x86 работает через соответствующие регистры.

В общем да, записываем в регистр адрес и процессор брякает. Что они могут сохраняться при переключении контекста, не подумал.

Booster ★★
()
Ответ на: комментарий от Booster

>Ну ядро-то не принадлежит какому-то процессу, соответственно брякается во всех.

Насчет «соответственно» не понял. Ядро вообще не особо брякается от брекпоинтов в процессе.

Svoloch ★★★
()
Ответ на: комментарий от Svoloch

>Насчет «соответственно» не понял.

Ядро может выполняться в контексте процесса, я это имел ввиду.

Booster ★★
()

>ВОПРОС 3.

На новых физический кэш (между MMU и внешней памятью), на старых логический (между CPU и MMU).

bakugan
()

1. Do not know.
2. Do not know.
3. Do not know.
4. Do not know.

The php monkey coder is me. Work for food. Dwell in basement.

anonymous
()
Ответ на: комментарий от bakugan

Да кстати, преимущество логического — меньшая латентность по сравнению с физическим, недостаток — в кэше могут оказаться две логических ссылки на один физический адрес что приведет к разным значениям в процессоре при чтении после изменения по этому адресу.

bakugan
()

Хорошие вопросы! Что за контора? Давайте откроем филиал в Риге :)

Deleted
()

По поводу 4 скажите им пусть посмотрят проект L4Linux и не страдают херней.

bakugan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.