Tải bản đầy đủ (.pdf) (86 trang)

Nghiên cứu, thiết kế hệ điều hành trên bộ vi điều khiển 8 bít

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (639.91 KB, 86 trang )

bộ giáo dục và đào tạo
trờng đại học bách khoa hà nội
-----------------------------------------






luận văn thạc sỹ khoa học






Nghiên cứu, thiết kế hệ điều hành trên
bộ vi điều khiển 8 bít


ngành: xử lý thông tin và truyền thông


M số:





vũ trung kiên



Ngời hớng dẫn khoa học: TS. Nguyễn Linh Giang








hà nội 2006


-2-

Lời cam đoan

Tôi xin cam đoan bản luận văn này là kết quả nghiên cứu của bản thân dới
sự hớng dẫn của TS. Nguyễn Linh Giang. Nếu có gì sai phạm, tôi xin hoàn toàn
chịu trách nhiệm.
Ngời làm cam đoan


Vũ Trung Kiên




-3-


Mục lục
Lời cam đoan.....................................................................................................2

Danh mục các ký hiệu, các chữ viết tắt ..........................................................5

Danh mục các bảng ..........................................................................................6

Danh mục các hình vẽ, đồ thị ..........................................................................7

Lời nói đầu ........................................................................................................9

Chơng 1 -
Tổng quan về hệ điều hành
......................11

1.1. Khái niệm về hệ điều hành (OS-Operating System)................................. 11

1.1.1. Khái niệm................................................................................................. 11
1.1.2. Chức năng của hệ điều hành. ................................................................... 11
1.1.3. Các thành phần của hệ điều hành............................................................. 13
1.2. Quản lý tiến trình......................................................................................... 16

1.2.1. Các trạng thái của một tiến trình.............................................................. 16
1.2.2. Khái niệm về tài nguyên găng và đoạn tới hạn .................................... 17
1.2.3. Hiện tợng bế tắc..................................................................................... 19
1.3. Lập lịch cho CPU ......................................................................................... 20

1.3.1. Khái niệm giờ CPU.................................................................................. 20
1.3.2. Các trạng thái của tiến trình liên quan đến giờ CPU................................ 20
1.3.3. Lập lịch cho CPU..................................................................................... 22

1.4. Quản lý bộ nhớ ............................................................................................. 25

1.4.1. Yêu cầu phải quản lý bộ nhớ ................................................................... 25
1.4.2. Các sơ đồ quản lý bộ nhớ......................................................................... 26
Chơng 2 -
Vi điều khiển và ngôn ngữ lập trình
cho vi điều khiển
......................................................................28

2.1. Vi điều khiển........................................................................................28

2.1.1. Vi xử lý và vi điều khiển.......................................................................... 28
2.1.2. Tổ chức bộ nhớ của vi điều khiển. ........................................................... 30
2.1.3. Các bộ định thời....................................................................................... 35
2.1.4. Bộ xử lý ngắt............................................................................................ 37
2.2. Ngôn ngữ lập trình cho vi điều khiển......................................................... 39

-4-

2.2.1. Tổng quan về các ngôn ngữ lập trình cho vi điều khiển. ......................... 39
2.2.2. Những vấn đề với ngôn ngữ C viết cho các bộ vi điều khiển................... 42
Chơng 3 -
thiết kế hệ vi điều khiển
............................49

3.1. Xác định yêu cầu thiết kế. ........................................................................... 50

3.2. Lựa chọn cấu hình cho hệ thống................................................................. 51

3.2.1. Lựa chọn bộ điều khiển trung tâm. .......................................................... 51

3.2.2. Giao diện ngời sử dụng. ......................................................................... 52
3.2.3. Các thiết bị mô phỏng quá trình hoạt động của tiến trình. ...................... 53
3.3. Thiết kế mạch điện....................................................................................... 58

3.4. Đo thử và kiểm tra lỗi.................................................................................. 59

Chơng 4 -
Thiết kế hệ điều hành
.....................................60

4.1.1. Mục đích và yêu cầu thiết kế. .................................................................. 60

4.1.2. Mục đích. ................................................................................................. 60
4.1.2. Yêu cầu .................................................................................................... 63
4.2. Trình tự thiết kế hệ điều hành.................................................................... 64

4.3. Xây dựng các tiến trình. .............................................................................. 65

4.3.1. Xây dựng các tác vụ tơng ứng các tiến trình.......................................... 65
4.3.2. Giải quyết bài toán tài nguyên găng ........................................................ 69
4.4. Lập lịch cho CPU. ........................................................................................ 71

4.4.1. Sự kiện và chuyển trạng thái giữa các tiến trình. ..................................... 71
4.4.2. Lập lịch cho CPU..................................................................................... 80
4.5. Quản lý bộ nhớ. ............................................................................................ 83

Kết luận và kiến nghị .....................................................................................86

Tài liệu tham khảo .........................................................................................87







-5-

Danh môc c¸c ký hiÖu, c¸c ch÷ viÕt t¾t
STT Ch÷ viÕt t¾t Ch÷ ®Çy ®ñ
1 FCFS First Come First Served
2 FIFO First In First Out
3 LIFO Last In First Out
4 MCS Micro Controller System
5 OS Operating System
6 RTOS Real Time Operating System
7 RR Round Robbin
8 SJF Shortest Job First
9 SRT Shortest Remain Time
10 uC Micro Controller


