Thứ Sáu, 26 tháng 4, 2013

Thread

Thread là một thực thể nằm bên trong một process mà Windows lập lịch cho thực thi. Nếu không có nó, process'program không thể run. Một thread bao gồm những thành phần cơ bản sau:
  • Nội dung của tập các CPU registers biểu diễn trạng thái của processor.
  • 2 stacks, một được sử dụng cho thread khi thực thi trong kernel mode, cái còn lại trong user mode.
  • một khu lưu trữ cá nhân (private) được gọi là thread-local storage (TLS) phục vụ nhu cầu của subsystems, run-time libraries và các DLLs.
  • một số định danh duy nhất được gọi là thread ID 
  • threads thỉnh thoảng có những security context của riêng chúng và thường được sử dụng bởi multithreaded server application.
Những registers, stacks, và private storage area còn được gọi là thread's context. Bởi vì thông tin này là khác nhau đối với từng kiến trúc máy tính mà Windows chạy trên đó. Windows GetThreadContext function cung cấp khả năng truy nhập đến thông tin về kiến trúc (được gọi là CONTEXT block )

Mặc dù mọi threads đều có ngữ cảnh thực thi riêng của nó, mọi thread bên trong một process chia sẻ chung không gian địa chỉ ảo của process (thêm vào đó là phần còn lại của resources thuộc về process), nghĩa là tất cả các threads trong process có thể viết và đọc từ bộ nhớ lẫn nhau.
Tuy nhiên threads không thể đột ngột tham chiếu đến không gian địa chỉ của process khác nếu process khác không tạo ra "available part" của không gian địa chỉ private của nó như là shared memory section (còn được gọi là file mapping object ) hoặc process khác không mở một process khác để sử dụng cross-process memory functions như là ReadProcessMemory WriteProcessMemory.

Ngoài private address space và một hay nhiều threads, mỗi process có một security identification  và một list của open handles đến các đối tượng như files, shared memory sections hoặc một trong những đối tượng đồng bộ như mutexes, events, hoặc semaphores

Mỗi process có security context được lưu trong một object được gọi là access token. process access token chứa security identification và thông tin quan trọng cho process. Mặc định, threads không có access token của riêng chúng. nhưng chúng có thể đạt được một cái, do vật cho phép individual threads giả mạo security context của process khác- bao gồm cả processes chạy trên remote Windows system- mà không ảnh hưởng đến threads khác trong process.

virtual address descriptors (VADs) là các cấu trúc dữ liệu mà memory manager sử dụng để "keep track" các virtual addresses mà process đang sử dụng.

Windows cung cấp một mở rộng đến process model được gọi là job. job's object main function là để cho phép các nhóm processes được quản lí và thao tác như là một đơn vị. job object cho phép điều khiển các thái độ và cung cấp giới hạn cho process hoặc process liên kết vơi job. Nó còn records các thông tin cơ bản cho tất cả processes liên kết với job nhưng từ khi kết thúc. Theo một vài cách, job object bù vào phần thiếu hụt của cấu trúc cây process trong Windows- cho đến giờ theo nhiều cách nó cần mạnh mẽ hơn so với Unix-style process tree. 

Không có nhận xét nào:

Đăng nhận xét