GIỚI THIỆU VỀ HỆ ĐIỀU HÀNH VÀ CẤU TRÚC CƠ BẢN CỦA HỆ THỐNG MÁY TÍNH
CÁC KHÁI NIỆM
1.1.1 Hệ điều hành là gí?
Hệ điều hành là phần mềm trung gian giữa người dùng và phần cứng máy tính, giúp đơn giản hóa việc sử dụng máy tính bằng cách che giấu sự phức tạp của phần cứng Nhiệm vụ chính của hệ điều hành bao gồm quản lý tài nguyên máy tính, thực thi các ứng dụng và hỗ trợ các chức năng mạng.
1.1.2 Các thành phần của một hệ thống máy tình
Một hệ thống máy tính được chia thành 4 thành phần sau: phần cứng, hệ điều hành, chương trình ứng dụng/chương trình hệ thống, người sử dụng
+ Phần cứng (hardware) : CPU, bộ nhớ, các thiết bị nhập/xuất,…
+ Hệ điều hành (operating systems): điều khiển và phối hợp việc sử dụng phần cứng cho nhiều ứng dụng với nhiều người sử dụng khác nhau
Chương trình ứng dụng và chương trình hệ thống là những phần mềm thiết yếu giúp người dùng giải quyết các vấn đề cụ thể, bao gồm các chương trình dịch, hệ quản trị cơ sở dữ liệu, trò chơi điện tử và các ứng dụng thương mại.
+ Người sử dụng (user): người sử dụng hoặc máy tính
Bảng 1 Các thành phần của một hệ thống máy tính
1.1.3 Các thành phần của một hệ thống nhập/xuất
Một hệ thống nhập/xuất gồm ba thành phần sau:
+ Hệ thống bộ nhớ đệm (buffer-caching system)
+ Chương trình điều khiển thiết bị (Drivers for specific hardware devices)
+ Chương trình giao tiếp với chương trình điều khiển thiết bị (A general device- driver interface)
Bảng 2 Các thành phần của một hệ thống xuất nhập
Chương trình giao tiếp với chương trình điều khiển thiết bị Chương trình điều khiển thiết bị Hệ thống bộ nhớ đệm
1.1.4 Các thành phần của hệ điều hành
Hệ điều hành gồm có ba thành phần sau:
+ Bộ cấp phát tài nguyên (Resource allocator): Quản lý và cấp phát tài nguyên
+ Chương trình kiểm soát (Control program): Kiểm soát việc thực thi chương trình và kiểm soát hoạt động của các thiết bị nhập/xuất
Phần nhân (Kernel) là chương trình cốt lõi của hệ điều hành, hoạt động đầu tiên và duy trì trong bộ nhớ cho đến khi máy tính được tắt Các chương trình khác được gọi là ứng dụng, hoạt động trên nền tảng của phần nhân này.
Bảng 3 Các thành phần của hệ điều hành
Bộ cấp phát tài nguyên Chương trình kiểm soát
1.1.5 Chức năng của hệ điều hành
Hệ điều hành có 2 chức năng chính là môi trường cho người dùng và quản lý tài nguyên
- Chức năng môi trường cho người dùng
Lớp hệ điều hành giúp lớp trên kế thừa và sử dụng hiệu quả phần cứng máy tính
Là môi trường thực thi: Quản lý tiến trình (Process management), quản lý file, điều khiển ngắt, vận hành xuất nhập, chức năng ngôn ngữ, …
Thực hiện các chức năng về bảo mật và bảo mật
Kiểm soát lỗi và phục hồi sau lỗi
Hệ điều hành máy tính mang đến trải nghiệm đa dạng cho người dùng, với các thiết bị như màn hình, bàn phím, chuột và bộ xử lý hệ thống Được thiết kế để tối ưu hóa công việc của người dùng, hệ điều hành đảm bảo tính dễ sử dụng cho từng cá nhân Một số người dùng kết nối qua các thiết bị đầu cuối với máy tính lớn, trong khi những người khác truy cập cùng một máy tính thông qua các thiết bị khác nhau, chia sẻ tài nguyên và trao đổi thông tin một cách hiệu quả.
Hệ điều hành được phát triển nhằm tối ưu hóa việc sử dụng tài nguyên, đảm bảo CPU, bộ nhớ và thiết bị xuất nhập luôn hoạt động hiệu quả Người dùng có thể lựa chọn sử dụng tài nguyên riêng hoặc chia sẻ chúng qua mạng, máy chủ, tập tin, và máy in Do đó, hệ điều hành cần cân bằng giữa việc sử dụng cá nhân và việc tận dụng tài nguyên chung.
- Chức năng quản lý tài nguyên của HĐH
Quản lý thời gian (Định thời biểu sử dụng CPU và các cổng kết nối)
Quản lý không gian (Cấp phát bộ nhớ chính và bộ nhớ phụ)
Đồng bộ và kiểm soát bế tắc (IPC, critical section, coordination)
Quản lý tài khoản và thông tin, trạng thái (Theo dỗi hiệu năng sử dụng tài nguyên)
LỊCH SỬ PHÁT TRIỂN CỦA HỆ ĐIỀU HÀNH
+ Giai đoạn 1 (1945 – 1955): đã có máy tính lớn nhưng chưa có hệ điều hành + Giai đoạn 2 (1956 – 1965): hệ thống xử lý theo lô (Batch systems)
+ Giai đoạn 3 (1966 – 1980): hệ thống xử lý đa chương (Multiprogramming systems), hệ thống xử lý đa nhiệm (Multitasking systems)
The period from 1981 to 2007 marked significant advancements in computing with the emergence of multiprocessor systems, distributed systems, real-time systems, and embedded systems These innovations transformed how data is processed and managed, enhancing efficiency and performance across various applications.
PHÂN LOẠI HỆ THỐNG MÁY TÍNH
Một hệ thống máy tính gồm hai phần là hệ điều hành và phần cứng tương ứng để thực thi hệ điều hành
1.3.1 Hệ thống xử lý theo lô (Batch
Hệ điều hành đầu tiên là hệ điều hành thô sơ, chỉ cho phép thực hiện một công việc trong bộ nhớ tại một thời điểm Khi công việc hiện tại hoàn tất, công việc tiếp theo sẽ tự động được nạp vào và thực thi Hệ điều hành này có một chương trình giám sát thường trú trong bộ nhớ chính, đảm bảo các công việc được thực hiện theo thứ tự tự động Cách bố trí bộ nhớ của hệ điều hành xử lý theo lô, với phần bộ nhớ ở địa chỉ thấp dành cho hệ điều hành và phần còn lại dành cho chương trình của người dùng.
Xem một ví dụ về cách thức làm việc với hệ thống xử lý theo lô:
- Lập trình viên mang phiếu ghi chương trình đến máy 1401
- Máy sẽ đọc chương trình từ phiếu và ghi chương trình vào băng từ
- Lập trình viên đem băng từ tới máy 7094 để thực hiện tính toán và kết quả được ghi vào băng từ
- Lập trình viên đem băng từ chứa kết qủa tới máy 1401 để in
Hình 1.5: ví dụ về cách thức xử lý công việc với hệ điều hành xử lý theo lô
1.3.2 Hệ thống xử lý đa chương
Khi có nhiều công việc trong bộ nhớ và một công việc đang được thực hiện, nếu có yêu cầu nhập/xuất, CPU sẽ không ngừng hoạt động mà hệ điều hành sẽ chuyển sang thực hiện công việc khác.
Trong bộ nhớ có ba chương trình thực hiện ba công việc khác nhau Khi công việc 1 yêu cầu thao tác nhập/xuất, nó sẽ tạm ngừng để công việc 2 hoặc công việc 3 tiếp tục thực hiện Sau khi công việc 1 hoàn thành thao tác nhập/xuất, nó sẽ tiếp tục thực hiện, trong khi công việc 2 sẽ tạm ngừng.
Các chức năng của hệ điều hành trong hệ thống xử lý đa chương
+ Lập lịch CPU (CPU scheduling) : chọn một trong những công việc trong bộ nhớ cho
Bảng 5 mô hình tổ chức bộ nhớ của hệ thống xử lí đa chương
Bảng 5 mô hình tổ chức bộ nhớ trong hệ thống xử lý đa chương thực thi cho CPU giúp tối ưu hóa hiệu suất Việc lựa chọn mô hình phù hợp là rất quan trọng để tránh tình trạng công việc chờ trong bộ nhớ quá lâu, từ đó nâng cao hiệu quả xử lý và giảm thiểu thời gian chờ đợi.
Quản lý bộ nhớ là quá trình cần thiết để xác định và phân bổ bộ nhớ cho các công việc một cách riêng biệt, đảm bảo rằng phần bộ nhớ đã cấp phát được thu hồi sau khi công việc hoàn thành Việc ngăn cấm truy xuất bộ nhớ giữa các công việc khác nhau là rất quan trọng để duy trì tính bảo mật và ổn định Nếu bộ nhớ bị phân mảnh quá nhiều, cần thực hiện các biện pháp dồn bộ nhớ để tối ưu hóa hiệu suất hệ thống.
Cấp phát thiết bị là quá trình xác định tình trạng sử dụng của thiết bị, bao gồm việc kiểm tra thiết bị có sẵn hay không, thiết bị đã được phân bổ cho công việc nào và công việc nào cần được đưa vào hàng đợi chờ cấp phát Cần xác định thiết bị có thể sử dụng chung và số lượng công việc tối đa có thể sử dụng thiết bị đó cùng lúc, đồng thời cũng phải chỉ ra thiết bị không thể sử dụng chung Quan trọng là phải tránh tình trạng tắc nghẽn, nơi có quá nhiều công việc chờ đợi vô hạn để được cấp tài nguyên.
Các hàm xử lý nhập/xuất (I/O routines) đóng vai trò quan trọng trong việc đơn giản hóa sự phức tạp của các thiết bị nhập/xuất, đồng thời quản lý hiệu quả việc sử dụng chung các thiết bị này.
1.3.3 Hệ thống xử lý đa nhiệm
Hệ thống xử lý đa nhiệm là một phiên bản mở rộng của hệ thống xử lý đa chương, cho phép chuyển đổi công việc một cách hiệu quả Trong hệ điều hành đa nhiệm, việc chuyển đổi giữa các công việc không chỉ xảy ra khi có yêu cầu nhập/xuất mà còn diễn ra khi công việc đang thực thi hết thời gian sử dụng CPU quy định Mỗi công việc được thực hiện luân phiên qua cơ chế chuyển đổi CPU, với thời gian chuyển đổi rất nhanh, tạo cảm giác cho người sử dụng rằng các công việc đang được thực hiện đồng thời.
Hệ thống xử lý đa nhiệm còn gọi là hệ thống chia xẻ thời gian (Time-Sharing Systems)
Trong một hệ thống với một CPU, có ba công việc A, B và C đang nằm trong bộ nhớ Các công việc này sẽ được thực hiện theo hình thức luân phiên, trong đó công việc A sẽ được thực hiện trong khoảng thời gian q.
Trong quá trình thực hiện các công việc, công việc A tạm ngừng để công việc B thực hiện trong khoảng thời gian q, tiếp theo là công việc C Sau đó, công việc A sẽ tiếp tục, và chu trình này sẽ lặp lại cho đến khi tất cả các công việc hoàn tất.
1.3.4 Hệ thống đa xử lý (Multiprocessor
Máy tính đa xử lý có nhiều bộ xử lý chia sẻ hệ thống đường truyền dữ liệu, đồng hồ, bộ nhớ và thiết bị ngoại vi Mỗi CPU thực hiện một nhiệm vụ riêng, cho phép các công việc diễn ra đồng thời Hệ thống này còn được gọi là hệ thống xử lý song song (Parallel Systems).
Hình 2 Mô hình hệ thống đa xử lí
* Ƣu điểm của hệ thống đa xử lý
+ Sự hỏng hóc của một bộ xử lý sẽ không ảnh hưởng đến toàn bộ hệ thống
+ Hệ thống sẽ thực hiện rất nhanh do thực hiện các công việc đồng thời trên các bộ xử lý khác nhau
+ Việc liên lạc giữa các công việc dễ dàng bằng cách sử dụng bộ nhớ dùng chung
* Phân loại hệ thống đa xử lý
Hệ thống đa xử lý đối xứng (SMP) cho phép mỗi bộ xử lý hoạt động với một bản sao của hệ điều hành, trong khi các bộ xử lý đều có vị trí ngang cấp Hiện nay, hầu hết các hệ điều hành đều hỗ trợ công nghệ SMP, mang lại hiệu suất và khả năng xử lý tốt hơn cho các tác vụ đa nhiệm.
Hệ thống đa xử lý bất đối xứng (Asymmetric multiprocessing) bao gồm một bộ xử lý chính (master processor) có nhiệm vụ kiểm soát và phân công công việc cho các bộ xử lý phụ (slave processors).
1.3.5 Hệ thống xử lý phân tán
Hệ thống xử lý phân tán tương tự như hệ thống đa xử lý, nhưng mỗi bộ xử lý có bộ nhớ riêng biệt Các bộ xử lý này kết nối với nhau qua các đường truyền dẫn mạng, bao gồm mạng LAN và WAN, và thường hoạt động trên các hệ điều hành như Windows và UNIX.
* Phân loại hệ thống xử lý phân tán: có hai loại
+ Peer-to-peer: hệ thống mạng ngang hàng, các máy tính ngang cấp, không có máy nào đóng vai trò quản lý tài nguyên dùng chung
Hình 1 Các công việc A B C sử dụng CPU luân phiên trong hệ thống xử lí đa nhiệm
Mô hình client-server bao gồm một máy chủ (server) quản lý các tài nguyên dùng chung và nhiều máy khách (client) kết nối để sử dụng những tài nguyên này Để truy cập các tài nguyên, máy khách cần được cấp quyền từ máy chủ.
* Ƣu điểm của hệ thống xử lý phân tán
+ Dùng chung tài nguyên: máy in, tập tin …
+ Tăng tốc độ tính toán: phân chia công việc để tính toán trên nhiều vị trí khác nhau
+ An toàn: Nếu một vị trí bị hỏng, các vị trí khác vẫn tiếp tục làm việc
+ Truyền thông tin dễ dàng: download/upload file, gởi/nhận mail,…Hệ thống xử lý thời gian thực (Real-Time Systems)
TÌM HIỂU KỸ CẤU TRÚC HỆ ĐIỀU HÀNH
CÁC DỊCH VỤ CỦA HỆ ĐIỀU HÀNH
Hệ điều hành thông thường cần cung cấp các dịch vụ sau:
- Quản lý bộ nhớ chính (RAM)
- Quản lý bộ nhớ phụ (DISK)
- Quản lý hệ thống nhập xuất
- Quản lý hệ thống tập tin
- Các lời gọi hệ thống (system calls)
2.1.1 Dịch vụ quản lý tiến trính (Process
Tiến trình là một chương trình đang thi hành và có thể có nhiều tiến trình trong bộ nhớ cùng một lúc, bao gồm cả tiến trình của hệ điều hành và của người sử dụng Khi một tiến trình được tạo ra hoặc đang thực thi, hệ điều hành sẽ cung cấp các tài nguyên cần thiết như CPU, bộ nhớ, tập tin và thiết bị nhập/xuất Khi tiến trình kết thúc, hệ điều hành sẽ thu hồi lại các tài nguyên đã cấp phát Ngoài ra, một tiến trình khi thực thi có thể tạo ra các tiến trình con, hình thành nên cấu trúc cây tiến trình.
* Các chức năng của dịch vụ quản lý tiến trính
+ Tạo và hủy các tiến trình của người sử dụng và của hệ điều hành
+ Tạm ngưng và thực hiện lại một tiến trình
+ Cung cấp cơ chế đồng bộ các tiến trình
+ Cung cấp cơ chế liên lạc giữa các tiến trình
+ Cung cấp cơ chế kiểm soát tắc nghẽn
2.1.2 Dịch vụ quản lý bộ nhớ chình (Main
Hệ điều hành cần quản lý bộ nhớ chính một cách hiệu quả, đảm bảo rằng mỗi tiến trình được cấp phát một phần bộ nhớ riêng biệt để tránh xung đột và tối ưu hóa hiệu suất hoạt động.
* Các chức năng của dịch vụ quản lý bộ nhớ chình
Quản lý bộ nhớ là quá trình ghi nhớ thông tin về các vị trí bộ nhớ đã được sử dụng và các tiến trình đang hoạt động Hệ thống sẽ quyết định lựa chọn tiến trình để nạp vào bộ nhớ chính khi có chỗ trống Đồng thời, nó cũng đảm nhận việc cấp phát bộ nhớ cho tiến trình và thu hồi bộ nhớ khi tiến trình hoàn tất.
2.1.3 Dịch vụ quản lý bộ nhớ phụ
Để đảm bảo lưu trữ dữ liệu lâu dài, thông tin cần được lưu trên đĩa dưới dạng tập tin Ngoài ra, đĩa cũng giữ các tiến trình khi bộ nhớ RAM không đủ, được gọi là bộ nhớ ảo.
* Các chức năng của dịch vụ quản lý bộ nhớ phụ
+ Quản lý vùng trống trên đĩa (Free space management)
+ Xác định vị trí cất giữ dữ liệu (Storage allocation)
+ Lập lịch cho đĩa (Disk scheduling)
2.1.4 Dịch vụ quản lý hệ thống nhập/xuất
Hệ điều hành phải ẩn đi các đặc điểm riêng của phần cứng bằng cách cung cấp các chức năng xử lý nhập xuất đơn giản, giúp người dùng không phải lo lắng về chi tiết của từng loại thiết bị.
2.1.5 Dịch vụ quản lý hệ thống tập tin
Máy tính lưu trữ thông tin qua nhiều thiết bị vật lý như băng từ, đĩa từ và đĩa quang, mỗi loại có khả năng lưu trữ, tốc độ truyền dữ liệu và phương thức truy xuất khác nhau Hệ điều hành đóng vai trò quan trọng trong việc đồng nhất cách truy xuất hệ thống lưu trữ, định nghĩa tập tin như một đơn vị lưu trữ cơ bản.
* Các chức năng của dịch vụ quản lý hệ thống tập tin
Hỗ trợ thực hiện các thao tác cơ bản trên tập tin và thư mục như tạo, xem, xoá, sao chép, di chuyển và đổi tên Ngoài ra, còn cung cấp khả năng ánh xạ tập tin trên hệ thống lưu trữ phụ.
+ Sao lưu tập tin trên các thiết bị lưu trữ
2.1.6 Dịch vụ bảo vệ hệ thống (Protection
Hệ điều hành phải cung cấp cơ chế bảo mật để đảm bảo tài nguyên chỉ được truy cập bởi các tiến trình có quyền hợp lệ Điều này bao gồm việc giới hạn tiến trình trong phạm vi địa chỉ của nó và ngăn chặn tình trạng độc chiếm CPU bởi một tiến trình nào đó.
2.1.7 Lời gọi hệ thống (system call)
Lời gọi hệ thống, hay còn gọi là ngắt, là tập lệnh do hệ điều hành cung cấp để giao tiếp giữa tiến trình của người dùng và hệ điều hành Các lời gọi hệ thống được phân loại thành nhiều loại, bao gồm quản lý tiến trình, quản lý tập tin, quản lý thiết bị, và liên lạc giữa các tiến trình Mỗi lời gọi hệ thống có một số hiệu duy nhất để phân biệt với các lời gọi khác Địa chỉ chứa mã lệnh của các ngắt được lưu trữ trong bảng vectơ ngắt.
Khi thực hiện lời gọi hệ thống, tiến trình cần cung cấp tham số cho hệ điều hành Có ba phương pháp chính để chuyển tham số từ tiến trình đến hệ điều hành.
- Chuyển tham số vào thanh ghi
- Lưu trữ tham số trong một bảng trong bộ nhớ và ghi địa chỉ bảng vào thanh ghi
- Lưu trữ tham số vào stack và tham số được lấy ra bởi hệ điều hành
Ví dụ chuyển địa chỉ bảng X (bảng chứa các tham số) vào thanh ghi, gọi ngắt 13 Ngắt
13 là lời gọi hệ thống do hệ điều hành cung cấp
Lời gọi hàm Mô tả
Pid=fork() Tạo một tiến trình con giống tiến trình cha
Pid=waitpid(pid, &statloc, options) Đợi một tiến trình con kết thúc
Exit(status) Kết thúc việc thực thi tiến trình và trả về trạng thái
Quản lý Hệ thống file và thƣ mục
Lời gọi hàm Mô tả
S=mkdir(name,mode) Tạo thư mục mới
S=rmdir(name) Xóa thư mục rỗng
S=link(name1,name2) Tạo một đối tượng mới name2 trỏ vào đối tượng name1 trước đó
S=unlink(name) Xóa đối tượng thư mục
S=mount(special,name,flag) Kích hoạt hệ thống file
S=unmount(special) Ngừng kích hoạt hệ thống file
Lời gọi hệ thống thường được viết bằng ngôn ngữ cấp cao (C hoặc
Các chương trình chủ yếu truy cập thông qua giao diện lập trình ứng dụng (API) cấp cao, thay vì thực hiện các lời gọi hệ thống trực tiếp.
Ba API phổ biến nhất hiện nay bao gồm API Win32 dành cho hệ điều hành Windows, API POSIX cho các hệ thống dựa trên POSIX như UNIX, Linux và Mac OS X, cùng với API Java phục vụ cho máy ảo Java (JVM).
Lời gọi hàm Mô tả
Fd=open(file,how,…) Mở một file để đọc, ghi hoặc cả hai
S=close(fd) Đóng một file đã mở trước đó
N=read(fd,buffer,nbytes) Đọc dữ liệu từ file vào vùng đệm
N= write(fd,buffer,nbytes) Ghi dữ liệu từ buffer vào file
Position=lseek(fd,offset,whence) Di chuyển con trỏ file
S=stat(name,&buf) Lấy thông tin trạng thái của file
2.1.8 Một số vì dụ cụ thể nhƣ sau:
2.1.8.1 Vì dụ lời gọi hệ thống
Chuỗi lệnh gọi hệ thống để sao chép nội dung của một tệp này sang tệp khác
Hình 5 Sao chép lệnh từ tệp này sang tệp khác
2.1.8.2 Vì dụ của chuẩn API chuẩn
2.1.8.3 Mối quan hệ giữa API – Lời gọi hệ thống và HĐH
Hình 7 Mối quan hệ giữa API, lời gọi hệ thống và HĐH
Giao diện lời gọi hệ thống duy trì một bảng được lập chỉ mục theo số hiệu, với mỗi lời gọi hệ thống đều được liên kết với một số cụ thể.
- Giao diện lời gọi hệ thống phân tách giữa user mode và kernel mode
Người dùng chỉ cần tuân theo API mà không cần hiểu sâu về cách thực hiện cuộc gọi hệ thống, vì hệ điều hành sẽ xử lý kết quả tự động Các chi tiết của giao diện hệ điều hành được ẩn giấu khỏi lập trình viên thông qua API, được quản lý bởi thư viện hỗ trợ thời gian chạy, bao gồm các chức năng tích hợp sẵn với trình biên dịch.
2.1.9 Hệ thống thông dịch dòng lệnh
Lập trình dòng lệnh là công cụ cơ bản giúp người dùng tương tác với hệ điều hành thông qua các lệnh như quản lý tiến trình, quản lý nhập xuất, quản lý bộ nhớ chính và bộ nhớ phụ, cũng như quản lý tập tin và bảo vệ hệ thống Những lệnh này thực chất là các lời gọi hệ thống, cho phép thực hiện các tác vụ cần thiết một cách hiệu quả.
Cung cấp các chức năng phân quyền, chia xẻ tài nguyên mạng, liên lạc giữa các tiến trình trên mạng, …
NGUYÊN LÝ THIẾT KẾ HỆ ĐIỀU HÀNH
Hệ điều hành nên được phát triển bằng ngôn ngữ lập trình cấp cao để dễ dàng viết, sửa lỗi và nâng cấp, vì điều này giúp tiết kiệm thời gian và công sức so với việc sử dụng ngôn ngữ assembly.
+ Hệ điều hành cần dễ cài đặt, dễ bảo trì, không có lỗi và hiệu qủa
+ Hệ điều hành cần dễ sử dụng, dễ học, an toàn, có độ tin cậy cao và thực hiện nhanh
+ Hệ điều hành cần có tính khả chuyển cao (thực hiện được trên một nhóm các phần cứng khác nhau)
Hệ điều hành cần sử dụng chương trình SYSGEN (System Generation) để thu thập thông tin phần cứng, nhằm thiết lập cấu hình phù hợp cho từng máy tính.
CẤU TRÚC HỆ ĐIỀU HÀNH
Hệ điều hành là một phần mềm phức tạp bao gồm nhiều thành phần thực hiện các nhiệm vụ và cung cấp dịch vụ khác nhau Các thành phần này được tổ chức và liên kết theo một cách nhất định, tạo thành một hệ thống hoàn chỉnh Cấu trúc của hệ điều hành có thể khác nhau tùy thuộc vào từng loại hệ điều hành, và cách tổ chức cũng như liên kết các thành phần sẽ xác định cấu trúc tổng thể Trong phần này, chúng ta sẽ khám phá các thành phần phổ biến của một hệ điều hành điển hình và một số kiểu cấu trúc thông dụng nhất.
2.3.1 Các thành phần của hệ điều hành
Một hệ điều hành tiêu biểu thường có các thành phần thực hiện những nhiệm vụ sau: a Quản lý tiến trính
Một chương trình đang thực hiện được gọi là tiến trình, với sự khác biệt cơ bản giữa chúng là chương trình là thực thể tĩnh (dưới dạng bit, byte trên đĩa), trong khi tiến trình là thực thể động thực hiện tính toán và xử lý Tiến trình cần tài nguyên như thời gian CPU và bộ nhớ Hệ điều hành cũng tạo ra các tiến trình trong quá trình chạy, và quản lý tiến trình bao gồm nhiều công việc quan trọng.
Tạo và xoá tiến trình (bao gồm cả tiến trình người dùng lẫn tiến trình hệ thống - tiến trình hệ điều hành) Lưu thông tin về các tiến trình
Tạm treo và khôi phục các tiến trình bị treo là một tính năng quan trọng trong hệ điều hành Linux Khi một tiến trình bị treo, nó sẽ được tạm dừng và có thể được chuyển từ bộ nhớ trong ra đĩa Khi khôi phục, tiến trình sẽ tiếp tục từ điểm bị treo, thay vì bắt đầu lại từ đầu Người sử dụng Linux có thể dễ dàng treo một tiến trình bằng lệnh suspend.
Lập lịch cho các tiến trình (process scheduling), hay còn gọi là lập lịch cho CPU, là quyết định tiến trình nào được cấp phát CPU để chạy
Đồng bộ hóa các tiến trình là yếu tố quan trọng để đảm bảo rằng khi nhiều tiến trình cùng tồn tại, chúng có thể hoạt động mà không gây ra xung đột về tài nguyên Việc này không chỉ giúp các tiến trình thực hiện hiệu quả mà còn tạo điều kiện cho sự hợp tác giữa chúng, từ đó đạt được kết quả mong muốn.
Giải quyết các bế tắc, ví dụ như khi có xung đột về tài nguyên
Tạo cơ chế liên lạc giữa các tiến trình b Quản lý bộ nhớ
Bộ nhớ, thường được hiểu là bộ nhớ trong hoặc RAM, là nơi lưu trữ các tiến trình và dữ liệu, đứng thứ hai sau CPU về tầm quan trọng Nó bao gồm các ô nhớ được nhóm thành từ hoặc byte và được đánh địa chỉ, cho phép truy cập thông tin khi cần thiết Trong các hệ điều hành đa nhiệm, nhiều tiến trình có thể hoạt động đồng thời và được lưu trữ trong bộ nhớ.
Thành phần quản lý bộ nhớ của hệ điều hành thực hiện các công việc sau:
- Cấp phát, phân phối bộ nhớ cho các tiến trình
Bộ nhớ ảo được tạo ra để ánh xạ địa chỉ bộ nhớ ảo vào địa chỉ bộ nhớ thực, giúp ngăn chặn các truy cập bộ nhớ không hợp lệ, bao gồm cả việc truy cập vào vùng bộ nhớ không thuộc về tiến trình.
- Cung cấp và giải phóng bộ nhớ theo yêu cầu của các tiến trình
- Quản lý không gian nhớ đã được cấp và không gian còn trống c Quản lý vào ra
Hệ điều hành đóng vai trò quan trọng trong việc đơn giản hóa và nâng cao hiệu quả trao đổi thông tin giữa các tiến trình và thiết bị vào ra, giúp người dùng không phải lo lắng về các chi tiết kỹ thuật của thiết bị Việc điều khiển thiết bị được thực hiện thông qua các chương trình điều khiển thiết bị (driver) và các giao diện lớp trên driver do hệ điều hành cung cấp Hệ thống vào ra của hệ điều hành bao gồm các thành phần này, đồng thời cũng tối ưu hóa quá trình trao đổi thông tin với thiết bị ngoại vi thông qua hệ thống vùng đệm (buffer) và bộ nhớ cache.
- Các driver cho thiết bị cụ thể
- Giao diện cho driver ở mức cao hơn
Mô đun quản lý vùng đệm và cache trong hệ điều hành giúp người dùng không phải lo lắng về sự đa dạng của các thiết bị nhớ ngoài Hệ điều hành sử dụng khái niệm file để lưu trữ thông tin, trong đó file là tập hợp các thông tin liên quan, cho phép ghi và đọc dữ liệu một cách dễ dàng Người dùng và các chương trình không cần biết cách thức lưu trữ file trên bộ nhớ ngoài, vì hệ điều hành sẽ tự động quản lý và ánh xạ file lên các thiết bị nhớ này.
Khi số lượng file tăng lên đáng kể, việc tổ chức chúng trở nên cần thiết để dễ dàng tìm kiếm và sử dụng Tương tự như trong một thư viện, nơi sách được phân loại theo thể loại hoặc tác giả, hệ điều hành cũng phân chia các file thành các thư mục Mỗi thư mục này chứa các file có chung đặc điểm, chẳng hạn như thư mục lưu trữ văn bản hoặc thư mục chứa chương trình của cùng một hãng.
- Hệ thống quản lý file và thư mục đảm nhiệm các chức năng sau:
- Tạo, xoá file và thư mục
- Đọc, ghi file Ánh xạ file và thư mục sang bộ nhớ ngoài e Hỗ trợ mạng và xử lý phân tán
Một trong những xu hướng phát triển hiện nay của các hệ thống tính toán là việc kết hợp máy tính vào mạng máy tính, cho phép trao đổi và chia sẻ thông tin giữa các máy Việc này tạo ra khả năng xử lý phân tán, giúp phân phối công việc trên nhiều máy tính đã được kết nối Các máy tính liên kết qua các môi trường truyền thông, cho phép truyền tải thông tin và dữ liệu hiệu quả Đối với những bài toán lớn cần tốc độ tính toán cao hoặc khả năng lưu trữ lớn, việc xử lý phân tán tận dụng tài nguyên từ các máy riêng lẻ để tạo ra một hệ thống tính toán mạnh mẽ hơn.
Hệ điều hành cung cấp chức năng hỗ trợ mạng và xử lý phân tán, bao gồm quản lý thiết bị mạng, hỗ trợ các giao thức truyền thông và quản lý quá trình truyền thông Ngoài ra, hệ điều hành còn đảm nhận vai trò cân bằng tải để tối ưu hóa hiệu suất.
Bộ dịch lệnh, hay còn gọi là vỏ (shell), là giao diện giữa người dùng và hệ điều hành, khác với các lời gọi hệ thống (system calls) mà các chương trình sử dụng để giao tiếp với hệ điều hành Nó nhận lệnh từ người dùng và thực hiện chúng thông qua các dịch vụ của hệ điều hành Ví dụ về bộ dịch lệnh bao gồm cmd.exe của Windows và bash của Linux Người dùng nhập lệnh dưới dạng văn bản, với số lượng lệnh có thể từ vài chục đến hàng trăm, bao gồm các lệnh thông dụng như liệt kê thư mục (dir, ls), sao chép file (copy), và thiết lập cấu hình mạng.
Trong các hệ điều hành hiện nay, giao diện đồ họa đã thay thế bộ dịch lệnh truyền thống, giúp người dùng dễ dàng tương tác với các đối tượng như cửa sổ và biểu tượng Các giao diện đồ họa phổ biến bao gồm Windows Explorer cho hệ điều hành Windows và X windows cho Linux, mang lại trải nghiệm trực quan và dễ hiểu cho người sử dụng.
Hệ điều hành thường đi kèm với các chương trình tiện ích và ứng dụng không bắt buộc, giúp người dùng sử dụng hệ thống dễ dàng và hiệu quả hơn Các tiện ích này bao gồm những công cụ hỗ trợ như nén tệp, sao chép tệp dài ra đĩa mềm và lưu trữ dữ liệu.
Hình 8 Bộ dịch lệnh cmd.exe của Windows
Hình 9 Giao diện đồ họa của Window 8
Các chương trình ứng dụng trong hệ điều hành bao gồm trình dịch như Basic của DOS và C của Uni, cũng như các công cụ soạn thảo văn bản như Notepad trên Windows và vi trên Linux Các bản phân phối hệ điều hành Linux, như RedHat và Ubuntu, cung cấp những chương trình tiện ích và ứng dụng đa dạng, phục vụ nhu cầu người dùng khác nhau.
Gỡ lỗi hệ điều hành
Gỡ lỗi là tìm và sửa lỗi, hệ điều hành tạo các tệp nhật ký chứa thông tin lỗi
- Lỗi của một ứng dụng có thể tạo ra bộ nhớ lưu tệp kết xuất lõi của quá trình
- Lỗi hệ điều hành có thể tạo ra tệp kết xuất sự cố chứa bộ nhớ hạt nhân
Ngoài việc xử lý sự cố, điều chỉnh hiệu suất cũng rất quan trọng để tối ưu hóa hệ thống Việc sử dụng danh sách theo dõi các hoạt động ghi lại giúp phân tích hiệu suất hiệu quả hơn Lập hồ sơ, thông qua việc lấy mẫu định kỳ các chỉ số, cho phép tìm kiếm và nhận diện các xu hướng thống kê quan trọng.
Operating - System Generation – Các thế hệ của HĐH
Hình 12 Các thế hệ HĐH
Khi hệ thống được khởi động, quá trình thực thi bắt đầu từ một vị trí bộ nhớ cố định, nơi Firmware ROM lưu trữ mã khởi động ban đầu.
Hệ điều hành cần được cung cấp cho phần cứng để khởi động Quá trình này bắt đầu với đoạn mã nhỏ gọi là bootstrap loader, được lưu trữ trong ROM hoặc EEPROM, có nhiệm vụ tải hạt nhân vào bộ nhớ và khởi động nó Đôi khi, quy trình này diễn ra theo hai bước, trong đó boot block ở vị trí cố định được cài đặt bởi mã ROM, từ đó tải bộ tải bootstrap từ đĩa.
Bộ tải bootstrap chung, GRUB, cho phép lựa chọn nhân từ nhiều đĩa, phiên bản, tùy chọn nhân Kernel – Nhân tải và hệ thống sau đó thực hiện.