-6-

Danh môc c¸c b¶ng
B¶ng 1.1. Tr¹ng th¸i cña c¸c tiÕn tr×nh............................................................... 19

B¶ng 1.2. Thêi gian thùc hiÖn cña c¸c tiÕn tr×nh................................................ 25

B¶ng 1.3. Thêi gian chê cña c¸c tiÕn tr×nh......................................................... 25


B¶ng 2.1. Bé nhí d÷ liÖu trªn chÝp cña AT89S52 .............................................. 33

-7-


Danh mục các hình vẽ, đồ thị
Hình 1.1. Các trạng thái của một tiến trình........................................................ 17

Hình 1.2. Các trạng thái của tiến trình liên quan đến giờ CPU.......................... 20

Hình 1.3. Sơ đồ thực hiện tiến trình ................................................................... 21

Hình 1.4. Sơ đồ tổ chức hàng đợi các tiến trình ................................................. 22

Hình 1.5. Sơ đồ Grant......................................................................................... 25

Hình 2.1. Sơ đồ khối của bộ vi điều khiển AT89S52......................................... 29

Hình 2.2. Tổ chức bộ nhớ của vi điều khiển ...................................................... 30

Hình 2.3. Sơ đồ ghép nối AT89S52 với EPROM............................................... 31

Hình 2.4. Sơ đồ ghép nối AT89S52 với RAM .................................................. 34

Hình 2.5. Giải mã địa chỉ cho các vi mạch nhớ ................................................. 34

Hình 2.6. Bộ nhớ dữ liệu đọc nh bộ nhớ chơng trình..................................... 35

Hình 2.7. Hoạt động của Timer0 và Timer1 ở chế độ 1..................................... 36


Hình 2.8. Các nguồn ngắt của AT89S52............................................................ 38

Hình 3.1. Trình tự thiết kế phần cứng cho hệ thống.......................................... 49

Hình 3.2. Sơ đồ khối của hệ vi điều khiển ......................................................... 51

Hình 3.3. Ghép nối vi điều khiển với RAM ngoài. ............................................ 52

Hình 3.4. Giao diện ngời sử dụng trên hệ vi điều khiển................................... 53

Hình 3.5. Hiển thị trên LED 7 đoạn bằng kỹ thuật quét .................................... 54

Hình 3.6. Ghép nối ma trận LED trên hệ vi điều khiển ..................................... 57

Hình 3.7. Nguyên tắc xếp chữ trên ma trận LED............................................... 58

Hình 4.1. Các tác vụ đợc thực hiện đồng thời (song song) .............................. 62

Hình 4.2. Các tác vụ đợc thực hiện luân phiên liên tục.................................... 62

Hình 4.3. Giản đồ xung trên P1.......................................................................... 69

Hình 4.4. Chốt lại giá trị của P1......................................................................... 70

-8-

Hình 4.5. Các tiến trình đợc phân bổ thời gian CPU bằng nhau ...................... 71

Hình 4.6. Chuyển giữa các tiến trình bằng sự kiện time out.............................. 73


Hình 4.7. Các tiến trình đợc phân bổ thời gian CPU khác nhau ...................... 74

Hình 4.8. Ngời sử dụng ra lệnh vào các thời điểm khác nhau ......................... 75

Hình 4.9. Chuyển giữa cá tiến trình bằng sự kiện interrupt ............................... 76

Hình 4.9. Mô tả trạng thái của các tài nguyên của tiến trình............................. 77

Hình 4.10. Các tài nguyên cần lu khi dừng một tiến trình............................... 78

Hình 4.11. Phân bổ ngăn xếp cho các tiến trình ................................................ 79

Hình 4.12. Lập lịch cho 8 tiến trình thực hiện quét chữ trên ma trận LED ....... 81

Hình 4.13. Lập lịch cho 4 tiến trình quét các số trên 4 LED 7 đoạn ................. 81

Hình 4.14. Lập lịch cho tiến trình điều khiển LCD........................................... 82

Hình 4.15. Lập lịch cho tiến trình thời gian thực .............................................. 82

Hình 4.16. Tổ chức bộ nhớ ROM của hệ vi điều khiển ..................................... 83

Hình 4.17. Thay đổi vị trí đặt các chơng trình con phục vụ ngắt..................... 84

Hình 4.18. Phân bổ bộ nhớ ROM....................................................................... 85

Hình 4.19. Phân bổ bộ nhớ RAM....................................................................... 85


-9-


