Tml có giỏi về môn Operating System không?
T đi từ khái niệm Os cơ bản trc cho m dễ hiểu.
1. 1 application (task) được chạy như thế nào.
a. Compiling + tối ưu hóa code của task, linking libraries, khởi tạo các biến global (đặt ở heap memory)
b. task sẽ có 1 main function. Trong main sẽ có các câu lệnh, function, method nhỏ hơn. Nó sẽ được biên dịch thành nhiều frames(đặt ở stack memory)
c. Khi chạy cái task thì nó sẽ execute mấy cái frame này. Execute xong thì nó xóa frame khỏi memory, chạy hết toàn bộ thì xong task.
2. Khi có nhiều applications (tasks) chạy cùng lúc thì sẽ như thế nào
Lúc này có thêm khái niệm là multiple threading và scheduler.
Các task sẽ vẫn chia nhỏ ra như trên. Và cái scheduler sẽ xếp thứ tự execute của các frame nhỏ này vào 1 cái gọi là message queue. Rule để xếp thì có fifo, round robin
Os sẽ đọc cái queue này rồi execute theo thứ tự từ cũ đến mới (fifo)
3. Có nhiều CPU (processor) và muốn chạy nhiều tasks thì làm thế nào
Mỗi cái processor sẽ có 1 message queue. Rồi có thêm cơ chế để merge kết quả các queue này với nhau
4. Quay trở lại thế giới của web browser chúng ta sẽ có các khái niệm : browser, tab, js runtime, eventloop
1 browser sẽ dc coi là 1 os nhỏ. Nó có memory, processor và cả scheduler luôn.
Khi mở 1 tab mới thì tương ứng với việc sử dụng browser để chạy 1 taak
Task này nhờ cái js runtime cũng dc chia nhỏ ra thành các frames. Khi có event (buttonclick, etc) thì tương ứng với việc có thêm frames mới để execute. Vậy thôi
Eventloop thì cái concept của js runtime, y xì một cái scheduler. Nó qui định rõ về các trạng thái của 1 frame.
5. Biết dc mấy cái concept cool ngầu này thì dc cái gì?
Chả dc cái vẹo gì. Chắc chắn là không đụng đến.
TTham khảo
1.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#event_loop
2.
https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#what-is-the-event-loop
Ý kiến cá nhân.
T thấy mấy cái concept trong môn Operating System khó vkl.
Cứ cái gì dính đến conputer là sẽ có những concept này :Cloud, browser, embedded.
Bọn dev nó chỉ đổi tên cho ngầu chứ cách hoạt động là không đổi. Vì nó là tối ưu nhất rồi.
Nếu có gì sai. Nhờ mấy tml góp ý.