CHƯƠNG 1: GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH VÀ PHƯƠNG PHÁP THU THẬP TIẾN TRÌNH 1. Tổng quan về hệ điều hành 1. Khái niệm hệ điều hành Hệ điều hành là một chương trình quản lý tài nguyên của máy tính, đóng vai trò như một lớp trung gian giữa người sử dụng máy tính và phần cứng của máy tính. Mục tiêu là cung cấp phương tiện giữa người dùng và máy tính, nhận và thực thi yêu cầu của người dùng một cách hiệu quả, dễ dàng và nhanh chóng thông qua các chương trình ứng dụng.
Người dùng muốn giao tiếp với hệ điều hành cần phải có ngôn ngữ chung: 1. Các tính chất của hệ điều hành • Tin cậy: Mọi hoạt động, mọi thông báo của hệ điều hành đều phải chuẩn xác, tuyệt đối, chỉ khi nào biết chắc chắn là đúng thì hệ điều hành mới cung cấp thông tin cho người sử dụng. • An toàn: Hệ thống phải tổ chức sao cho chương trình và dữ liệu không bị xoá hoặc bị thay đổi ngoài ý muốn trong mọi trường hợp và mọi chế độ hoạt động. • Hiệu quả: Các tài nguyên của hệ thống phải được khai thác triệt để.
• Kế thừa: Hệ điều hành phải có tính kế thừa, đồng thời có khả năng thích nghi với những thay đổi có thể có trong tương lai. • Thuận tiện: Hệ thống phải dễ dàng sử dụng, có nhiều mức hiệu quả khác nhau tuỳ theo kiến thức và kinh nghiệm người dùng. Các thành phần của hệ điều hành Quản lý tiến trình Một tiến trình là một chương trình đang được thi hành. Một tiến trình phải sử dụng tài nguyên như thời gian sử dụng CPU, bộ nhớ, tập tin, các thiết bị nhập xuất để hoàn tất công việc của nó.
Vai trò của hệ điều hành trong việc quản lý tiến trình là : • Tạo và hủy các tiến trình của người sử dụng và của hệ thống. • Tạm dừng và thực hiện tiếp một tiến trình. • Cung cấp các cơ chế đồng bộ tiến trình. • Cung cấp các cơ chế giao tiếp giữa các tiến trình.
• Cung cấp cơ chế kiểm soát deadlock Quản lý bộ nhớ chính Trong hệ thống máy tính hiện đại, bộ nhớ chính là trung tâm của các thao tác, xử lý. Bộ nhớ chính có thể xem như một mảng kiểu byte hay kiểu word. Mỗi phần tử đều có địa chỉ. Đó là nơi lưu dữ liệu được CPU truy xuất một cách nhanh chóng so với các thiết bị nhập/xuất.
CPU đọc những chỉ thị từ bộ nhớ chính. Các thiết bị nhập/xuất cài đặt cơ chế DMA cũng đọc và ghi dữ liệu trong bộ nhớ chính. Thông thường bộ nhớ chính chứa các thiết bị mà CPU có thể định vị trực tiếp. Một chương trình muốn thi hành trước hết phải được ánh xạ thành địa chỉ tuyệt đối và nạp vào bộ nhớ chính.
Quản lý bộ nhớ phụ Bộ nhớ chính quá nhỏ để có thể lưu giữ mọi dữ liệu và chương trình, ngoài ra dữ liệu sẽ mất khi không còn được cung cấp năng lượng. Hệ thống máy tính ngày nay cung cấp hệ thống lưu trữ phụ. Đa số các máy tính đều dùng đĩa để lưu trữ cả chương trình và dữ liệu. Hầu như tất cả chương trình: chương trình dịch, hợp ngữ, thủ tục, trình soạn thảo, định dạng.
đều được lưu trữ trên đĩa cho tới khi nó được thực hiện, nạp vào trong bộ nhớ chính và cũng sử dụng đĩa để chứa dữ liệu và kết quả xử lý. Vai trò của hệ điều hành trong việc quản lý đĩa: • Quản lý vùng trống trên đĩa 6 • Định vị lưu trữ • Lập lịch cho đĩa Quản lý hệ thống vào/ra Một trong những mục tiêu của hệ điều hành là che dấu những đặc thù của các thiết bị phần cứng đối với người sử dụng thay vào đó là một lớp thân thiện hơn, người sử dụng dể thao tác hơn. Quản lý hệ thống tập tin Máy tính có thể lưu trữ thông tin trong nhiều dạng thiết bị vật lý khác nhau: băng từ, đĩa từ, đĩa quang,. Mỗi dạng có những đặc thù riêng về mặt tổ chức vật lý.
Mỗi thiết bị có một bộ kiểm soát như bộ điều khiển đĩa (disk driver) và có những tính chất riêng. Những tính chất này là tốc độ, khả năng lưu trữ, tốc độ truyền dữ liệu và cách truy xuất. Hệ thống bảo vệ Hệ thống bảo vệ là một cơ chế kiểm soát quá trình truy xuất của chương trình, tiến trình, hoặc người sử dụng với tài nguyên của hệ thống. Cơ chế này cũng cung cấp cách thức để mô tả lại mức độ kiểm soát.
Hệ thống bảo vệ cũng làm tăng độ an toàn khi kiểm tra lỗi trong giao tiếp giữa những hệ thống nhỏ bên trong. Hệ thống thông dịch lệnh : Một trong những phần quan trọng của chương trình hệ thống trong một hệ điều hành là hệ thống thông dịch lệnh, đó là giao tiếp giữa người sử dụng và hệ điều hành. Một số hệ điều hành đặt cơ chế dòng lệnh bên trong hạt nhân, số khác như MS-DOS và UNIX thì xem hệ điều hành như là một chương trình đặt biệt, được thi hành khi các công việc bắt đầu hoặc khi người sử dụng login lần đầu tiên. Hệ điều hành trên máy người dùng 1.
Hệ điều hành Windows Giới thiệu chung Microsoft Windows là tên của một hệ điều hành dựa trên giao diện người dùng đồ hoạ được phát triển và được phân phối bởi Microsoft. Nó bao gồm một vài 7 các dòng hệ điều hành, mỗi trong số đó phục vụ một phần nhất định của ngành công nghiệp máy tính. Các phiên bản hệ điều hành Window Trải qua nhiều năm phát triển, hệ điều hành Window đã cho ra mắt nhiều phiên bản khác nhau. Cụ thể các phiên bản như sau: • Hệ điều hành DOS • Hệ điều hành Windows 1.0 • Hệ điều hành Windows 2.0 • Hệ điều hành Windows 3.0 • Hệ điều hành Windows 3.1 • Hệ điều hành Windows for workgroup • Hệ điều hành Windows NT • Hệ điều hành Windows 95 • Hệ điều hành Windows 98 • Hệ điều hành Windows 2000 • Hệ điều hành Windows XP • Hệ điều hành Windows Vista • Hệ điều hành Windows 7 • Hệ điều hành Windows 8 • Hệ điều hành Windows 10 Quản lý tiến trình trong Windows • User mode: Khi một chương trình khởi tạo trên User Mode, Windows sẽ tạo một tiến trình (process) cho chương trình đó.
Một tiến trình cung cấp cho chương trình đó một không gian địa chỉ ảo (Virtual address space). • Kernel mode: Tất cả các mã chạy trong chế độ kernel chia sẻ một không gian địa chỉ ảo. Điều này có nghĩa là trình điều khiển chế độ kernel không bị cô lập với các trình điều khiển khác và chính hệ điều hành. • Các thành phần trong quản lý tiến trình 8 Khi một chương trình được nạp vào bộ nhớ và trở thành một tiến trình, nó có thể được chia thành bốn phần: - Stack: chứa dữ liệu tạm thời, thường chỉ chứa dữ liệu dùng trong thời gian rất ngắn hoặc dùng một lần.
- Heap: đây là vùng bộ nhớ được cấp phát động cho một tiến trình trong thời gian thực thi. - Data: chứa các biến global (biến dùng chung ở cấp toàn bộ chương trình) và static (loại biến dùng chung ở cấp struct). - Text: bao gồm hoạt động hiện tại được biểu thị bằng giá trị của Program Counter và nội dung của các thanh ghi trên vi xử lý. Khi một tiến trình thực thi, nó có thể đi qua các trạng thái khác nhau.
Các giai đoạn này có thể khác nhau đối với các hệ điều hành khác nhau và tên của các trạng thái này cũng không được chuẩn hóa cụ thể. Nhưng nhìn chung, một tiến trình có thể có một trong năm trạng thái sau đây tại một thời điểm: Hình 1. Các trạng thái của tiến trình 9 • Start: trạng thái khi một tiến trình được tạo hoặc được khởi động lần đầu. • Ready: tiến trình đang chờ để được chuyển cho vi xử lý.
• Running: trạng thái thực thi của tiến trình, khi bộ lập lịch Scheduler đã chuyển nó cho vi xử lý, vi xử lý sẽ tiến hành thực hiện các tính toán hoặc chỉ dẫn trên nó. • Wait: trạng thái này xảy ra nếu tiến trình cần chờ một tài nguyên để có thể sử dụng. • Terminated: xảy ra khi một tiến trình đã xử lý xong hoặc bị ngắt bởi yêu cầu từ hệ thống hoặc người dùng, trạng thái này có thể được gọi là Exit. Cấu trúc tập tin thực thi trong Windows Định dạng của tập tin PE chứa một Header và một chuỗi các Sections.
Header chứa các siêu dữ liệu (Metadata) về bản thân của tập tin này. Những phần bên dưới Header là các phần thực tế (actual sections) của tập tin, mỗi section như thế chứa các thông tin hữu dụng.1 Giới thiệu chung Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành. Đây là một phần mềm tự do và của việc phát triển mã nguồn mở. Linux được sử dụng rộng rãi để miêu tả tổng thể một hệ điều hành tương tự Unix được tạo ra bởi việc đóng gói nhân Linux cùng với các công cụ GNU, cũng như các bản phân phối Linux.2 Các phiên bản của hệ điều hành Linux Tương tự như hệ điều hành Window, hệ điều hành Linux cũng được phát triển thành nhiều phiên bản khác nhau như sau: • Ubuntu.
• Debian GNU/Linux. • Red Hat Enterprise Linux. • OpenSolaris Quản lý tiến trình trong Linux Mỗi tiến trình trong Linux được biểu diễn bằng một cấu trúc dữ liệu task_struct. Linux sử dụng task_vector để quản lý các con trỏ đến các task_struct, mặc định là có 512 phần tử.
Khi một tiến trình được tạo ra, một task_struct mới được cấp phát trong bộ nhớ và được thêm vào vector_task. Linux hỗ trợ hai loại tiến trình là loại bình thường và loại thời gian thực. Cấu trúc task_struct gồm những trường như sau: Trạng thái (thi hành, chờ, ngưng, lưng chừng), thông tin lập lịch, định danh, thông tin liên lạc giữa các tiến trình, liên kết, định thời gian, hệ thống tập tin, bộ nhớ ảo, ngữ cảnh. Cấu trúc tiến trình trong Linux Trong Linux cũng như Unix, chương trình và lệnh được thực thi theo cơ chế thông dịch.
Bộ thông dịch được gọi là shell. Linux hỗ trợ nhiều loại shell như sh, bash, tcsh. Tập tin thi hành có nhiều dạng, dạng được sử dụng thông dụng nhất trong linux là ELF, ngoài ra linux cũng có thể sử dụng nhiều dạng tập tin khác. 11 Cấu trúc tập tin thực thi trên Linux Cấu trúc tập tin thực thi trên linux có tên gọi là Executable and Linkable Format (ELF format) là định dạng tập tin tiêu chuẩn phổ biến cho các tập tin thực thi, mã đối tượng, thư viện dùng chung và kết xuất lõi.