Znalazłem odpowiedź na pytanie here. Ale nie rozumiem niektórych pomysłów w odpowiedzi. Na przykład, mówi się, że proces lekki dzieli swoją logiczną przestrzeń adresową z innymi procesami. Co to znaczy? Mogę zrozumieć tę samą sytuację z 2 wątkami: oba z nich dzielą jedną przestrzeń adresową, więc obie z nich mogą czytać dowolne zmienne z segmentu bss (na przykład). Ale mamy wiele różnych procesów z różnymi sekcjami bss i nie wiem jak podzielić się nimi wszystkimi.Jaka jest różnica między procesem lekkim a gwintem?
Odpowiedz
Od MSDN, Threads and Processes:
Procesy istnieć w systemie operacyjnym i odpowiadać co użytkownicy zobaczyć jak programy lub aplikacje. Wątek, z drugiej strony, istnieje w procesie. Z tego powodu wątki są czasami określane jako jako procesy lekkie. Każdy proces składa się z jednego lub więcej wątków .
Proces zawiera jeden lub więcej wątków, a wątek może zrobić wszystko, co może zrobić proces. Również wątki wewnątrz procesu dzielą tę samą przestrzeń adresową, ponieważ koszt komunikacji między wątkami jest niski, ponieważ korzysta z tej samej sekcji kodu, sekcji danych i zasobów systemu operacyjnego, więc wszystkie te cechy wątku sprawiają, że jest to proces "lekki".
Nie jestem pewien, czy odpowiedzi są tutaj poprawne, więc proszę o opublikowanie mojej wersji.
Istnieje różnica między procesem - LWP (proces lekki) a wątkiem użytkownika. Zostawię definicję procesu na bok, ponieważ jest ona mniej lub bardziej znana i koncentruje się na LWP vs user threads
. LWP to tak naprawdę zwane dziś wątkami. Początkowo wątek użytkownika oznaczał wątek zarządzany przez samą aplikację, a jądro nic o nim nie wie. LWP jest jednostką planowania i wykonywania przez jądro.
Przykład: Załóżmy, że system ma 3 inne procesy, a planowanie odbywa się w trybie "round-robin" bez priorytetów. I masz 1 procesor/rdzeń.
Opcja 1. Masz 2 wątki użytkownika używające jednego LWP. Oznacza to, że z perspektywy systemu operacyjnego masz JEDNĄ jednostkę planowania. Całkowicie działa 4 LWP (3 inne + 1 twoje). Twoja LWP dostaje 1/4 całkowitego czasu procesora, a ponieważ masz 2 wątki użytkownika, każda z nich otrzymuje 1/8 całkowitego czasu procesora (w zależności od implementacji).
Opcja 2. Masz 2 LWP. Z perspektywy systemu operacyjnego masz DWIE jednostki planowania. Całkowicie działa 5 LWP. Twój LWP dostaje 1/5 całkowitego czasu procesora EACH, a twoja aplikacja dostaje 2/5 mocy procesora.
Kolejna trudna różnica - LWP ma identyfikator pid (identyfikator procesu), wątki użytkownika nie.
Z jakiegoś powodu nazywanie się nie zaszkodziło i odnosimy się do LWP jako wątków.
Istnieje zdecydowanie więcej różnic, ale proszę odnieść się do slajdów. http://www.cosc.brocku.ca/Offerings/4P13/slides/threads.ppt
EDIT:
Po wysłaniu, znalazłem dobry artykuł, który wyjaśnia wszystko dokładniej i jest w lepszym angielskim niż piszę. http://www.thegeekstuff.com/2013/11/linux-process-and-threads/
- 1. Jaka jest różnica między cat_id a term_id?
- 2. Jaka jest różnica między IEnumerable a tablicami?
- 3. Jaka jest różnica między == a === w Verilog?
- 4. Jaka jest różnica między UseCase a Workflow?
- 5. Jaka jest różnica między pakietem a intencją?
- 6. Jaka jest różnica między węzłem a wierzchołkiem?
- 7. Jaka jest różnica między Ember.computed.alias a Ember.binding?
- 8. Jaka jest różnica między alertem a window.alert?
- 9. Jaka jest różnica między @android a android:
- 10. Jaka jest różnica między krotką a kompresją?
- 11. Jaka jest różnica między proxy a reify?
- 12. Jaka jest różnica między @Inject a @PersistenceContext?
- 13. Jaka jest różnica między sqlite3 a pdo_sqlite
- 14. Jaka jest różnica między Const a Constant?
- 15. Jaka jest różnica między Socket.IO a Firebase?
- 16. Jaka jest różnica między macierzą a tablix?
- 17. Jaka jest różnica między KERN_INVALID_ADDRESS a KERN_PROTECTION_FAILURE?
- 18. Jaka jest różnica między Float.POSITIVE_INFINITY a Float.MAX_VALUE?
- 19. Jaka jest różnica między SGML a XML?
- 20. Jaka jest różnica między Cake a Leiningen?
- 21. Jaka jest różnica między JavaBean a POJO?
- 22. Jaka jest różnica między kopiowaniem a klonowaniem?
- 23. Jaka jest różnica między HAVING a WHERE?
- 24. Jaka jest różnica między ItemTemplate a ItemPanelTemplate?
- 25. Jaka jest różnica między słownikiem a tablicą?
- 26. Jaka jest różnica między cancelBubble a stopPropagation?
- 27. Jaka jest różnica między NSString a NSMutableString?
- 28. Jaka jest różnica między StudlyCaps a CamelCase?
- 29. Jaka jest różnica między IPV6_ADD_MEMBERSHIP a IPV6_JOIN_GROUP?
- 30. Jaka jest różnica między spark.sql.shuffle.partitions a spark.default.parallelism?
Możliwa dup z http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a-thread – Gray
Wydajesz się być bardzo zdezorientowany o niektórych pojęć. Proponuję najpierw zbadać definicję nici i procesu. – Tudor
@Gray, Bardzo dobrze rozumiem różnicę między procesami i wątkami. Problem polega na zrozumieniu lekkich procesów. – Allok