Lời nói đầu
Cùng với sự phát triển của khoa học kỹ thuật, cụm từ tự động hoá đã trở
nên hết sức phổ thông. Từ các máy móc tự động trong các nhà máy xí nghiệp
thay thế cho sức lao động của công nhân, từ các đồ gia dụng tự động trong gia
đình giúp ích cho ngời nội trợ...nói chung các thiết bị có khả năng tự động hoá
xuất hiện ở khắp mọi nơi. Một câu hỏi đặt ra với khá nhiều ngời là nhờ đâu mà
các thiết bị có khả năng tự động đợc? Để trả lời câu hỏi này chúng ta cần phải đi
từ khi có cụm từ tự động hoá ra đời.
Trớc kia, khi cha có công nghệ bán dẫn, các phần tử có tiếp điểm nếu
đợc đầu nối với nhau theo một mạch logic nào đó thì vẫn có thể tạo ra một hệ
thống tự động, tuy nhiên khả năng đáp ứng và tính tự động cả hệ thống này
không cao. Công nghệ bán dẫn ra đời, nó giải quyết đợc hạn chế về đáp ứng (tốc
độ) của các phần tử có tiếp điểm tuy nhiên cũng phải chờ đến khi có sự xuất hiện
của các bộ vi xử lý, các hệ thống có tính tự động hoá cao mới ra đời. Đặc trng
của các hệ thống này đợc mô tả bằng một công thức đơn giản: Phần cứng +
Phần mềm = ứng dụng. Theo công thức này thì khi tuỳ biến một trong 2 thành
phần là phần cứng hoặc phần mềm thì sẽ cho ra ứng dụng khác. Thông thờng
phần mềm là thành phần đợc tuỳ biến.
Một hệ thống với các bộ vi xử lý có thể giả các suy nghĩ và hành động của
con ngời vì lý do đơn giản là chúng hoạt động theo một chơng trình của ngời
thiết kế đa vào mà chơng trình chính là các thuật toán là ý nghĩ của ngời lập
trình. Nh vậy để một hệ thống có tính thông minh, tự động hoá cao thì phần
mềm viết cho nó là vấn đề hết sức quan trọng.
Một hệ thống với cùng một phần cứng nhng nếu nó đợc viết hệ điều hành
thì khả năng của nó sẽ trở nên mạnh hơn rất nhiều so với một hệ thống chỉ có
một chơng trình tuần tự. Với mục đích không ngừng đáp ứng các nhu cầu của
-10-

xã hội, hiện nay các môn học về hệ nhúng đã và đang đợc đa vào giảng dạy tại

các trờng Cao đẳng và Đại học. Tuy nhiên để có một hiệu qủa giảng dạy tốt
nhất thì cần có một phơng pháp nghiên cứu và thiết kế đúng chính tắc và cũng
cần phải có một thiết bị phục vụ qua trình thí nghiệm.
Trờng Đại học Công nghiệp Hà nội là một trờng đào tạo các cử nhân và
các kỹ s thực hành. Trong chơng trình đào tạo cũng đã có môn kỹ thuật vi điều
khiển, đây có thể coi là nền tảng để tiếp cận với các hệ thống nhúng sử dụng vi
điều khiển có hệ điều hành. Việc nghiên cứu để đa vào giảng dạy môn thiết kế
hệ điều hành cho các hệ vi điều khiển là phù hợp với yêu cầu hiện tại.
Với sự hớng dẫn của TS Nguyễn Linh Giang, trong khuôn khổ luận văn
này, tôi mạnh dạn nghiên cứu về các nguyên tắc cơ bản khi thiết kế một hệ điều
hành trên hệ vi điều khiển.
Nội dung của luận văn bao gồm 4 chơng, trong đó:
Chơng 1: Giới thiệu tổng quan hệ điều hành.
Chơng 2: Giới thiệu bộ vi điều khiển đợc sử dụng để viết hệ điều hành và
ngôn ngữ lập trình cho vi điều khiển.
Chơng 3. Thiết kế phần cứng hệ vi điều khiển.
Chơng 4. Thiết kế hệ điều hành cho hệ vi điều khiển
Do thời gian và khả năng có hạn nên luận văn này sẽ còn nhiều thiếu sót.
Rất mong đợc sự góp ý và thông cảm của các thầy giáo, cô giáo.
Hà nội, ngày 30 tháng 10 năm 2006
Học viên

Vũ Trung Kiên
-11-

Chơng 1 -
Tổng quan về hệ điều hành

1.1. Khái niệm về hệ điều hành (OS-Operating System)
1.1.1. Khái niệm

Khó có một khái niệm hay định nghĩa chính xác về hệ điều hành, vì hệ điều
hành là một bộ phận đợc nhiều đối tợng khai thác nhất, họ có thể là ngời sử
dụng thông thờng, có thể là lập trình viên, có thể là ngời quản lý hệ thống và
tuỳ theo mức độ khai thức hệ điều hành mà họ có thể đa ra những khái niệm
khác nhau.
Khái niệm 1: Hệ điều hành là hệ thống chơng trình với các chức năng giám
sát điều khiển việc thực hiện các chơng trình của ngời sử dụng quản lý và phân
chia tài nguyên cho nhiều chơng trình ngời sử dụng đồng thời sao cho việc
khai thác chức năng của hệ thống máy tính của ngời sử dụng là thuận lợi và hiệu
quả nhất.
Khái niệm 2: Hệ điều hành là một chơng trình đóng vai trò nh giao diện
giữa ngời sử dụng và phần cứng máy tính nó quản lý và điều khiển phần cứng
cũng nh sự thực hiện của tất cả các chơng trình.
Khái niệm thứ hai rất gần với các hệ điều hành đang sử dụng trên các máy
tính hiện nay trong khi khái niệm thứ nhất lại gần với các hệ thống đo lờng điều
khiển trong công nghiệp sử dụng các bộ điều khiển khả trình (Ví dụ nh vi điều
khiển).
1.1.2. Chức năng của hệ điều hành.
Có thể nói hệ điều hành là 1 hệ thống các chơng trình đóng vai trò trung
gian giữa ngời sử dụng và phần cứng. Nhiệm vụ chính của nó là cung cấp một
môi trờng thuận lợi để ngời sử dụng dễ dàng thực hiện các chơng trình ứng
dụng của họ trên máy tính và khai thác triệt để các chức năng của phần cứng.
-12-

