Chương I
TỔNG QUAN VỀ HỆ ĐIỀU HÀNH
Nếu không phần mềm, máy tính chỉ là một thiết bị điện tử thông
thường. Với sự hỗ trợ của phần mềm, y tính có thể lưu trữ, xử
thông tin người sử dụng thể gọi lại được thông tin này. Phần
mềm máy tính có thể chia thành nhiều loại: chương trình hthống,
quản sự hoạt động của chính máy tính. Chương trình ứng dụng,
giải quyết các vấn đề liên quan đến việc sử dụng và khai thác máy
tính của người sử dụng. Hệ điều hành thuộc nhóm các chương trình
hthống và một chương trình hthống quan trọng nhất đối với
máy tính và cngười sử dụng. Hệ điều hành điều khiển tất cả các tài
nguyên của máy tính và cung cấp một môi trường thuận lợi để các
chương trình ứng dụng do nời sử dụng viết ra có thể chạy được
trên máy tính. Trong chương này chúng ta xem xét vai trò của hệ điều
hành trong trưng hợp này.
Một máy tính hiện đại thể bao gồm: một hoặc nhiều
processor, bnhớ chính, clocks, đĩa, giao diện mạng, và các thiết b
vào/ra khác. Tất ctạo thành một hệ thống phức tạp. Để viết các
chương trình để theo dõi tất cả các thành phần của y tính s
dụng chúng một cách hiệu quả, người lập trình phải biết processor
thực hiện chương trình như thế nào, bnhớ u trthông tin như thế
nào, các thiết bị đĩa làm việc (ghi/đọc) như thế nào, lỗi nàoth xảy
ra khi đọc một block đĩa, đây những công việc rất khó khăn
quá khó đối với người lập trình. Nhưng rất may cho cả người lập trình
ứng dụng và người sdụng là những ng việc trên đã được hệ điều
hành h trợ nên h không cần quan tâm đến nữa. Chương này cho
chúng ta một cái nhìn tổng quan vnhững gì liên quuan đến việc thiết
kế cài đặt cũng như chức ng của hệ điều hành để hệ điều hành đạt
được mục tiêu: Giúp người s dụng khai thác máy tính dễ dàng
chương trình của người sử dụng có thể chạy được trên máy tính.
I.1. Chức năng và lịch sử phát triển của hệ điều hành
I.1.1. Chức năng của hệ điều hành
Một hthống máy tính gồm 3 thành phần chính: phần cứng, hệ điều hành c
chương trình ng dụng và người sdụng. Trong đó hđiu hành một bộ phận
quan trng và không th thiếu của hệ thống máy tính, nh có hệ điều hành
người sdụng thể đối thoại và khai thác được c chức ng của phần cứng
máy tính.
thnói hđiều hành là một hthống các chương trình đóng vai trò trung
gian giữa ngưi sử dụng và phn cứng máy tính. Mục tiêu chính của nó là cung cấp
một môi trường thun li để người sdụng dễ dàng thực hiện c chương trình
ứng dụng của họ trên máy tính khai thác triệt để các chức ng của phần cứng
máy tính.
Để đạt được mục tiêu trên hệ điu hành phải thực hiện 2 chức ng chính sau
đây:
Gilập một y nh mở rộng: y tính một thiết bvi điện tử,
được cấu thành tc bộ phận như: Processor, Memory, I/O Device, Bus, ... ,
do đó để đối thoại hoặc khai thác y tính người sdụng phải hiểu được chế
hoạt động của các bộ phận này phải c động trực tiếp vào nó, tất nhiên bng
những con s 0,1 (ngôn ngữ máy). Điều y là q kđối với người sử dụng. Để
đơn giản cho người sdụng hệ điều hành phải che đậy các chi tiết phần cứng máy
tính bi một y tính mở rộng, máy tính mở rộng này có đầy đủ các chức năng của
một máy tính thực nhưng đơn giản và d sdụng n. Theo đó khi cn tác động
vào máy tính thực người sdụng chỉ cn tác động vào y tính mrộng, mọi s
chuyển đổi thông tin điu khiển từ máy tính m rộng sang máy tính thực hoặc
ngược li đều do hệ điều hành thực hiện. Mục đích của chức ng này : Giúp
người sdụng khai thác các chức năng của phần cứng máy tính dễ dàng hiệu
quả hơn.
Quản tài nguyên của hệ thống: i nguyên h thống th là:
processor, memory, I/O device, printer, file, ..., đây là những tài nguyên mà hệ điều
hành dùng để cấp phát cho các tiến trình, chương trình trong qtrình điều khiển
shoạt động của hệ thống. Khi người sdụng cần thực hiện một chương trình hay
khi một chương trình cn nạp thêm một tiến trình mới vào bnhớ thì hđiều hành
phải cấp phát không gian nhớ cho chương trình, tiến trình đó để chương trình, tiến
trình đó nạp được vào bnhớ và hoạt động được. Trong môi trường hệ điu hành
đa nhiệm th có nhiu chương trình, tiến trình đồng thời cần được nạp vào b
nhớ, nhưng không gian u trữ của bộ nhớ giới hạn, do đó hệ điều hành phải tổ
chức cấp phát bộ nhớ sao cho hợp lý để đảm bảo tất cả các chương trình, tiến trình
khi cn đều được nạp vào bnhớ để hoạt động. Ngoài ra hđiều hành n phải tổ
chức bảo vệ các không gian nhớ đã cp cho các chương trình, tiến trình để tránh s
truy cập bất hợp lvà stranh chấp bộ nhớ giữa các chương trình, tiến trình, đặc
biệt là các tiến trình đồng thời hoạt động trên hthống. Đây là một trong những
nhim vụ quan trọng của hệ điều hành.
Trong qtrình hoạt động của hệ thống, đặc biệt là các hthống đa người
dùng, đa chương trình, đa tiến trình, n xuất hiện một hin tượng khác, đó là
nhiều chương trình, tiến trình đồng thời sdụng một không gian nhớ hay một tập
tin (dliệu, cơng trình) nào đó. Trong trường hợp này hệ điều hành phi tổ chc
việc chia sẻ và giám sát việc truy xuất đồng thi trên các i nguyên nói trên sao
cho việc sử dụng i nguyên hiệu quả nhưng tránh được smất mát dliệu và
làm hng các tập tin.
Trên đây là hai dẫn chứng điển hình để chúng ta thấy vai trò của hệ điều
hành trong vic quản tài nguyên hthống, sau này chúng ta sthy việc cấp
phát, chia sẻ, bảo vệ tài nguyên của hệ điều hành là một trong những ng việc k
khăn phức tạp nhất. Hệ điều nh đã chi phí nhiu cho ng việc nói trên để đạt
được mục tiêu: Trong mi trường hợp tất cả các chương trình, tiến trình nếu cần
được cấp phát tài nguyên đhoạt động thì sớm hay muộn đều được cấp phát và
được đưa vào trạng thái hoạt động.
Trên đây là hai chức ng tng quát của một hđiều hành, đó cũng được
xem như các mục tiêu các nhà thiết kế, cài đặt hệ điu hành phải hướng tới.
Các hệ điều hành hiện nay có các chức năng cụ thể sau đây:
Hđiều hành cho phép thực hin nhiều chương trình đồng thời trong
môi trường đa tác v- Multitasking Environment. Hệ điều hành multitasking bao
gm: Windows NT, Windows 2000, Linux và OS/2. Trong hthống multasking h
điu hành phi xác định khi nào t một ng dụng được chạy và mi ng dụng
được chạy trong khoản thi gian bao lâu thì phải dừng li để cho các ứng dụng
khác được chy.
Hệ điu hành tự nạp nó vào bnhớ - It loads itself into memory: Q
trình nạp hệ điều hành vào bnhớ được gọi là qtrình Booting. Chkhi nào h
điu hành đã được nạp vào bnhớ thì nó mới cho phép người sử dụng giao tiếp với
phần cứng. Trong các hệ thống có nhiều ứng dụng đồng thời hoạt động trên bnhớ
thì hđiều hành phải chịu trách nhiệm chia sẻ không gian bộ nhớ RAM và bnhớ
cache cho các ứng dụng này.
Hđiu hành API: Application Programming Interface: API
một tập các hàm/thủ tục được xây dựng sẵn bên trong hệ thống, nó có thể thực hiện
được nhiều chức ng khác nhau như shutdown hệ thống, đảo ngược hiệu ứng màn
hình, khởi động các ng dụng, Hệ điu hành giúp cho chương trình của người
sử dụng giao tiếp với API hay thực hin một lời gi đến các hàm/thủ tục của API.
Nạp dữ liu cần thiết vào b nhớ - It loads the requied data into
memory: Dliệu do người sdụng cung cấp được đưa vào bnhớ để xử lý. Khi
nạp dliệu vào bnhớ hệ điều hành phải u lại đa chỉ của bộ nhớ i dliệu
được lưu ở đó. Hệ điều hành phi luôn theo dõi bn đồ cấp phát bộ nhớ, i dữ liệu
chương trình được u tr đó. Khi một cơng trình cần đọc dữ liệu, hệ điều
hành sđến các địa chỉ bộ nhớ i đang lưu trdliệu mà chương trình cn đọc
để đọc lại nó.
H điu hành biên dịch các chỉ thị chương trình - It interprets
program instructions: Hđiu hành phải đọc và gii mã các thao c cn được
thực hiện, được viết trong chương trình của người sử dụng. Hệ điu hành cũng
chịu trách nhiệm sinh ra thông báo lỗi khi hệ thống gặp lỗi trong khi đang hot
động.
Hđiều hành qun tài nguyên - It managers resources: đảm
bảo việc sdụng thích hợp tất ccác tài nguyên của hệ thống như là: bnhớ, đĩa
cứng, máy in, …
I.1.2. Lịch sử phát triển của hệ điều hành
I.1.2.a. Thế hệ 1 (1945 - 1955):
Vào những m 1950 y tính dùng ng chân không ra đời. Ở thế hệ này mỗi máy
tính được một nhóm người thực hiện, bao gm việc thiết kế, xây dựng chương
trình, thao tác, quản lý, ....
thế hệ này người lập trình phải dùng ngôn ngy tuyệt đối để lập trình.
Khái nim ngôn ngữ lập trình hđiều hành chưa được biết đến trong khoảng
thời gian này.
I.1.2.b. Thế h2 (1955 - 1965):
Máy tính dùng n dn ra đời, và được sn xuất để cung cấp cho khách hàng. B
phận sdụng máy tính được phân chia rõ ng: người thiết kế, người xây dựng,
người vận hành, người lập trình, và người bảo trì. Ngôn ng lập trình Assembly
Fortran ra đời trong thời kỳ này. Vi các y tính thế hệ này để thực hiện một thao
tác, lập trình viên dùng Assembly hoặc Fortran để viết cơng trình tn phiếu đục
lsau đó đưa phiếu vào máy, máy thực hiện cho kết qủa ở máy in.
Hthống xử theo cũng ra đời trong thời k này. Theo đó, các thao tác
cần thực hiện trên y tính được ghi trước trên băng từ, hệ thống sẽ đọc băng t,
thực hiện lần lượt và cho kết quả ở ng txuất. Hệ thng xử theo hoạt động
dưới sự điu khiển ca một chương trình đặc biệt, chương trình này là hệ điều hành
sau này.
I.1.2.c. Thế hệ 3 (1965 - 1980)
Máy IBM 360 được sản xuất hàng lot để tung ra thị trường. Các thiết bngoại vi
xuất hiện ngày ng nhiều, do đó c thao tác điu khiển y tính và thiết bị ngoại
vi ngày càng phức tạp n. Trước tình hình này nhu cầu cần có một hệ điều hành
sdụng chung trên tất ccác máy tính của nhà sản xuất và người sdụng trở nên
bức thiết hơn. Và hệ điu hành đã ra đời trong thời knày.
Hđiều hành ra đời nhằm điều phối, kim soát hoạt động của hệ thống và
giải quyết các yêu cu tranh chấp thiết b. Hệ điu hành đầu tiên được viết bằng
ngôn ngAssembly. Hệ điều hành xuất hiện khái niệm đa chương, khái nim chia
sthời gian và kthuật Spool. Trong giai đon này cũng xuất hiện các hệ điu
hành Multics và Unix.
I.1.2.d. Thế h4 (từ 1980)
Máy tính nhân ra đời. Hệ điều hành MS_DOS ra đời gắn liền với máy tính
IBM_PC. Hệ điều hành mng và hệ điều hành phân tán ra đi trong thời kỳ này.
Trên đây chúng tôi không ý định trình bày chi tiết, đầy đủ về lịch sử hình
thành của hệ điều hành, mà chúng i chmuốn mượn các mốc thời gian về sự ra
đời của các thế hệ máy tính để chỉ cho bạn thấy quá trình hình thành của hệ điu
hành gn liền với quá trình hình thành máy tính. Mục tiêu của chúng i trong mục
này là muốn nhn mnh với các bạn mấy đim sau đây:
Các ngôn nglập trình, đặc bit là các ngôn nglập trình cấp thấp, ra
đời trước c hệ điu hành. Đa s các hệ điều hành đều được xây dng từ
ngôn nglập trình cấp thấp trừ hệ điều hành Unix, được xây dựng từ C,
một ngôn ngữ lập trình cấp cao.
Nếu không hđiu hành tviệc khai thác và sdụng y tính s
khó khăn phức tạp rất nhiều và không phải bất kai cũng có thể sdụng
máy tính được.
Sra đi và phát triển của hệ điều hành gn liền với sphát triển của
máy tính, ngược lại sphát triển của máy tính kéo theo sự phát triển của
hệ điều hành. Hđiều hành thực sự phát triển khi máy tính PC xuất hiện trên
th trường.
Ngoài ra chúng i cũng muốn giới thiu mt skhái nim như: h
thống xử theo lô, hệ thống đa chương, hthống chia sthời gian, kthuật
Spool, ..., mà sxuất hiện của những ki niệm này đánh du một bước phát
triển mới của hệ điều hành. Chúng ta slàm c khái nim trên trong các
chương sau của tài liu này.
I.2. Một số khái niệm của hđiều hành
I.2.1. Tiến trình (Process) và tiểu trình (Thread)
Tiến trình một bộ phận của chương trình đang thực hiện. Tiến trình đơn vlàm
việc cơ bản của hệ thống, trong hthống thtồn tại nhiều tiến trình cùng hoạt
động, trong đó c tiến trình của hệ điều hành tiến trình của chương trình
người sử dụng. Các tiến trình này có thhoạt động đồng thời với nhau.
Để một tiến trình đi vào trng thái hoạt động ththống phải cung cấp đầy
đủ tài nguyên cho tiến trình. H thng cũng phải duy trì đtài nguyên cho tiến
trình trong suốt quá trình hoạt động của tiến trình.
đây cn phân biệt skhác nhau giữa tiến trình chương trình, chương