nghiên cứu tìm hiểu về quản lý tiến trình trong hệ điều hành windows

24 2.5K 14
nghiên cứu tìm hiểu về quản lý tiến trình trong hệ điều hành windows

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài tập lớn: Đề tài nghiên cứu tìm hiểu về quản lý tiến trình trong hệ điều hành windows Chia sẻ tài liệu bài tập lớn nguyên lý hệ điều hành trường ĐHCN Hà Nội.Hy vọng tài liệu này sẽ giúp cho các em khóa sau hoàn thành tốt bài tập lớn đã được giao. Chúc may mắn.

o TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA HỆ THỐNG THÔNG TIN  ĐỀ TÀI: Nghiên Cứu Tìm Hiểu Về Quản Tiến Trình Trong HĐH Windows Giáo viên hướng dẫn: NguyÔn Thanh H¶i Sinh viên thực hiện: Bùi Quang Huy Lê Thành Trung Dương Văn Luân Hà Nội, Ngày tháng năm 2012 Page LỜI NÓI ĐẦU Ngày với phát triển vượt bậc nghành khoa học kĩ thuật nghành Công Nghệ Thông Tin (CNTT) nghành phát triển mạnh Nó đạt nhiều thành tựu to lớn khoa học kĩ thuật để ứng dụng vào đời sống người ngày cao, với cải tiến nâng cấp linh kiện thiết bị Thì chương trình phần mềm ứng dụng đời ngày tối ưu ngày trợ giúp người giảm bớt gánh nặng công việc nhiều, phát triển phần mềm ứng dụng có tính chất định đến phát triển nghành khoa học CNTT non trẻ nước ta Page CHƯƠNG 1: KHÁI NIỆM CHUNG VỀ HỆ ĐIỀU HÀNH WINDOWS Windows ? - Là phần mềm hệ điều hành hãng Microsoft - Có giao diện đồ họa thông qua hệ thống cửa sổ lệnh (Windows command) Phần cứng(Hardware) ? - Là thành phần vật máy tính, hay nói cách khác thành phần mà ta sờ vào tay VD : Bàn phím, chuột… Phần mềm(Software) ? - Là tập hợp lệnh hướng dẫn máy tính hoạt động hay nói cách dễ hiểu không sờ tay, VD: MS Word, Excell… Chức Hệ điều hành ? Điều khiển tất hoạt động máy tính thiết bị ngoại vi Đóng vai trò người thông dịch, cầu nối người sử dụng máy vi tính thể thực nhiều chức lúc thông qua cửa sổ Hệ điều hành Windows hệ điều hành đa tác vụ, có nghĩa có giao tiếp Windows Plug & Play, có nghĩa tự động dò tìm cài đặt thiết bị gắn thêm vào hệ thống Ngoài cung cấp tiện ích để kết nối mạng Internet Ổ đĩa(drive) ? Là nơi để chứa chương trình liệu Thư mục(Folder,Directory) ? Là phân vùng hình thức ổ đĩa để việc lưu trữ tập tin tổ chức cách có hệ thống Tập tin (file) ? - Là tập hợp thông tin người dùng tạo ra, thông tin hay nhiều chuổi ký tự - Quy tắc đặt tên cho tập tin (filename) để phân biệt tập tin với Page Đường dẫn(path) ? - Là đường đến tập tin, hay thư mục - Đường dẫn tuyệt đối : đường dẫn từ thư mục gốc đến tập tin - Đường dẫn tương đối : đường dẫn đối tượng nhìn từ thư mục hành CHƯƠNG 2: QUẢN TIẾN TRÌNH, LUỒNG VÀ CÔNG VIỆC Tiến Trình a Khái niệm tiến trình - Một tiến trình bao gồm tập tài nguyên sử dụng thực thi chương trình Một tiến trình thường bao gồm thành phần sau: - Một không gian địa ảo dành riêng, gồm địa ảo mà tiến trình sử dụng - Một chương trình thực thi, có mã, liệu ánh xạ vào không gian địa ảo tiến trình - Một danh sách handle tài nguyên, bao gồm semaphore, cổng, tệp tin - Một ngữ cảnh bảo mật gọi access token, định nghĩa quyền hạn người dùng hay nhóm người dùng liên kết với tiến trình, nói đến phần 2.3 - Một số để xác định tính tiến trình: process ID - Một nhiều luồng thực thi - Mỗi tiến trình trỏ vào tiến trình cha nó, tiến trình cha không quan trọng Windows không quan tâm đến thông tin không ảnh hưởng đến hoạt động hệ thống Các thông tin tiến trình xem công cụ Process Explorer Sysinternal.com b Cấu trúc liệu Mỗi tiến trình Windows biểu diễn dạng khối tiến trình thực thi (EPROCESS) Mỗi khối EPROCESS trỏ đến số cấu trúc liệu liên quan khác khối luồng (ETHREAD – Chi tiết mục 2.3) Khối EPROCESS tồn không gian địa hệ thống, EPROCESS liên kết với khối Môi trường tiến trình (PEB) nằm không gian địa tiến trỡnh(Vỡ chứa thông tin mà thay đổi Page ứng dụng user-mode) Ngoài khối EPROCESS trỏ đến Khối tiến trình Windows Bảng điều khiển handle Quá trình tạo tiến trình Một tiến trình Windows tạo mà ứng dụng gọi hàm tạo tiến trình, hàm Create Process, Create Process As User, Create Process With Token Who Create Process With LogonW Để tạo tiến trình cần thông tin thư viện clientserver Kernel32.dll, trình thực thi Windows tiến trình hệ thống Windows Các bước tạo tiến trình mới: Để tạo tiến trình với hàm API CreateProcess phải qua bước sau: B1: Mở tệp tin thực thi (.exe) B2: Tạo đối tượng thực thi tiến trình B3: Tạo luồng khởi tạo stack, ngữ cảnh B4: Thông báo cho hệ thống Windows tiến trình tạo B5: Bắt đầu thực thi luồng khởi tạo B6: Trong ngữ cảnh luồng tiến trình mới, hoàn thành việc khởi tạo không gian địa chỉ(mục đích để nạp thư viện liên kết động DLL) bắt đầu thực thi chương trình Trước gọi image, hàm CreateProcess thực bước sau: - Trong hàm CreateProcess,mỗi thứ tự ưu tiên cho tiến trình - bít độc lập cờ CreationFlags, tạo tiến trình - có nhiều mức ưu tiên, Windows xem xét chọn thứ tự ưu tiên từ thấp đến cao để gán cho tiến trình tạo - Nếu thứ tự ưu tiên mặc định đặt Nornal - Nếu ứng dụng có mức ưu tiên Real-time tiến trình gọi khả Nâng quyền ưu tiên, tiến trình tạo gán mức ưu tiên mức Cao - Tất tiến trình tạo gắn với desktop Bước 1: Mở tệp tin image Tệp image tệp có khả chạy tệp *.exe, có nhiều loại tệp image hình đây, có nhiệm vụ tạo đối tượng Section ánh xạ vào không gian địa Page nhớ Nếu tệp image gọi mặc định gọi cmd.exe với tham số truyền sau tên chương trình Nếu ứng dụng Windows tệp thực thi Windows, thỡ gọi trực tiếp luụn khụng thông qua chương trình image Nếu tệp thực thi DOS *.com chẳng hạn Windows gọi tệp image Ntvdm.exe để chạy *.com Sau đó, tệp thực thi Windows exe CreateProcess đến bước 2, tệp thực thi lại Bước khởi động lại, trình thực sau: - Nếu tệp thực thi MS-DOS với phần mở rộng exe, com, pif, thông điệp gửi đến cho hệ thống Windows để kiểm tra xem chạy sẵn tệp image thực thi tương ứng chưa (Ntvdm.exe), giá trị tham số lưu HKLM\SYSTEM\CurrentControlSet\Control\WOW\cmdline Nếu tệp image thực thi chưa nạp thìCreateProcess quay lại bước Nếu nạp (Ntvdm.exe) chuyển qua bước - Nếu tệp thực thi MS-DOS có phần mở rộng com hay bat tệp image thực thi tương ứng Cmd.exe, tên tệp thực thi truyền dạng tham số cho Cmd.exe - Nếu tệp thực thi Win16, CreateProcess định VDM phải tạo để nạp tệp thông qua cờ điều khiển CREATE_SEPARATE_WOW_VDM CREATE_SHARED_WOW_VDM Nếu cờ đặt mặc định gọi cờ HKLM\SYSTEM\CurrentControlSet\Control\WOW\ DefaultSeparateVDM Sau VDM tạo,CreateProcess tiếp tục nạp tệp thực thi Nếu có ứng dụng Win16 gọi, hệ thống Windows gửi thông điệp xem VDM có hỗ trợ không, không CreateProcess chạy lại bước để nạp tệp image thực thi tương ứng với tham số Sau bước 1, CreateProcess mở tệp image thực thi tương ứng với tệp cần chạy tạo đối tượng Section cho Đối tượng chưa ánh xạ vào nhớ, mở CreateProcess tìm HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options để xem tên tệp thực thi cú chưa, có thỡ chạy lại bước với tham số Debugger registry Bước 2: Tạo Đối tượng tiến trình thực thi Windows Page Để Tạo Đối tượng tiến trình thực thi Windows cần lời gọi hàm hệ thống NtCreateProcess, thực công việc sau: 2A: Khởi tạo khối EPROCESS 2B: Khởi tạo không gian địa 2C: Khởi tạo khối tiến trình nhân KPROCESS 2D: Ánh xạ tệp image thực thi vào không gian địa 2E: Khởi tạo PEB 2F: Hoàn thiện việc khởi tạo đối tượng tiến trình thực thi Bước 2A: Khởi tạo khối EPROCESS - Cấp phát Windows EPROCESS - Kế thừa thuộc tính từ tiến trình cha - Đặt kích thước tập công việc vào PsMinimumWorkingSet PsMaximumWorkingSet - Kế thừa tên thiết bị (ổ đĩa, COM port,…) - Lưu thông tin định danh tiến trình cha vào InheritedFromUniqueProcessId - Tạo access token để quản truy nhập - Đặt trạng thái thoát tiến trình STATUS_PENDING Bước 2B: Khởi tạo không gian địa - Tạo trang trang nhớ thích hợp để ánh xạ vào, số trang tạo lưu biến kernel MmTotalCommittedPages cộng vào MmProcessCommit - Giá trị MmResidentAvailablePages trừ tập công việc nhỏ nhất(PsMinimumWorkingSet) để tính trang nhớ trống Bước 2C: Khởi tạo khối tiến trình nhân KPROCESS Khởi tạo KPROCESS chứa trỏ đến danh sách luồng hệ thống KPROCESS trỏ đến thư mục bảng trang nhớ(dựng để theo dõi không gian địa ảo tiến trình), tổng thời gian mà luồng thực thi, thứ tự lên lịch chạy theo mức ưu tiên tiến trình, CPU mặc định để thực thi luồng tiến trình Bước 2D: Ánh xạ tệp image thực thi vào không gian địa Page - Trình quản nhớ ảo đặt giá trị thời gian sẵn sàng tiến trình thành thời gian - Trình quản nhớ khởi tạo giá trị danh sách công việc - Ánh xạ đối tượng Section tạo bước vào không gian địa nhớ Địa sở tiến trình đặt thành địa sở image - Ntdll.dll ánh xạ vào nhớ Bước 2E: Khởi tạo PEB CreateProcess cấp phát trang nhớ cho PEB sau khởi tạo số trường bảng: Bảng 2.5: Khởi tạo trường PEB Trường ImageBaseAddress NumberOfProcessors NtGlobalFlag CriticalSectionTimeout HeapSegmentReserve HeapSegmentCommit HeapDeCommitTotalFreeThreshold Giá trị khởi tạo Địa sở Section Giá trị nhân KeNumberProcessors Giá trị nhân NtGlobalFlag Giá trị nhân MmCriticalSectionTimeout Giá trị nhân MmHeapSegmentReserve Giá trị nhân MmHeapSegmentCommit Giá trị nhân MmHeapDeCommitTotalFreeThreshold HeapDeCommitFreeBlockThreshold Giá trị nhân MmHeapDeCommitFreeBlockThreshold NumberOfHeaps MaximumNumberOfHeaps (Size of a page - size of a PEB) / ProcessHeaps Byte sau PEB OSMajorVersion Giá trị nhân NtMajorVersion OSMinorVersion Giá trị nhân NtMinorVersion OSBuildNumber Giá trị nhân NtBuildNumber & 0x3FFF OSPlatformId Bước 2F: Hoàn thiện việc khởi tạo đối tượng tiến trình thực thi: - Nếu hệ thống cú cỏc thiết đặt bảo mật trình tạo tiến trình ghi vào tệp tin Security event log - Nếu tiến trình cha có đối tượng công việc tiến trình thêm đối tượng công việc vào Page - Nếu header tệp image có đặt cờ IMAGE_FILE_UP_SYSTEM_ ONLY tất cỏc cỏc luồng tiến trình chạy với xử Nếu không lần thực thi luồng, xử sẵn sàng thỡ dùng (đối với hệ thống có nhiều xử lý) - CreateProcess chèn khối tiến trình vào cuối danh sách tiến trình chạy Windows (PsActiveProcessHead); - Thời điểm mà tiến trình tạo đặt lại, handle tiến trình chuyển cho Kernel32.dll Bước 3: Tạo luồng khởi tạo stack, ngữ cảnh Sau thực xong bước 2, đối tượng thực thi tạo ra, nhiên chưa có luồng tạo Vì trước tạo luồng cần khởi tạo stack ngữ cảnh để luồng chạy Kích thước stack cố định với kích thước tệp image Lúc này, luồng tạo việc gọi hàm NtCreateThread Các tham số luồng lấy từ không gian địa PEB NtCreateThread gọi PspCreateThread để thực bước sau: Tăng giá trị đếm số luồng đối tượng tiến trình lên Khởi tạo khối luồng thực thi ETHREAD Định danh luồng tạo cho luồng TEB khởi tạo không gian địa cho tiến trình User mode Địa bắt đầu luồng user mode lưu ETHREAD Địa luồng trùng vớiBaseProcessStart, luồng địa BaseThreadStart KeInitThread gọi để thiết lập khối KTHREAD, thực công việc thiết đặt mức độ ưu tiên luồng, cấp phát stack cho luồng, khởi tạo ngữ cảnh cho luồng Sau KeInitThread gán trạng thái Initialied cho luồng trả cho PspCreateThread Nếu có thủ tục thông báo việc tạo luồng gọi Access token luồng thiết đặt giống tiến trình Có thể dùng CreateRemoteThread để tạo luồng tiến trình khác, nhiên phải xử access token xem tiến trình có cho phép tạo hay không Page Sau bước 3, luồng khởi tạo sẵn sàng để thực thi Bước 4: Thông báo cho hệ thống Windows tiến trình tạo Kernel32.dll gửi thông điệp đến hệ thống Windows hệ thống thiết đặt cho tiến trình luồng Thông điệp cú cỏc thông tin sau: - Handle tiến trình luồng - Các cờ tạo tiến trình - ID trình tạo tiến trình Hệ thống Windows sau nhận thông điệp thực bước: - CreateProcess lặp lại handle tiến trình luồng lên - Khối tiến trình Csrss cấp phát - Thiết đặt cổng cho tiến trình để hệ thống Windows nhận thông điệp xử ngoại lệ tiến trình - Khối luồng Csrss cấp phát - CreateProcess chèn luồng vào danh sách luồng cho tiến trình - Giá trị số đếm tiến trình tăng lên - Giá trị mặc định Process Shutdown level set thành 0x280 - Khối tiến trình chèn vào danh sách - Cấu trúc pre-process dùng Windows kernel (W32PROCESS) cấp phát khởi tạo - Ứng dụng khởi động trỏ Bước 5: Bắt đầu thực thi luồng khởi tạo Luồng khởi tạo bắt đầu thực thi cờ CREATE_SUSPENDED lúc tạo tiến trình không thiết đặt Bước 6: Thực thi tiến trình ngữ cảnh tiến trình Một luồng bắt đầu chạy kernel-mode thủ tục KiThreadStartup, sau tham số truyền choPspUserThreadStartup để nạp image vào nhớ thủ tục LdrInitializeThunk Ntdll.dll Thủ tục hoàn thành nốt việc khởi tạo trình quản heap, bảng NLS(bảng hỗ trợ nhiều ngôn ngữ), mảng lưu trữ cục luồng thành phần quan trọng khác Sau PspUserThreadStartup hoàn thành trả Page 10 cho KiThreadStartup APC dispatcher gọi hàm bắt đầu thực thi tiến trình năm user stack mà KiThreadStartup thực xong Khái niệm luồng Một luồng thực thể bên tiến trìnhWindows lên lịch để thực thi, luồng tiến trình chạy Một luồng thường bao gồm: - Một tập ghi trạng thái CPU - Hai stack, dùng luồng thực thi kernel mode dùng để thực thi user mode - Một vùng nhớ riêng để lưu trữ liệu, gọi TLS (thread-local storage) dùng để lưu trữ thư viện - Định danh luồng (thread ID) Các ghi, stack, vùng nhớ riêng gọi ngữ cảnh luồng (thread’s CONTEXT ) Những thông tin thường khác máy Windows cung cấp hàm GetThreadContext để cung cấp thông tin cụ thể ngữ cảnh (CONTEXT block) Mặc dù luồng có ngữ cảnh thực thi riêng, luồng tiến trình chia sẻ vùng không gian địa ảo tiến trình đó, mà luồng đọc/ghi nhớ luồng khác tiến trình Các luồng tham chiếu đến vùng không gian địa ảo tiến trình khác, nhiên, tiến trình có để phần vùng địa riêng làm vùng nhớ chia sẻ (được gọi file mapping object hàm Windows API), tiến trình có quyền để đọc ghi vào vùng nhớ tiến trình khác sử dụng hàm truy xuất nhớ chéo ReadProcessMemory WriteProcessMemory a Các luồng đối tượng tiến trình Cả tiến trình luồng có ngữ cảnh bảo mật lưu đối tượng access token Mỗi access token tiến trình chứa thông tin bảo mật cho tiến trình Mặc định luồng access token luồng số gán access token để bảo đảm an toàn cho Page 11 Bảng mô tả địa ảo (VAD) cấu trúc liệu mà chương trình quản nhớ sử dụng để theo dõi vùng không gian địa ảo mà tiến trình sử dụng Cấu trúc giải thích chi tiết phần 2.5 Cấu trúc liệu luồng: Một luồng thường biểu diễn khối luồng thực thi (ETHREAD) Khối trỏ đến không gian địa nhớ hệ thống khối môi trường luồng (TEB) b Cấu trúc liệu luồng Bảng 2.6 ý nghĩa trường cấu trúc liệu luồng Phần tử Thread time Process ID Start address Impersonation Ý nghĩa Thời gian tạo thoát luồng Định danh luồng Địa bắt đầu Trỏ đến access token để quản quyền hạn truy nhập information LPC information Định danh thông điệp cần lấy địa I/O information Danh sách yêu cầu vào Chi tiết cấu trúc KTHREAD bên ETHREAD Bảng 2.7 ý nghĩa trường KTHREAD Phần tử Dispatcher header Ý nghĩa Header chuẩn khối dạng kernel dispatcher Execution time Pointer to kernel stack object Thời gian dùng CPU user mode kernel mode Trỏ đến địa sở kernel stack information Pointer to system service Mỗi tiến trình bắt đầu phải trỏ đến bảng dịch vụ hệ table Scheduling information thống KeServiceDescriptorTable Các thông tin lênh lịch chạy, bao gồm thứ tự ưu tiên, định lượng, quan hệ, xử lý, số lần treo, số lần Wait blocks dừng Có sẵn số khối đợi để luồng đợi Wait information khối đợi ứng với khoảng thời gian Danh sách đối tượng mà luồng cần phải đợi bao gồm đợi gì, bao lâu, phải đợi Page 12 Phần tử Mutant list APC queues Timer block Queue list Pointer to TEB Ý nghĩa Danh sách đối tượng mà luồng sở hữu Hàng đợi APC user mode kernel mode Bộ đếm cho wait block Con trỏ đến đối tượng Hàng đợi mà luồng gắn với Chứa Định danh luồng, thông tin TLS, trỏ PEB, GDI OpenGL, chi tiết hình dưới: Một khối TEB chứa thông tin ngữ cảnh cho trình nạp image thư viện DLL Windows khỏc Vỡ cỏc thành phần chạy user mode nên cấu trúc liệu ghi user mode, tồn không gian địa tiến trình thay tồn không gian địa hệ thống Muốn xem thông tin chi tiết cấu trúc dùng lệnh !thread trình Kernel Debugge c Cấu trúc khối khối TEB Bảng 2.8: Các biến Kernel quản việc tạo thực thi luồng Biến PspCreateThreadNotifyRoutine Loại Mảng Mô tả Mảng trỏ đên trỏ thủ tục gọi tạo PspCreateThreadNotifyRoutineCount DWORD xóa luồng Số thủ tục thông báo đăng PspCreateProcessNotifyRoutine Mảng ký luồng Mảng trỏ đến thủ trỏ tục gọi lúc tạo xóa tiến trình Bảng 2.9: Các hàm liên quan đến luồng Hàm CreateThread CreateRemoteThread OpenThread ExitThread TerminateThread GetExitCodeThread GetThreadTimes GetCurrentProcess GetCurrentProcessId Mô tả Tạo luồng Tạo luồng tiến trình khác Mở luồng có Kết thúc hoạt động luồng cách bình thường Ngắt luồng Lấy mã lúc thoát luồng khác Trả thời gian chạy luồng Trả handle luồng Trả định danh luồng Page 13 GetThreadId Trả định danh luồng Get/SetThreadContext Trả thay đổi ghi CPU luồng GetThreadSelectorEntry Trả bảng mô tả luồng(chỉ có hệ thống x86) Khi luồng tạo ra, cú kernel stack riêng, trạng thái luồng cũ lưu vào đỉnh stack luồng cũ, ngữ cảnh luồng nạp thông tin luồng vào kernel stack Nếu luồng nằm tiến trình hệ thống tạo trang nhớ nạp địa vào ghi CR3 Địa trang nhớ tìm thấy khối KPROCESS Nếu rootkit thay đổi bảng trang tiến trình thỡ ảnh hưởng đến toàn luồng tiến trình đú, vỡ tất luồng tiến trình dùng chung giá trị ghi CR3 Kiểm tra hoạt động luồng Để xem thông tin luồng, sử dụng tập công cụ đây: Bảng 2.10 Các công cụ kiểm tra hoạt động luồng Page 14 Thuộc tính TheadID Actual start Perfmon Pviewer Pstat Qslice Tlist KD       add Win32 start add Current   address Số context    switches Total user   time Total   Process Pslist  Thread Explorer                             privileged time Elapsed time  Thread state  Reason for       wait state Last error % CPU sử     dụng % User time    sử dụng % Previleged     time sd Đối tượng Công việc Một đối tượng công việc đối tượng nhân cho phép điều khiển nhóm có nhiều tiến trình Một tiến trình thành viên đối tượng công việc Mặc định liên kết tiến trình đối tượng Công việc phá Page 15 hủy được, tất tiến trình tạo tiến trình nằm đối tượng công việc mà tiến trình liên kết Bảng 2.11: Các hàm quản đối tượng Công việc Hàm CreateJobObject OpenJobObject AssignProcessToJobObject TerminateJobObject SetInformationJobObject QueryInformationJobObjec Mô tả Tạo đối tượng công việc Mở đối tượng công việc có sẵn Thêm tiến trình vào đối tượng công việc Dừng tất tiến trình đối tượng công việc Thiết đặt thông tin đối tượng công việc Lấy thông tin đối tượng công việc, thời t gian dùng CPU, số tiến trình, danh sách định danh tiến trình, hạn ngạch sử dụng, giới hạn bảo mật Ngoài ra, CPU nhớ giới hạn cho đối tượng công việc Các giới hạn bao gồm: - Giới hạn số tiến trình hoạt động đối tượng công việc - Giới hạn thời gian sử dụng CPU tiến trình đối tượng công việc - Giới hạn khoảng thời gian hoạt động luồng tiến trình Thông qua lớp lịch chạy, cú cỏc khoảng thời gian sau, cho luồng tiến trình - Mức ưu tiên cho tiến trình đối tượng công việc: Mỗi tiến trình có mức độ ưu tiên riêng khụng tự đặt mức độ ưu tiên thông qua hàm SetThreadPriority - Giới hạn nhớ: định không gian địa ảo tối đa mà tiến trình công việc dùng Windows 2000 Datacenter Server có công cụ cho phép định nghĩa công việc, đặt hạn ngạch giới hạn tài nguyên cho tiến trình công việc Đó Process Control Manager Hai phương thức liên lạc tiến trình Liên lạc trực tiếp (Direct Communications) §Theo địa đối xứng (Symmetric Scheme) Send (P, Message) - Gửi thông điệp cho P Page 16 Receive (Q, Message) - Nhận thông điệp từ Q Đặc điểm: × Liên kết thiết lập tự động cặp tiến trình × Liên kết tiến trình × Chỉ có liên kết cặp × Tính đối xứng liên lạc (2 bên biết đích xác tên Gửi/Nhận) §Theo địa phi đối xứng (Asymmetric Scheme) Send (P, Message) - Gửi thông điệp cho P Receive (id, Message) - Nhận thông điệp từ tiến trình bất kỳ, Biến id chứa số hiệu tiến trình gửi Liên lạc gián tiếp (Indirect Communications) § Qua Hộp thư (Mailboxes) Cổng (Ports) § Hộp thư thực thể qua thông điệp gửi đến lấy § Mỗi hộp thư có định danh riêng § Hai tiến trình phải chung hộp thư § Hai loại hộp thư: × Hộp thư tiến trình (Process Mailbox): Nằm vùng địa tiến trình × Hộp thư hệ điều hành (OS Mailbox): Nằm vùng địa HĐH Đồng hoá liên lạc tiến trình Đồng hoá liên lạc (Synchronization) × Gửi thông điệp có chờ (Blocking Send) × Gửi thông điệp không chờ (Nonblocking Send) × Nhận thông điệp có chờ (Blocking Receive) × Nhận thông điệp không chờ (Nonblocking Receive) Trình bày mô hình chuyển trạng thái tiến trình New: tiến trình tạo lập Running: thị tiến trình xử Page 17 Blocked: tiến trình chờ cấp phát tài nguyên, hay chờ kiện xảy Ready: tiến trình chờ cấp phát CPU để xử Kết thúc: tiến trình hoàn tất xử Tiến trình P1: vào hàng đợi Job-Queue trạng thái New, đợi khoảng thời gian trình điều phối chậm (Scheduler Long Term) hệ điều hành(HĐH) để chọn tiến trình, sau O.S chọn, P1 chuyển sang hàng đợi reday quueue trạng thái Ready Lúc P1 đợi cấp CPU running Sau khỏang thời gian running, tiến trình P2 xuất Lúc này, hệ điều hành ghi lại thông tin P1 vào PCB1 bao gồm thông tin: trỏ, trạng thái P1, số hiệu tiến trình P1, Bộ đếm P1, nội dung P1…Và chuyển P1 sang hàng đợi Waiting chuyển trạng thái Ready Lúc này, P2 cấp CPU running Và sau khỏang thời gian running, P2 chuyển sang hàng đợi waiting chuyển trạng thái ready, lúc HĐH ghi lại thông tin vào ghi PCB2 làm P1 Sau đó, HĐH load lại thông tin PCB1 P1 tiếp tục running Quá trình lập lại cho P2 Đển P1 P2 kết thúc Tại thời điểm, có tiến trình nhận trạng thái running xử Trong đó, nhiều tiến trình trạng thái blocked hay ready Các cung Page 18 chuyển tiếp sơ đồ trạng thái biễu diễn sáu chuyển trạng thái xảy điều kiện sau : • Tiến trình tạo đưa vào hệ thống • Bộ điều phối cấp phát cho tiến trình khoảng thời gian sử dụng CPU • Tiến trình kết thúc • Tiến trình yêu cầu tài nguyên chưa đáp ứng tài nguyên chưa sẵn sàng để cấp phát thời điểm ; tiến trình phải chờ kiện hay thao tácnhập/xuất • Bộ điều phối chọn tiến trình khác xử • Tài nguyên mà tiến trình yêu cầu trở nên sẵn sàng để cấp phát ; hay kiện thao tác nhập/xuất tiến trình đợi hoàn tất Phân tích vai trò khối kiểm soát tiến trình Page 19 Khối kiểm soát tiến trình (Process Control Block - PCB ) - Bảng thông tin môi trường trạng thái hoạt động tiến trình: Chứa thông tin ứng với process Process ID, parent process ID • Credentials (user ID, group ID, effective ID, ) • Trạng thái process : new, ready, running, waiting… • Program counter: địa lệnh thực thi • Các ghi CPU • Thông tin dùng để định thời CPU: priority, • Thông tin nhớ: base/limit register, page tables… • Thông tin thống kê: CPU time, time limits… • Thông tin trạng thái I/O: danh sách thiết bị I/O cấp phát, danh sách file mở, • Con trỏ (pointer) đến PCBs khác Page 20 PCB đơn giản phục vụ kho chứa cho thông tin khác từ trình tới trình khác Page 21 Trình bày mô hình luân chuyển CPU hai tiến trình Phân biệt loại trình điều phối Điều phối chậm (Long-term scheduler (or job scheduler)) : • Chọn process đưa vào ready queue (từ New chuyển sang Ready) • Kiểm soát Độ đa chương • Do có nhiều thời gian (tới vài phút), loại scheduler có điều kiện để lựa chọn kỹ nhằm phối hợp cân đối loại tiến trình: Hướng CPU: tính toán nhiều, I/O Page 22 Hướng I/O: tính toán ít, nhiều I/O • Mục đích cân tải Điều phối nhanh (Short-term scheduler (or CPU scheduler)) : • Còn gọi Điều phối CPU • Chọn tiến trình từ Ready Queue để cấp CPU • Có tần suất công việc cao Thường 100 ms lại tốn 10 ms để xác định tiến trình kế tiếp, 10/(100+10)=9% thời gian CPU dùng để điều phối công việc Điều phối vừa (Medium-term scheduler) : • Là Short-Term Scheduler thêm chức rút tiến trình khỏi nhớ, dẫn đến làm giảm Độ đa chương, sau đưa lại chúng vào nhớ vào thời điểm thích hợp để tiếp tục thực từ vị trí bị tạm ngừng trước • Nhờ cách điều phối này, hỗn hợp tiến trình Ready Queue có tính tối ưu Trình bày công tác tiến trình Chia sẻ thông tin (Information Sharing): Một tiến trình sử dụng thông tin tiến trình khác cung cấp Tăng tốc tính toán (Computation Speedup): Các tiến trình làm việc song song nhiều máy để giải toán chung Đảm bảo tính đơn thể (Modularity): Chương trình chia thành đơn thể chức vận hành tiến trình luồng khác Ví dụ: bạn học bài, đảm bảo tính đơn thể Đảm bảo tính tiện dụng (Convenience): Người dùng có nhu cầu làm nhiều việc lúc: Soạn thảo, In ấn, Duyệt Web, Lấy file về, Biên dịch chương trình, Kiểm tra tả, Những đồng hóa công việc tiến trình - Đảm bảo tính quán tài nguyên dùng chung - Tránh tượng Deadlock (Hiện tượng kẹt tiến trình) - Tính Loại trừ lẫn hay Loại trừ tương hỗ (Mutual Exclusion) phương diện thời gian: Khi có tiến trình ĐTT tiến trình khác nhóm đoạn vậy, nghĩa là: Mỗi thời điểm có tiến trình phép truy cập và/hoặc thay đổi tài nguyên chung Page 23 CHƯƠNG 1: KHÁI NIỆM CHUNG VỀ HỆ ĐIỀU HÀNH WINDOWS 1.Windows ? 2.Phần cứng(Hardware) ? 3.Phần mềm(Software) ? 4.Chức Hệ điều hành ? 5.Ổ đĩa(drive) ? 6.Thư mục(Folder,Directory) ? 7.Tập tin (file) ? 8.Đường dẫn(path) ? CHƯƠNG 2: QUẢN TIẾN TRÌNH, LUỒNG VÀ CÔNG VIỆC 1.Tiến Trình a Khái niệm tiến trình b Cấu trúc liệu 2.Quá trình tạo tiến trình 3.Khái niệm luồng .11 a Các luồng đối tượng tiến trình .11 b Cấu trúc liệu luồng 12 c Cấu trúc khối khối TEB 13 4.Kiểm tra hoạt động luồng .14 5.Đối tượng Công việc 15 6.Phân tích vai trò khối kiểm soát tiến trình .19 7.Trình bày công tác tiến trình .23 Page 24 ... mục hành CHƯƠNG 2: QUẢN LÝ TIẾN TRÌNH, LUỒNG VÀ CÔNG VIỆC Tiến Trình a Khái niệm tiến trình - Một tiến trình bao gồm tập tài nguyên sử dụng thực thi chương trình Một tiến trình thường bao gồm... tiến trình Một tiến trình thành viên đối tượng công việc Mặc định liên kết tiến trình đối tượng Công việc phá Page 15 hủy được, tất tiến trình tạo tiến trình nằm đối tượng công việc mà tiến trình. .. Receive) Trình bày mô hình chuyển trạng thái tiến trình New: tiến trình tạo lập Running: thị tiến trình xử lý Page 17 Blocked: tiến trình chờ cấp phát tài nguyên, hay chờ kiện xảy Ready: tiến trình

Ngày đăng: 15/08/2017, 15:43

Từ khóa liên quan

Mục lục

  • a. Khái niệm tiến trình

  • b. Cấu trúc dữ liệu

  • a. Các luồng trong một đối tượng tiến trình

  • b. Cấu trúc dữ liệu của một luồng

  • c. Cấu trúc khối khối TEB

Tài liệu cùng người dùng

Tài liệu liên quan