Để đạt đợc mục tiêu trên hệ điều hành phải thực hiện 2 chức năng chính
sau đây:
- Tạo ra một hệ thông mở rộng bao gồm các thành phần vật lý và các thành
phần logic:
Nh chúng ta biết, một hệ thống khả trình (ví dụ nh máy tính) gồm các bộ
phận chính nh: Processor, Memory, I/O Device, Bus, vv, do đó để đối thoại

hoặc khai thác máy tính ngời sử dụng phải hiểu đợc cơ chế hoạt động của các
bộ phận này và phải tác động trực tiếp vào nó tất nhiên là bằng những con số 0,1
(ngôn ngữ máy). Điều này là quá khó đối với ngời sử dụng hệ điều hành phải
che đậy các chi tiết phần cứng máy tính bởi một má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 nhng đơn giản và dễ
sử dụng hơn. Theo đó khi cần tác động vào máy tính thực ngời sử dụng chỉ cần
tác động vào máy tính mở rộng mọi sự chuyển đổi thông tin điều khiển từ máy
tính. Mục đích của chức năng này kà: Giúp ngời sử dụng khai thức các chức
năng của phần cứng máy tính dễ dàng và hiệu quả hơn.
- Quản lý tài nguyên của hệ thống:
Tài nguyên hệ thống có thể là: prrocessor, Memory, I/O Device..., đâ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 quá trình điều khiển sự hoạt động của hệ thống. Khi ngời sử dụng
cần thực hiện một chơng trình hay một chơng trình cần nạp thêm một tiến
trình mới vào bộ nhớ 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, tíên trình đó nạp đợc vào bộ nhớ và hoạt
động đợc. Trong môi trờng hệ điều hành đa nhiệm có thể có nhiều chơng
trình, tiến trình đồng thời cần đợc nạp vào bộ nhớ nhng không gian lu trữ củâ
bộ nhớ có 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 cần để đợc nạp vào bộ nhớ
để hoạt động. Ngoài ra hệ điều hành còn phải tổ chức bảo vệ các không gian nhớ
đã cấp cho các chơng trình tiến trình để tránh sự truy cập bất hợp lệ và sự tranh
-13-

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 hệ thống. Đây là một trong những nhiệm vụ quan trọng của hệ
điều hành.
Trong quá trình hoạt động của hệ thống đặc bệt là các hệ thống đa ngời
dùng đa chơng trình, đa tiến trình. Còn xuất hiện một hiện tợng khác, đó là
nhiều chơng trình, tiến trình đồng thời sử dụng một không gian nhớ hau một tập

tin (dữ liệu, chơng trình) nào đó. Trong trờng hợp này hệ điều hành phải tổ
chức việc chia sẻ và giám sát việc truy xuất đồng thời trên các tài nguyên nói
trên sao cho việc sử dụng tài nguyên có hiệu quả nhng tránh đợc sự mất mát dữ
liệu và làm hỏng các tập tin.
Hai dẫn chứng điển hình giúp chúng ra thấy vai trò của hệ điều hành trong
việc quản lý tài nguyên hệ thống sau này chúng ra sẽ thấy 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 công việc khó khăn và
phức tạp nhất. Hệ điều hành đã chi phí nhiều cho công việc nói trên để đát đợc
mục tiêu: Trong mọi 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 muộn nó đều đợc cấp phát và đợc
đa vào trạng thái hoạt động.
1.1.3. Các thành phần của hệ điều hành
1.1.3.1. Thành phần quản lý tiến trình.
Hệ điều hành phải có nhiệm vụ tạo lập tiến trình và đa nó vào danh sách
quản lý tíên trình của hệ thống. Khi tiến trình kết thúc hệ điều hành phải loại bỏ
tiến trình ra lhỏi danh sác quản lý tiến trình của hệ thống.
Hệ điều hành phải cung cấp đầy đủ tài nguyên để tiến trình đi vào hoạt động
và phải đảm bảo đủ tài nguyên để duy trì sự hoạt động của tiến trình cho đến khi
tiến trình kết thúc. Khi tiến trình kết thúc hệ điều hành phải thu hồi những tài
nguyên mà hệ điều hành đã cấp cho tiến trình.
-14-

