Chương 2: Cùng khám phá thế giới bên trong của Windows

tuhocvba

Administrator
Thành viên BQT
2-1 Vai trò của OS
2-2 Đa nhiệm và ưu tiên
2-3 Tiến trình và phân luồng
2-4 CPU
2-5 Windows
2-6 messege
2-7 Chi tiết bên trong
2-8 Tổng kết
 

tuhocvba

Administrator
Thành viên BQT
2-1 Vai trò của OS
OS hiểu là hệ điều hành, nó quản lý toàn bộ phần cứng và các ứng dụng trên máy tính.
Ví dụ, nhờ có hệ điều hành mà chúng ta có thể nhập công thức trên excel, hoặc thực hiện các thao tác copy và paste trên word. Người dùng có thể thao tác tùy ý, và phần cứng sẽ thực thi mệnh lệnh đó. Tuy nhiên, ứng dụng Excel hay word không truyền đạt trực tiếp mệnh lệnh từ người dùng tới phần cứng. Ứng dụng Application (Excel hay Word) nhận chỉ thị từ người dùng, và truyền đạt chỉ thị đó cho hệ điều hành OS, hệ điều hành OS lại tiếp tục truyền đạt chỉ thị đó tới phần cứng, và máy tính lúc này mới bắt đầu thực thi thao tác theo mong muốn của người dùng.
Bạn cần đăng nhập để thấy đính kèm


Như vậy mặc dù nói là OS nhưng cũng có rất nhiều loại OS (hệ điều hành) khác nhau. Ví dụ Windows, UNIX, MacOS... Nhưng trong khuôn khổ VBA API mà chúng ta muốn hướng tới, thì tất nhiên OS mà chúng ta quan tâm là Windows. Đây cũng là hệ điều hành phổ biến dùng trong các công ty, nhà máy và xí nghiệp. Tất nhiên về cơ bản, chúng ta sẽ chỉ bàn tới Windows từ Windows95 trở đi. Các thế hệ Windows 3.1 trở về trước, chúng ta sẽ không quan tâm. Lý do là Windows 3.1 trở về trước là hệ điều hành 16bit, trong khi đó như đã nói, chúng ta sẽ chỉ quan tâm từ hệ điều hành 32 bit trở đi, cụ thể hiện tại chúng ta có 32 bit và 64 bit.
 

giaiphapvba

Administrator
Thành viên BQT
2-2 Đa nhiệm và tính ưu tiên
Windows là hệ điều hành có thể thực thi nhiều chương trình program đồng thời và lTaiên tục.
Hệ điều hành mà có thể thực thi đồng thời nhiều chương trình cùng một lúc, ta gọi môi trường đó là đa nhiệm.
Một chương trình thưc thi một xử lý công việc nào đó (task-nhiệm vụ), thì nó là một đơn vị nhiệm vụ. Vậy thực hiện nhiều nhiệm vụ (công việc) một lúc thì gọi là đa nhiệm.
Ta ví dụ, ta vừa thao tác Excel, vừa kiểm tra được có mail gửi tới hay không,... do đó Windows được gọi là hệ điều hành đa nhiệm.
Tuy nhiên, cho dù Windows 3.1 và 32/64bit đều là các phiên bản Windows đa nhiệm, nhưng cấu tạo bên trong của chúng hoàn toàn khác nhau.
Trước Windows 3.1 là thời đại của MS-DOS, đây là hệ điều hành đơn nhiệm, không thể cùng lúc làm hai công việc.

Windows3.1 là hệ điều hành đa nhiệm không có tính ưu tiên. Hệ điều hành kiểu này thì CPU sẽ chỉ cho một chương trình chiếm hữu. Tức là, nếu chương trình A đang chiếm hữu CPU, thì các chương trình khác như chương trình B không thể nào giành lấy CPU để hoạt động. Tóm lại, chỉ có chương trình A hoạt động, nếu chương trình A chưa được giải phóng thì các chương trình khác không thể thực thi.

