Today I learned: Các chức năng chính của Operating System
Dịch từ cuốn sách: “Modern Operating System” của tác giả Andrew Tanenbaum và Herbert Bos
OS có 2 chức năng chính
1. Thay mặt software để đi tương tác với hardware
Các bộ phận hardware như: disk, RAM, processor… được viết bằng machine-level language, chúng rất khó để cho các lập trình viên app có thể thao tác trực tiếp. Lúc này cần có 1 lớp abstraction để giấu đi sự phức tạp bên trong và cung cấp một giao diện đẹp cho thế giới bên ngoài sử dụng
Ví dụ, động cơ xe máy là một thực thể hết sức phức tạp rối rắm mà chỉ có các kĩ sư cơ khí mới có thể hiểu được. Vì vậy, các nhà sản xuất xe máy đã giấu (abstract away) mớ phức tạp hổ lốn đó đi và thay vào đó là một cái nút bấm: Người dùng chỉ việc bấm cái nút đó là động cơ xe sẽ khởi động, không cần biết cụ thể bên trong động cơ đã có chuyện gì xảy ra. Cái nút đó là 1 abstraction
Vậy thì, trong một hệ thống máy tính, lớp abstraction phủ lên trên sự phức tạp của hardware và cung cấp 1 “giao diện” (interface) đẹp cho software sử dụng chính là OS
Một ví dụ khác, để tương tác với dữ liệu được lưu trong disk, thay vì phải chọc vào từng khay rãnh của disk thì OS cung cấp cho software các file để thao tác
2. Quản lý các tài nguyên hệ thống
Các tài nguyên hệ thống có thể hiểu là: CPU, RAM, disk, … Chức năng này phát sinh chủ yếu từ việc: một hệ thống máy tính có rất nhiều các software cùng chạy, làm nảy sinh các tình huống như:
- 2 file Word đều muốn sử dụng máy in cùng lúc: cái nào được in trước, cái nào in sau ?
- 2 software cùng được load vào trong RAM: cái nào chạy trước, cái nào chạy sau ? Làm sao để đảm bảo cái chạy trước không ngốn hết CPU để cho thằng sau còn chạy ?
- 2 chương trình cùng chỉnh sửa một file: làm sao để đảm bảo chúng không xung đột nhau ?
Các tình huống như trên sẽ được xử lý bởi OS