Trong quá trình hoạt động nếu vì một lý do nào đó tiến trình không thể tiếp
rục hoạt động đợc thì hệ điều hành phải tạm dừng tiến trình thu hồi tài nguyên
mà tiến trình đang chiếm giữ, sau đó nếu diều kiện thuận lợi thì hệ điều hành
phải tái kích hoạt tiến trình để tiến trình tiếp tục hoạt động cho đến khi kết thúc.
Trong các hệ thống có nhiều tiến trình hoạt động song song hệ điều hành
phải giải quyết vấn đề tranh chấp tài nguyên giữa các tiến trình, đều phối
processor cho các tiến trình, giúp các tiến trình trao đổi thông tin và hoạt động
đồng bộ với nhau, đảm bảo nguyên tắc tất cả các tiến trình đã đợc khởi tạo phải

đợc thực hiện và kết thúc đợc.
Tóm lại, bộ phận quản lý tiến trình của hệ điều hành phải thực hiện nhứng
nhiệm vụ sau đây:
Tạo lập, huỷ bỏ tiến trình.
Tạm dừng, tái kích hoạt động tiến trình.
Tạo cơ chế thông tin liên lạc giữa các tiến trình.
Tạo cơ chế đồng bộ hoá giữa các tiến trình.
1.1.3.2. Thành phần quản lý bộ nhớ.
Bộ nhớ chính là một trong những tài nguyên quan trọng của hệ thống, đây là
thiết bị lu trữ duy nhất mà CPU có thể truy xuất trực tiếp đợc.
Các chơng trình của ngời sử dụng muốn thực hiện đợc bởi CPU thì
trwocs hết nó phải đợc hệ điều hành nạp vào bộ nhớ chính, chuyển đổi các địa
chỉ sử dụng trong chơng trình thành những địa chỉ mà CPU có thể truy xuất
đợc.
Khi chơng trình, tiến trình có yêu cầu đợc nạp vào bộ nhớ thì hệ điều
hành phải cấp phát không gian nhớ cho nó. Khi chơng trình, tiến trình kết thúc
thì hệ điều hành phải thi hồi lại không gian nhớ đã cấp phát cho chơng trình,
tiến trình trớc đó.
-15-

Trong các hệ thống đa chơng hay đa tiến trình, trong bộ nhớ tồn tại nhiều
chơng trình/ nhiều tiến trình, hệ điều hành phải thực hiện nhiệm vụ bảo vệ các
vùng nhớ đã cấp phát cho các chơng trình/tiến trình, tránh sự vi phạm trên các
vùng nhớ của nhau.
Tóm lại, bộ phận quản lý bộ nhớ chính của hệ điều hành thực hiện những
nhiệm vụ sau:
Cấp phát, thu hồi vùng nhớ.
Chi nhận trạng thái bộ nhớ.
Bảo vệ bộ nhớ.
Quyết định tiến trình nào đợc nạp vào bộ nhớ.

1.1.3.3. Thành phần quản lý vào ra.
Một trong những mục tiêu của hệ điều hành là giúp ngời sử dụng khai thức
hệ thống máy tính dễ dàng và hiệu quả, do đó các thao tác trao đổi thông tin trên
thiết bị xuất / nhập phải trong suốt đối với ngời sử dụng.
Để thực hiện đợc điều này hệ điều hành phải tồn tại một bộ phận điều
khiển thiết bị, bộ phận này phối hợp cùng CPU để quản lý sự hoạt động và trao
đổi thông tin giữa hệ thóng, chơng trình ngời sử dụng và ngời sử dụng với các
thiết bị xuâts/nhập.
Bộ phận điều khiển thiết bị thực hiện những nhiệm vụ sau:
Gởi mã lệnh điều khiển đến thiết bị: Hệ điều hành điều khiển các thiết bị
bằng các mã điều khiển, do đó trớc khi bắt đầu một quá trình trao đổi dữ liệu
với thiết bị thì hệ điều hành phải gởi mã điểu khiển đến thiết bị.
Tiếp nhận yêu cần ngắt (Interrupt) từ các thiết bị khi cần trao đổi với hệ
thống khi nó phát ra một tín hiệu yêu cầu ngắt, hệ điều hành tiếp nhận yêu cầu
ngắt từ các thiết bị, xem xết và thực hiện một thủ tục để đáp ứng yêu cầu các
thiết bị.
-16-

Phát hiện và xử lý lỗi: quá trình trao đổi dữ liệu thờng xảy ra các lỗi nh:
thiết bị vào/ra cha sẵn sàng, đờng truyền hỏng, vv, do đó hệ điều hành phải tạo
ra các cơ chế thích hợp để phát hiện lỗi sớm nhất và khằc phục các lỗi vừa xảy ra
nếu có thể.
1.2. Quản lý tiến trình
Tiến trình là một chơng trình đang xử lý, nó sở hữu một con trỏ lệnh, lập
các thanh ghi và các biến. Để hoàn thành nhiệm vụ của mình, các tiến trình có
thể còn yêu cầu một số tài nguyên hệ thống nh: CPU, bộ nhớ và các thiết bị.
1.2.1. Các trạng thái của một tiến trình
Trạng thái của tiến trình tại mỗi thời điểm đợc xác định bởi hoạt động
hiện thời của tiến trình tại thời điểm đó. Trong suốt khoảng thời gian tồn tại trong
hệ thống, một tiến trình có thể thay đổi trạng thái do rất nhiều nguyên nhân nh:

Chờ đợi sự kiện nào đó xảy ra, đợi một thao tác vào/ra hoàn tất, hết thời gian xử
lý...
Tại mỗi thời điểm, tiến trình có thể nhận một trong các trạng thái sau:
- Khởi tạo (new): Tiến trình đang đợc tạo lập.
- Sẵn sàng (ready): Tiến trình chờ đợc cấp phát CPU để xử lý.
- Thực hiện (runing): Tiến trình đợc xử lý.
- Đợi (waiting): Tiến trình phải dừng vì thiếu tài nguyên hoặc chờ một sự
kiện nào đó.
- Kết thúc (halt): Tiến trình đã hoàn tất công việc xử lý.
Các trạng thái của tiến trình có thể đợc biểu diễn qua sơ đồ (hình 1.1)
-17-









Hình 1.1. Các trạng thái của một tiến trình

Hệ điều hành quản lý hoạt động của các tiến trình trong hệ thống thông
qua khối mô tả tiến trình (process control block - PCB). Khối mô tả tiến trình bao
gồm các thành phần:
- Số thứ tự của tiến trình
- Con trỏ trạng thái của tiến trình (cho biết trạng thái hiện tại của tiến
trình).
- Vùng nhớ lu trữ giá trị các thanh ghi mà tiến trình đang sử dụng.
- Thông tin về tài nguyên tiến trình đang sử dụng hoặc đợc phép sử dụng.

1.2.2. Khái niệm về tài nguyên găng và đoạn tới hạn
Chúng ta cùng xem thuật toán sau:
Type
ltem
= ...;
Var
Buffer
: array [0..n-1]
of ltem
;

In. Out: 0..n-1
Counter: 0..n

Begin
(Tiến trình P)
Repeat
...
New
Ready
Runing
Halt
Waiting
-18-

Sản xuất thông tin và chứa trong NextP;
...
While
Counter = n
do

Skip;

Buffer [In]:=NextP;
In:= In + 1
mod
n
;
Until
false;

(Tiến trình C)
Repeat
While
Counter = 0
do
Skip;
NextC:= Buffer [Out];

Out:= Out + 1
mod
n
;
...
Lấy thông tin trong chứa trong NextC
...
Until
false
;
End;
Nhận xét: Vì hai tiến trình P và C song hành nên có thể xảy ra trờng hợp

trong cùng 1 thời điểm, tiến trình P tăng biến Counter lên 1 (Counter:= Counter
+ 1) còn tiến trình C lại giảm biến Counter đi 1 (Counter:= Counter 1) dẫn tới
kết quả sai. Nh vậy biến Counter trong trờng hợp này đợc gọi là tài nguyên
găng. Đoạn trình sử dụng biến Counter gọi là đoạn tới hạn.
Định nghĩa:
- Các tài nguyên logic và vật lý phân bổ cho các tiến trình song hành là tài
nguyên găng.
Các đoạn trình sử dụng tài nguyên găng gọi là đoạn tới hạn (Critical
Section).
-19-

1.2.3. Hiện tợng bế tắc
1.2.3.1. Khái niệm về bế tắc
Giả sử có hai tiến trình P
1
và P song hành sử dụng các tài nguyên r
1
và r,
đợc điều khiển bởi hai đèn hiệu S
1
và S. Tại mỗi thời điểm, mỗi tài nguyên chỉ
phục vụ cho sự hoạt động của một tiến trình. Xét trạng thái:
Bảng 1.1. Trạng thái của các tiến trình

P
1
Thời điểm P
2

Wait (S

1
) t
1
Wait (S
2
)
... t
2
...
Wait (S
2
) t
3
...
t
4
Wait (S
1
)
Nhận xét: Tại vị trí trên, sau thời điểm t
3
, tiến trình P
1
rơi vào trạng thái
chờ tài nguyên r
2
đang đợc P
2
sử dụng; Sau thời điểm t
4

, tiến trình P
2
rơi vào
trạng thái chờ tài nguyên r
1
đang đợc tiến trình P
1
sử dụng và bắt đầu từ đây, cả
hai tiến trình rơi vào trạng thái chờ đợi vô hạn về hệ thống gặp bế tắc.
Nh vậy bế tắc là trạng thái khi hai hoặc nhiều tiến trình cùng chờ đợi một
số sự kiện nào đó và nếu không có tác động đặc biệt từ bên ngoài thì sự chờ đợi
đó là vô hạn.
1.2.3.2. Điều kiện xảy ra bế tắc trong hệ thống.
Hiện tợng bế tắc xảy ra khi và chỉ khi trong hệ thống tồn tại 4 điều kiện:
- Có tài nguyên găng
- Có hiện tợng giữ và đợi, có một tiến trình đang giữ một số tài nguyên và
đợi tài nguyên bổ sung đang đợc giữ bởi các tiến trình khác.
- Không có hệ thống phân phối lại tài nguyên: Việc sử dụng tài nguyên
không bị ngắt.
-20-