Windows 32/64 bit thì lại là hệ điều hành đa nhiệm có tính ưu tiên. Chúng ta thường nói rằng, CPU có thể xử lý đồng thời nhiều chương trình một lúc, tuy nhiên ở đây có sự nhầm lẫn. Thực ra Windows sẽ thực thi các chương trình tuần tự luân phiên nhau trong cac khoảng thời gian rất ngắn. Kết quả phản ánh vào mắt chúng ta thì cứ như thể các chương trình được thực thi đồng thời. Khoảng thời gian rất ngắn mà chúng ta vừa nói tới, với windows95 thì đó là 20ms. Đối với hệ điều hành như Windows 10 thì chúng tôi chưa tìm thấy tài liệu nào nói tới khoảng thời gian này là bao nhiêu, chỉ biết là rất ngắn.
Bạn cần đăng nhập để thấy đính kèm


Dịch phần này quả thực rất khó, các thuật ngữ không phải là thuần nhật, mà sử dụng các từ phiên âm từ tiếng anh sang cách đọc nhật, không rõ từ tiếng anh nguyên gốc là gì. Nếu các bạn có phát hiện gì hãy phản hồi lại cho chúng tôi biết. Trong khuôn khổ topic này, tôi muốn các bạn hiểu cách hoạt động của Windows hiện nay, các chương trình nói là thực hiện đồng thời, nhưng thực ra chúng được thay phiên nhau hoạt đông xen kẽ so le nhau như hình minh họa cuối cùng trong bài viết này đã minh họa.
 

Euler

Biên Tập Viên
2-3 Tiến trình và phân luồng
Tiến trình được chia ra thành các luồng.
Ở thời đại Windows 3.1, các chương trình đang được thực thi được gọi là các task (nhiệm vụ). Và từ chương trình (program), chúng sẽ được phân ra thành các Module. Quả là một câu chuyện khó hiểu phải không.
Thế này nhé, khi mọi người dùng Internet Explorer để xem tin tức, trong lúc đó mọi người cũng thực hiện download từ một website nào đó. Nếu nói như vậy, chắc là ai cũng đã từng làm rồi phải không nào. Trường hợp như vậy, CPU sẽ xử lý việc download file, mà ta gọi là tiến trình (process). Tuy nhiên tiến trình này không phải là một cái, tại sao CPU lại có thể xử lý đồng thời việc download file và load web để ta xem tin tức.
Process là con đường thực thi mệnh lệnh của người dùng tới OS. Và để các con đường thực thi này không giao thoa ảnh hưởng chồng lấn lên nhau, chúng phân thành nhiều con đường dưới hình thức độc lập mà ta gọi là luồng (thread).
Bạn cần đăng nhập để thấy đính kèm

Tóm lại, giống như bài viết trước đã nói, thì hệ điều hành Windows sẽ luân phiên tiến hành các luồng trong các khoảng thời gian ngắn, không có chuyện tiến hành đồng thời các luồng cùng một lúc.
Khi khởi động Process, thì tối thiểu sẽ luôn có một con đường thực thi (luồng) được đảm bảo. Nói tóm lại, dù ít thế nào đi nữa thì cũng luôn tồn tại tối thiểu một luồng được hình thành.
Câu chuyện đa nhiệm, phân luồng là câu chuyện chẳng có mấy ý nghĩa với người dùng VBA. Vì VBA không thể tạo ra tiến trình đa nhiệm.
 

vbano1

Admin
Thành viên BQT
2-4 Để chương trình khác không chiếm dụng CPU

Với Windows 3.1, chương trình đang chiếm hữu CPU sẽ quyết định khi nào giải phóng CPU. OS không ra mệnh lệnh giải phóng CPU. Đây là đặc thù của thế giới đa nhiệm không ưu tiên. Chương trình phải có dòng code để giải phóng CPU.

Thế nhưng, với Windows 32/64 bit thì sẽ khác, chiếm dụng CPU hay giải phóng CPU sẽ do phía OS (hệ điều hành) quyết định. Windows sẽ giải phóng chương trình đang chiếm hữu CPU một cách định kỳ. OS sẽ phán đoán thời gian nào thì giải phóng, thời gian nào thì dừng tạm thời chương trình đang hoạt động, để chương trình cũng có thể hoạt động, nó phải giải phóng CPU, thoát toàn bộ các regyster CPU đang sử dụng và lưu thông tin đó lại. Chương trình không cần phải bận tâm tới việc giải phóng CPU. Như vậy trách nhiệm của chương trình đã được OS gánh vác cho ít nhiều.
 
Top