[ASM?] Uruchamianie programów z pkt. widzenia OSa

0

Mam problem... W jaki sposób program uruchamia inne programy nie korzystając z funkcji systemu operacyjnego - bo sam jest OSem. Trzeba załadować wszystko do pamięci i zrobić xyz operację? Odczytywać po kolei bajty z pliku, ładować do jakiegoś rejestru procesora i wywoływać przerwanie X? Czy robić to metodą "jeśli bajt ma wertość to X to wykonujemy instrukcje Z", czyli np. w bajcie jest 15 więc robimy MOV :/ ? Jak to jest?

0

Z tego co słyszałem, to explorer, jak klikasz 2 razy na appsa, to uruchamia funkcję ShellExecuteA i dalej wszystko śmiga, czyli nie ma tak że system jakos asm to uruchamia. Nieprawda, że jak sys sam jest osem to niekorzysta ze swoich funkcji...w przypadku windowsa to korzysta do każdej głupiej błahostki

0
mystthg napisał(a)

czyli nie ma tak, że system jakos asm to uruchamia.

to miało brzmieć: czyli nie ma tak, że system jakos sam to uruchamia.

0

Na poczatek dobrze jak zalozysz, ze system i aplikacja to jeden program, powiedzmy, ze twoj OS jest jednozadaniowy (na poczatek), teraz chcesz odpalic aplikacje, zakladasz, ze kazdy program na twojego osa ma offset powiedzmy 0x10000, ladujesz go pod ta pamiec (odczytujesz surowo z dyskietki sektory, czy obslugujesz jakis system plikow .. nie wazne), gdy ju jest zaladowany po prostu skaczesz w to miejsce (jmp, ew call, zeby potem nie miec problemu z wychodzeniem /ret konczy program/). Taka aplikacje kompilujesz jako "binary".

Slowko na temat systemow wielozadaniowych. Tutaj zarys wyglada dokladnie tak samo, czyli ladujesz aplikacje pod jakis tam adres i zkaczesz tam, z tym, ze w tym momecie masz napisanego tzw schedulera, ktory w odpowiednim momecie przerywa wykonywanie aktualnej aplikacji, zapisujac jej stan (wszystkie rejestry, IP i CS zapisze sie po wykonaniu przerwania) i skacze do nastepnej przywracajac jej stan (to samo, wszystkie rejestry sa z powrotem ustawiane, iret przywroci IP i CS).

Jakby cos niejasnego bylo to pytaj ;)

0

Wolverine:
Szczerze... 75% jest niejasne :D.

mystthg:
Chodziło mi o to, że np. w pascalu mam funkcję która wywołuje uruchamianie programu pod DOSem. Ale jak program ma jąwywołać, skoro sam jest DOSem :) ?

0

Po prostu ladujesz program (skompilowany jako binary, ew z jakims specyficznym formatem) i do niego skaczesz (jmp lub call). Program sie konczy i wywoluje np ret albo jakies przerwanie i znowu jestesmy w jadrze.

Wyobraz sobie, ze OS to jeden program, ktory potrafi dodawac i odejmowac procedury (tutaj one robia za aplikacje).

Jak zwykle nic nie potrafie wytlumaczyc :P Jakby co to GG.

1 użytkowników online, w tym zalogowanych: 0, gości: 1