- Có hiện tợng chờ đợi vòng tròn.
1.2.3.3. Các mức phòng tránh bế tắc
Để tránh hiện tợng bế tắc, thông thờng hệ thống áp dụng ba mức:
- Ngăn chặn: áp dụng các biện pháp để hệ thống rơi vào trạng thái bế tắc.
- Dự báo và tránh bế tắc: áp dụng các biện pháp để kiểm tra các tiến trình
xem có bị rơi vào trạng thái bế tắc hay không. Nếu có thì thông báo trớc khi bế
tắc xảy ra.
- Nhận biết và khắc phục: Tìm cách phát hiện và giải quyết.
1.3. Lập lịch cho CPU

1.3.1. Khái niệm giờ CPU
CPU là một loại tài nguyên quan trọng của máy tính. Mọi tiến trình muốn
hoạt động đợc đều phải có sự phục vụ của CPU (để xử lý, tính toán...). Thời gian
mà CPU phục vụ cho tiến trình hoạt động đợc gọi là giờ CPU.
Tại mỗi thời điểm nhất định, chỉ có một tiến trình đợc phân phối giờ CPU
để hoạt động (thực hiện các lệnh của mình).
1.3.2. Các trạng thái của tiến trình liên quan đến giờ CPU
Trong chế độ đa chơng trình, có ba trạng thái của tiến trình liên quan mật
thiết đến giờ CPU bao gồm:







Hình 1.2. Các trạng thái của tiến trình liên quan đến giờ CPU
Ready
Runing
Waiting
-21-

- Sẵn sàng (ready): Là trạng thái mà tiến trình đợc phân phối đầy đủ mọi
tài nguyên cần thiết và đang chờ giờ CPU.
- Thực hiện (running): Là trạng thái mà tiến trình đợc phân phối đầy đủ
mọi tài nguyên cần thiết và giờ CPU.
- Đợi (waiting): Là trạng thái tiến trình không thực hiện đợc vì thiếu một
vài điều kiện nào đó (đợi dữ liệu vào/ra, đợi tài nguyên bổ sung...). Khi sự kiện
mà nó chờ đợi xuất hiện, tiến trình sẽ quay trở lại trạng thái sẵn sàng.
Nh vậy, trong suốt thời gian tồn tại của mình, các tiến trình sẽ tuân thủ

theo sơ đồ thực hiện sau:



Hình 1.3. Sơ đồ thực hiện tiến trình

Một tiến trình đang trong trạng thái thực hiện, nó có thể rời khỏi trạng thái
bởi một trong ba lý do:
- Tiến trình đã hoàn thành công việc và chuyển sang trạng thái kết thúc, nó
trả lại giờ CPU cho hệ thống.
- Tiến trình tự ngắt: Khi tiến trình chờ đợi một sự kiện nào đó, tiến trình sẽ
đợc chuyển sang trạng thái thực hiện khi xuất hiện sự kiện nó đang chờ.
- Tiến trình sử dụng hết giờ CPU dành cho nó, khi đó nó sẽ đợc chuyển
sang trạng thái sẵn sàng.
Việc chuyển tiến trình sang trạng thái sẵn sàng về bản chất là thực hiện
việc phân phối lại giờ CPU.


Bắt đầu
Đợi I/O
Sử dụng CPU
Sử dụng CPU
Đợi I/O
Kết thúc
Sử dụng CPU
-22-

1.3.3. Lập lịch cho CPU
1.3.3.1. Khái niệm
Để điều khiển tiến trình ở nhiều trạng thái khác, hệ thống thờng tổ chức

các từ trạng thái (thực chất là các khối điều khiển tiến trình) để ghi nhận tình
trạng sử dụng tài nguyên và trạng thái tiến trình. Các từ trạng thái đợc tổ chức
theo kiểu đợi nh sau:














Hình 1.4. Sơ đồ tổ chức hàng đợi các tiến trình

Nh vậy, lập lịch cho CPU có nghĩa là tổ chức một hàng đợi các tiến trình
sẵn sàng để phân phối giờ CPU cho chúng dựa trên độ u tiên của các tiến trình
sao cho hiệu suất sử dụng CPU là tối u nhất.
Mỗi tiến trình ở trạng thái sẵn sàng đợc gắn với một thứ tự u tiên. Thứ tự
u tiên này đợc xác định dựa vào các yếu tố nh: Thời điểm hình thành tiến
trình, thời gian thực hiện tiến trình, thời gian kết thúc tiến trình...


Ready queue
CPU
I/O


I/O queue
I/O

I/O queue
I/O

I/O queue
M

M
-23-

1.3.3.2. Một số thuật toán lập lịch cho CPU
1. First Come First Served (FCFS)
Trong thuật toán này, độ u tiên phục vụ tiến trình căn cứ vào thời điểm
hình thành tiến trình. Hàng đợi các tiến trình đợc tổ chức theo kiểu FIFO. Mọi
tiến trình đều đợc phục vụ theo trình tự xuất hiện cho đến khi kết thúc hoặc bị
ngắt.
2. Shortest Job First (SJF).
Thuật toán SJF xác định thứ tự u tiên thực hiện tiến trình dựa vào tổng
thời gian thực hiện tiến trình. Tiến trình nào có tổng thời gian thực hiện ngắn sẽ
đợc u tiên phục vụ trớc.
3. Shortest Remain Time (SRT)
Tơng tự nh SJF nhng trong thuật toán này, độ u tiên thực hiện các tiến
trình dựa vào thời gian cần thiết để thực hiện nốt tiến trình (bằng tổng thời gian =
thời gian đã thực hiện). Nh vậy trong thuật toán này cần phải thờng xuyên cập
nhật thông tin về thời gian đã thực hiện tiến trình. Đồng thời chế độ phân bổ lại
giờ CPU cũng phải đợc áp dụng nếu không sẽ làm mất tính u việt của thuật
toán.

4. Round Robin (RR)
Trong thuật toán này, hệ thống quy định một lợng tử thời gian (time
quantum) khoảng từ 10-100 mili giây. Mỗi tiến trình trong hàng đợi lần lợt đợc
phân phối một lợng tử thời gian để thực hiện. Sau khoảng thời gian đó, nếu tiến
trình cha kết thúc hoặc không rơi vào trạng thái đợi thì nó đợc chuyển về cuối
hàng đợi.
Hàng đợi các tiến trình đợc tổ chức theo kiểu vòng tròn và các tiến trình
luôn luôn đảm bảo đợc phục vụ. Khi có tiến trình mới phát sinh, nó sẽ đợc đa
-24-

vào hàng đợi vòng tròn và đợc đặt ở vị trí phục vụ ngay. Các tiến trình dù ngắn
hay dài đều có độ u tiên phục vụ nh nhau.
Trên thực tế, để đảm bảo độ u tiên cho các tiến trình dài, hệ thống sẽ
phân chia các tiến trình thành m lớp. Số lần đợc phục vụ và thời gian một lần
phục vụ tiến trình tại mỗi lớp khác nhau (giả sử ở lớp thứ i, tiến trình đợc phục
vụ k lần và mỗi lần với thời gian q
i
).
Nếu sau khoảng thời gian đã đợc phân phối mà tiến trình cha kết thúc
hoặc không bị ngắt thì nó đợc chuyển sang lớp thứ i+1 (với k
i+1
và q
i+1
lớn hơn).
Lợng từ thời gian sẽ tăng dần cho đến khi tiến trình rơi vào lớp ngoài cùng (lớp
m). ở đó nó sẽ đợc phục vụ với lợng tử q
m
không đổi. Nh vậy thứ tự u tiên
của các tiến trình sẽ tăng dần theo thời gian xếp hàng đợi.
Ưu điểm của phơng pháp phục vụ đồng mức theo lớp sẽ cho phép hệ

thống u tiên những tiến trình ngắn (vì nó kết thúc sớm) nhng không gây tổn hại
lớn cho các tiến trình dài.
Nhợc điểm là do phải thờng xuyên phân phối lại giờ CPU nên thời gian
chờ đợi trung bình của Round Robin có thể lớn hơn so với FCFS.
Chú ý: Trong thụât toán, cần chọn giá trị lợng tử thời gian (time
quantum) thích hợp. Nếu chọn giá trị time quantum lớn thì việc bổ sung tiến trình
mới hoặc kích hoạt tiến trình bị ngắt sẽ làm tăng thời gian chờ đợi trung bình
nhng ngợc lại nếu chọn giá trị time quantum nhỏ thì nó sẽ làm cho các tiến
trình phải liên tục chuyển trạng thái dẫn đến giảm hệ số hữu ích của CPU.
Thông thờng giá trị time quantum đợc chọn theo công thức: q = t/n hoặc
q=t/n s. Trong đó: t là thời gian khống chế trớc; n là số tiến trình; s thời gian
chuyển từ tiến trình này sang tiến trình khác.
Ví dụ: Cho dãy tiến trình với thời gian thực hiện tơng ứng theo bảng 1.2
và time quantum có giá trị q= 4
-25-

Bảng 1.2. Thời gian thực hiện của các tiến trình

Tiến trình T thực hiện
P1 24
P2 3
P3 3

Sơ đồ Grant biểu thị thứ tự thực hiện các tiến trình nh hình 1.5.
P1 P2 P3 P1 P1 P1 P1 P1
0 4 7 10 14 18 22 26 30
Hình 1.5. Sơ đồ Grant
Theo sơ đồ này chúng ta thấy thời chờ đợi của các tiến trình nh bảng 1.2.
Bảng 1.3. Thời gian chờ của các tiến trình


Processes T thực hiện T đợi
P1 24 6
P3 3 1
P1 3 7
Tổng 30 17
Dẫn đến thời gian chờ đợi trung bình của các tiến trình là 17/3 = 5.66
1.4. Quản lý bộ nhớ
1.4.1. Yêu cầu phải quản lý bộ nhớ
Bộ nhớ là thiết bị lu trữ duy nhất mà thông qua đó CPU có thể trao đổi
thông tin với môi trờng bên ngoài. Do vậy, nhu cầu tổ chức, quản lý bộ nhớ là
một trong những nhiệm vụ cơ bản hàng đầu của hệ điều hành. Bộ nhớ đợc tổ
chức nh mảng một chiều các từ nhớ (word), mỗi từ nhớ có một địa chỉ. Việc
trao đổi thông tin với môi trờng bên ngoài đợc thực hiện thông qua các thao tác
đọc/ghi dữ liệu vào một địa chỉ cụ thể nào đó trong bộ nhớ.

×