You are on page 1of 110

ĐẠI HỌC QUỐC GIA HÀ NỘI

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

GIÁO TRÌNH

GIỚI THIỆU VỀ CÔNG NGHỆ THÔNG TIN

Năm 2021
MODULE 1. THÔNG TIN VÀ XỬ LÝ THÔNG TIN

1.1. Thông tin


Ngày nay, thuật ngữ "thông tin" (information) được sử dụng khá phổ biến. Người
ta có nhu cầu đọc báo, xem truyền hình, giao tiếp với người khác để có thông tin. Thông
tin chính là tất cả những gì mang lại hiểu biết cho con người.
Cần đặt thông tin trong mục đích hoạt động. Khi tiếp nhận thông tin, người ta
phải "xử lý" để có những quyết định. Một công ty phải luôn luôn tìm hiểu thông tin về thị
trường để có chiến lược kinh doanh thích hợp. Một người điều khiển xe máy phải luôn
nhìn đường và các đối tượng tham gia giao thông khác để lái tới đích và không bị tai nạn.
Thông tin làm tăng thêm hiểu biết của con người, là nguồn gốc của nhận thức và là cơ sở
của quyết định.
Thông tin được chuyển tải qua các môi trường vật lý khác nhau như ánh sáng,
sóng âm, sóng điện từ. Thông tin được ghi trên các phương tiện hữu hình như các văn
bản trên giấy, băng ghi âm hay phim ảnh... Về nguyên tắc, bất kỳ cấu trúc vật chất nào
hoặc bất kỳ dòng năng lượng nào cũng có thể mang thông tin. Các vật có thể mang được
thông tin được gọi là giá mang tin (support). Hình thức vật lý của thông tin được gọi là
tín hiệu (signal). Thông tin và tín hiệu có một độ độc lập tương đối. Có thể chuyển tải
một nội dung thông tin như nhau bằng những tín hiệu khác nhau. Trên sân cỏ, động tác
phất cờ của trọng tài biên (hình ảnh), tiếng còi trọng tài chính (âm thanh) có thể cùng
mang thông tin báo lỗi. Ngược lại một tín hiệu như nhau trong những hoàn cảnh khác
nhau lại có thể thể hiện những thông tin khác nhau. Người nông dân ở đồng bằng Sông
Hồng mời khách uống rượu trước để tỏ lòng thành nhưng ở miền Tây Nam bộ thì phải
làm ngược lại - chủ phải uống trước.
Thông tin có thể được phát sinh và được lưu lại trong một giá mang tin nào đấy.
Thông tin có thể được truyền từ một giá mang này sang một giá mang khác. Như vậy
thông tin có thể được nhân bản và khi nhân bản ý nghĩa của thông tin không hề suy giảm.
Dữ liệu (data) là hình thức thể hiện của thông tin trong mục đích lưu trữ và xử lý
nhất định. Thuật ngữ "dữ liệu" chúng ta dùng hiện nay có nguồn gốc từ chữ Hán- Việt
với ý nghĩa là "cái đã cho". Từ tương ứng trong tiếng Anh (data) là số nhiều của từ datum
trong tiếng Latin, tiếng Pháp (donneés), tiếng Nga (данныx) cũng đều mang nghĩa là "cái
đã cho". Về mặt lịch sử, khái niệm dữ liệu xuất hiện cùng với việc xử lý thông tin bằng
máy tính. Vì thế trong nhiều tài liệu người ta định nghĩa dữ liệu là đối tượng xử lý của
máy tính. Thông tin luôn mang một ý nghĩa xác định nhưng hình thức thể hiện của thông
tin rõ ràng mang tính quy ước. Chẳng hạn kí hiệu "V" trong hệ đếm La mã mang ý nghĩa
là 5 đơn vị nhưng trong hệ thống chữ la-tinh nó mang ý nghĩa là chữ cái V. Trong máy
tính điện tử (MTĐT), nhóm 8 chữ số 01000001, nếu là số sẽ thể hiện số 65, còn nếu là
chữ sẽ là chữ "A".
Tri thức (knowledge) có ý nghĩa khái quát hơn thông tin. Những nhận thức thu
nhận được từ nhiều thông tin trong một lĩnh vực cụ thể nào đó, có tính hướng mục đích
mới trở thành tri thức. Như vậy tri thức là mục đích của nhận thức trên cơ sở tiếp nhận
thông tin. Quá trình xử lý thông tin chính là quá trình nhận thức để có tri thức.

1.2. Mã hoá thông tin


Có nhiều cách phân loại thông tin. Chúng ta quan tâm đến cách phân loại dựa vào
các đặc tính liên tục hay rời rạc của tín hiệu vật lý. Tương ứng, thông tin được chia thành
thông tin liên tục và thông tin rời rạc.
Thông tin liên tục đặc trưng cho các đại lượng mà số lượng các giá trị có thể tiếp
nhận được là vô hạn như độ dài dịch chuyển cơ học, điện áp... Thông tin rời rạc đặc trưng
cho các đại lượng mà số lượng các giá trị có thể kể ra được như số nhà trong dãy phố, số
trang của một quyển sách, tên người trong một lớp.
Thông tin rời rạc có thể biểu diễn thông qua các bộ kí hiệu (các chữ số, các chữ
cái...) mà ta gọi là bảng chữ. Giả sử, ta có tập đối tượng X cần biểu diễn. Để làm điều
này, ta chọn một tập hữu hạn A các kí hiệu làm bảng chữ mà mỗi kí hiệu là một chữ.
Chúng ta sẽ gọi mỗi dãy hữu hạn các chữ là một từ trên A. Ví dụ nếu A là tập các chữ số
thì mỗi từ chính là một số (cho bằng một dãy số). Mã hoá các thông tin rời rạc của một
tập X trên một bảng chữ A chính là cách gán cho mỗi phần tử x ∈ X một từ y trên A.
Phép gán mã phải đảm bảo tính chất: mã của hai đối tượng khác nhau phải khác nhau.
Tính chất này đảm bảo khi biết mã có thể tìm được đối tượng tương ứng. Quá trình gán
mã được gọi là phép lập mã. Quá trình ngược được gọi là phép giải mã. Ví dụ, nếu X là
tập các thí sinh, chọn A là tập các chữ số thì mã của một thí sinh có thể lấy là số báo danh
của thí sinh đó. Số báo danh phải cho phép chỉ định duy nhất một thí sinh.
Như đã biết dữ liệu là hình thức biểu diễn thông tin với mục đích xử lý thông tin.
Vậy mã hoá chính là con đường chuyển từ thông tin thành dữ liệu. Sau này ta sẽ thấy các
thông tin dưới dạng số, văn bản, âm thanh, hình ảnh đều phải chuyển dưới dạng mã phù
hợp để máy tính có thể làm việc được.

1.3. Mã hoá nhị phân và đơn vị đo thông tin


Từ lâu người ta đã biết dùng mã Moorse trong truyền tin. Với mã Moorse, mỗi
chữ được thể hiện bằng một dãy các kí hiệu chấm và vạch. Khi truyền tin, các điện tín
viên nhấn lên cần manip để đóng mạch điện. Để truyền đi một dấu chấm người ta nhấn
cần manip rồi nhả ngay. Còn để truyền một vạch người ta nhấn, giữ một chút rồi mới nhả.
Tại máy nhận mỗi khi mạch điện được đóng, đầu in áp xuống băng giấy chạy. Mạch điện
đóng lâu sẽ tạo ra vạch, đóng nhanh sẽ tạo ra chấm và được tái hiện trên băng giấy.
Mã hoá trên bảng chữ hai kí hiệu được gọi là mã hoá nhị phân. Như vậy mã
Moorse là một loại mã nhị phân.
Trong tin học, mã hoá nhị phân được sử dụng rất rộng rãi. Có nhiều lý do trong đó
có lý do là máy tính điện tử xây dựng từ các linh kiện vật lý có hai trạng thái như các
mạch đóng hoặc ngắt dòng điện. Bảng chữ nhị phân được sử dụng trong tin học chỉ gồm
2 “chữ” là chữ số 0 và chữ số 1. Chính các chữ số này cũng gọi là chữ số nhị phân
(binary digit).
Trong một tập hữu hạn đối tượng, để mã hoá nhị phân, cần gán cho mỗi đối tượng
một từ nhị phân (mã nhị phân). Ví dụ đối với tập 8 đối tượng ta có thể gán cho mỗi đối
tượng một mã khác nhau trong tập mã 3 chữ số nhị phân sau: 000, 001, 010, 011, 100,
101, 110, 111. Một cách tổng quát, nếu dùng các mã k bít sẽ mã hoá được tập đối tượng
có tới 2K đối tượng. Ngược lại, bất cứ một tập n đối tượng sẽ chỉ cần dùng không quá
[log2n] +1 chữ số nhị phân để tạo ra các mã đủ phân bịêt n đối tượng.
Như vậy, trong mã hoá nhị phân, mỗi một chữ số nhị phân mang một lượng tin
nào đó về đối tượng và được xem là một đơn vị thông tin. Đơn vị thông tin đó được gọi là
bit do viết tắt từ chính cụm từ “ BInary digiT”. Ta cũng gọi các chữ số 0 hay 1 là một bit.
Thông thường để chỉ các lượng tin lớn, người ta không dùng bít mà dùng một số đơn vị
bội của bit sau đây:

Bảng 1.1. Các đơn vị đo thông tin


Tên gọi Viết tắt Giá trị
Byte B 8 bit
KiloByte KB 2 10 byte (1024 byte)
MegaByte MB 2 10 KB
GigaByte GB 2 10 MB
TeraByte TB 2 10 GB

1.4. Xử lý thông tin


Xử lý thông tin là tìm ra những dạng thể hiện mới của thông tin phù hợp với mục
đích sử dụng. Ví dụ, khi cho phương trình x2 + bx + c = 0 ta cần giải (xử lý) để tìm ra hai
nghiệm x1 và x 2. Về mặt thông tin, việc biết b và c hoàn toàn tương đương với biết x1 và
x2. Tuy nhiên trong mục đích sử dụng thì việc biết x1 và x2 khác hẳn với biết b và c. Như
vậy xử lý thông tin không làm tăng lượng tin mà chỉ hướng hiểu biết vào những khía
cạnh có lợi trong hoạt động thực tiễn. Mục đích của xử lý thông tin là tri thức.

1.5. Xử lý thông tin tự động bằng máy tính điện tử


Quá trình xử lí thông tin trên máy tính điện tử cũng có những bước tương tự như
tính toán thủ công.
Để mô tả cách thức xử lý, dữ liệu, giữ các kết quả tính toán, con người cần phải
sử dụng một số phương tịên ghi nhớ nhất định như giấy, bảng và chính trí nhớ của mình.
MTĐT cũng cần có phương tiện nhớ dữ liệu, kết quả và cách xử lý gọi là bộ nhớ.
Con người cần sử dụng một số công cụ nào đó như bàn tính, hay chính bộ não để
thực hiện các phép toán. MTĐT cũng sử dụng một số mạch tính toán có khả năng xử lý
dữ liệu. Đó chính là bộ số học và logic.
Để xử lý một công việc phức tạp, người ta cần thực hiện nhiều phép xử lý nhỏ
theo một trình tự nhất định. Với hiểu biết của mình, tuỳ theo những điều kiện cụ thể, con
người tự xác định các phép tính cần thiết và trình tự thực hiện các phép tính. Ví dụ khi
giải một phương trình bậc 2, người giải chỉ có thể quyết định giải tiếp để tìm hai nghiệm
thực sau khi tính và thấy biệt thức ∆ ≥ 0. MTĐT thì không thể chủ động như thế. Nó
không thể tự quyết định được, khi nào thì phải làm gì, cộng hay trừ, nhân hay chia, các
dữ liệu tham gia xử lí sẽ lấy ở đâu... Để làm được điều đó, người ta phải lập một kịch bản
xử lý có đầy đủ mọi tình huống dưới dạng các mệnh lệnh để hướng dẫn MTĐT xử lý
công việc theo đúng yêu cầu mong muốn. Tập hợp các mệnh lệnh như vậy được con
người soạn thảo bằng một ngôn ngữ mà máy "hiểu" được gọi là chương trình (prrogam).
Máy tính cần có phương tiện để lưu chương trình đưa vào và cần có một thiết bị có đảm
bảo khả năng tự điều khiển theo chương trình.
Ta có thể hình dung quá trình xử lí thông tin trên máy tính số bằng sơ đồ ở hình
dưới đây:

Chương trình Kết quả


Máy tính

Dữ liệu
Hình 1.2. Xử lý thông tin bằng máy tính

Cụ thể hơn, giả sử ta cần xử lí các thông tin X. Bằng một công cụ tính toán nào
đó, con người có thể thực hiện tính toán theo một quy trình f để thu nhận được kết quả Y.
Với MTĐT, quá trình xử lí đó được tiến hành như sau: mã hóa X nhờ phép mã hoá C để
thu được dữ liệu ban đầu x (sau này ta sẽ thấy là máy tính chỉ xử lí trực tiếp với dữ liệu ở
mã nhị phân gồm toàn các chữ số 0 và 1). Thay cho quy trình xử lý f, người ta phải lập
một chương trình P nạp vào trong máy và giao cho máy tính thực hiện. Sau khi chương
trình P thực hiện xong ta thu được kết qủa y (trong dạng nhị phân). Nhờ phép giải mã C -1
ta thu được kết qủa phải tìm Y dưới dạng mà con người có thể sử dụng trực tiếp.
Tương ứng giữa hai cách xử lí có thể mô tả như hình dưới đây:

X Y
f (người thực hiện)

Phép mã hoá C Phép giải mã C -1

x y
P (Máy tính thực hiện)

Hình 1.3. Sơ đồ xử lý thông tin bằng máy tính

1.6. Tin học và Công nghệ Thông tin


Bản thân thuật ngữ “tin học” dùng ở Việt Nam có nguồn gốc từ từ “Informatique”
trong tiếng Pháp (Xem bài đọc thêm). Informatique được Viện Hàn lâm Khoa học Pháp
định nghĩa như sau:
Tin học là ngành khoa học nghiên cứu các phương pháp và qúa trình xử lý thông
tin một cách tự động dựa trên các phương tiện kỹ thuật mà hiện nay phương tiện đó là
MTĐT.
Như vậy, trong định nghĩa này ta thấy có hai khía cạnh:
ƒ Phần cứng (hardware) là toàn bộ các thiết bị vật lí của MTĐT. Nâng cao tốc độ
xử lý, tăng khả năng lưu trữ, tăng độ tin cậy, giảm năng lượng sử dụng, tăng khả
năng ghép nối... là những mục tiêu mà công nghệ phần cứng hướng tới.
ƒ Phần mềm (software) là phương pháp xử lý thông tin bao gồm các chương trình
có chức năng điều khiển, khai thác phần cứng và để thực hiện các yêu cầu xử lý
thông tin. Phần mềm còn nằm ở phương pháp tổ chức dữ liệu tương ứng với
chương trình xử lý thông tin. Tìm ra các phương pháp xử lý thông tin có hiệu quả,
tổ chức dữ liệu tốt và lập trình thể hiện các phương pháp xử lý đó là vấn đề của
phần mềm.
Trước năm 1975, với một nội dung khá thô sơ (chủ yếu là nguyên lý máy và lập
trình) ở miền Bắc thường dùng thuật ngữ "Máy tính điện tử" còn ở miền Nam dùng thuật
ngữ "Điện toán" với ý nghĩa của tin học. Tất nhiên các thuật ngữ trên đều không phản
ánh đầy đủ nội dung của Tin học. Ngay ở Mỹ cho đến nay người ta vẫn dùng thuật ngữ
“khoa học máy tính” (Computer Science), “xử lý dữ liệu” (Data Processing), “xử lý
thông tin” (Information Processing), "tính toán bằng máy tính" (Computing) để chỉ những
mặt nào đó trong tin học. Cũng nên biết rằng tên của Hội Tin học Việt Nam trong tiếng
Anh được lấy là VAIP có nguồn gốc từ “Vietnam Association for Information
Processing”
Đã từ lâu, nhiều chuyên gia muốn có một tên gọi mới cho ngành khoa học này.
Năm 1962, một giáo sư người Pháp tên là Philippe Dreyfus đã đề nghị thuật ngữ
informatique trên cơ sở hai từ “information” (thông tin) và “automatique” (tự động hoá).
Thuật ngữ này được Viện Hàn lâm khoa học Pháp chấp nhận chính thức và công bố ngày
6/4/1966 kèm theo giải thích với nội dung như định nghĩa tin học nêu trên. Trong các hội
thảo và các ấn phẩm khoa học, thuật ngữ này được Anh hoá thành từ Informatics (chính
tiếng Anh không có từ này). Thuật ngữ này được chấp nhận rộng rãi ở châu Âu nhưng ít
được dùng ở Bắc Mỹ.
Cuối những năm 70, một nhóm các nhà khoa học Việt kiều tại Pháp đã dùng thuật
ngữ "Tin học" với ý nghĩa của từ "Informatique" và đã sử dụng trong một số hội thảo tại
Hà Nội. Từ đó thuật ngữ “Tin học” được chính thức sử dụng tại Việt Nam.
Hiện nay ngay cả trên thế giới cũng có nhiều quan niệm khác nhau về một định
nghĩa cho tin học. Sự khác nhau thực chất chỉ ở phạm vi các lĩnh vực được coi là tin học.
Ngày nay tin học xâm nhập vào mọi lĩnh vực nên ở một số nơi ranh giới giữa tin học và
một số ngành khác không còn rõ nét nữa. Ví dụ viễn thông (telecommunication) ngày nay
đã chuyển dịch từ công nghệ tương tự (analog) sang công nghệ số (digital). Phần truyền
dẫn ở những môi trường truyền thống còn là tương tự nhưng phần quản lý, chuyển mạch,
xử lý dịch vụ...đều do máy tính đảm nhận. Tự động hoá ngày nay cũng thay đổi rất nhiều
với những xử lý thông minh qua máy tính trước khi truyền tín hiệu điều khiển đến các cơ
cấu chấp hành.
Trong thời gian vừa qua nhiều nhà khoa học đề nghị sử dụng thuật ngữ "Công
nghệ Thông tin" (Information Technology) với một nội dung đầy đủ hơn, bao hàm được
những lĩnh vực, những nền tảng chủ yếu của khoa học và công nghệ xử lý thông tin dựa
trên máy tính. Khi nói đến yếu tố công nghệ, người ta muốn nhấn mạnh đến tính quá
trình, tính tổ chức và phương pháp xử lý thông tin hướng tới ứng dụng. Định nghĩa Công
nghệ Thông tin đã được nhóm chuyên gia Việt Nam đứng đầu là Giáo sư Phan Đình Diệu
(hiện công tác tại Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội) nghiên cứu,
tham khảo từ các định nghĩa của chuyên gia trên thế giới và đã được đưa vào Nghị quyết
49/CP của Chính phủ về phát triển Công nghệ Thông tin của Việt Nam từ 1996 như sau:
"Công nghệ Thông tin là tập hợp các phương pháp khoa học, các phương tiện và
công cụ kỹ thuật hiện đại - chủ yếu là kỹ thuật máy tính và viễn thông - nhằm tổ chức và
khai thác và sử dụng có hiệu quả nguồn tài nguyên thông tin rất phong phú và tiềm tàng
trong mọi lĩnh vực hoạt động của con người và xã hội...Công nghệ thông tin được phát
triển trên nền tảng phát triển của các công nghệ Tin học-Điện tử- Viễn thông và Tự động
hoá".
Như vậy Công nghệ Thông tin mang một ý nghĩa rộng rãi hơn, nó vừa là khoa
học, vừa là công nghệ, vừa là kỹ thuật, bao trùm cả tin học, viễn thông và tự động hoá.
Lưu ý rằng ở nhiều nơi người ta không xem viễn thông là một bộ phận của CNTT.
Vì thế thay cho IT (Information Technology) người ta thường dùng ICT (Information -
Communication Technology).
Ngày 29 tháng 6 năm 2006 Quốc hội nước Cộng hoà Xã hội Chủ nghĩa Việt Nam
đã ban hành Luật Công nghệ Thông tin. Theo đó CNTT được định nghĩa như sau:
Công nghệ thông tin là tập hợp các các phương pháp khoa học, công nghệ và
công cụ kỹ thuật hiện đại để sản xuất, truyền đưa, thu thập, xử lý, lưu trữ và trao đổi
thông tin số.
Ở đây, thông tin số là thông tin được tạo lập bằng phương pháp dùng tín hiệu số.

Câu hỏi và bài tập


1. Hãy làm rõ mối liên hệ giữa các khái niệm thông tin, tin hiệu, dữ liệu ?
2. Tìm một ví dụ minh hoạ có thông tin nghĩa là giảm độ bất đinh.
3. Một lớp có 48 sinh viên trong đó có 36 nam và 12 nữ. Trong một cuộc thi học
sinh giỏi tin học của trường một sinh viên của lớp được giải nhất. Người ta muốn biết
người đó là ai. Sau đó người ta được thông báo thêm, người đoạt giải cũng đã từng nhận
giải nhì trong một cuộc thi cắm hoa của nữ sinh tổ chức nhân ngày 8/3. Tính lượng tin
nhận được trong thông báo trên.
4. Đơn vị đo tin là bít. Nhưng bít chính lại là chữ viết tắt của cụm từ chữ số nhị
phân "Binary Digit". Hãy lý giải mối liên hệ giữa hai điều này.
5. Tại sao nói xử lý thông tin không làm tăng lượng tin
6. Hãy nêu vai trò của thông tin trong cuộc sống .
MODULE 2. CẤU TRÚC CỦA MÁY TÍNH ĐIỆN TỬ

2.1. Kiến trúc chung của máy tính


Hơn nửa thế kỷ qua, nhờ những tiến bộ khoa học kĩ thuật, tính năng của MTĐT
đã được hoàn thiện không ngừng. Mặc dầu vậy, các nguyên lí hoạt động, cũng như cấu
trúc cơ bản của MTĐT vẫn chưa có gì thay đổi đáng kể. Kiến trúc tổng quát của các hệ
MTĐT đều bao gồm các khối chức năng chủ yếu sau đây:
ƒ Bộ nhớ (memory): là nơi lưu trữ các dữ liệu. Bộ nhớ được phân cấp thành 2 loại.
Bộ nhớ trong là bộ nhớ làm việc trong quá trình xử lý. Máy tính xử lý trực tiếp
các thông tin trong bộ nhớ trong. Bộ nhớ ngoài có tốc độ làm việc chậm. Bù lại,
thông tin trên bộ nhớ ngoài có thể lưu trữ lâu dài mà không cần nguồn nuôi. Tuy
nhiên máy tính không thể xử lý trực tiếp các thông tin trên bộ nhớ ngoài mà trước
khi xử lý phải chuyển chúng vào bộ nhớ trong.
ƒ Bộ số học và logic (Arithmetic Logic Unit - ALU) là nơi thực hiện các xử lý như
thực hiện các phép tính số học hay logic.

Bộ nhớ

Khu vực ngoại Thiết bị vào Bộ nhớ ngoài Thiết bị ra


vi

Bộ nhớ trong

Khu vực
trung tâm

Bộ số học
Đồng hồ và logic
xung

Bộ điều khiển

Bộ xử lý
Hình 2.7. Sơ đồ cấu trúc logic của MTĐT. Các mũi tên là đường chuyển dữ liệu, các
đường đứt nét thể hiện các kênh điều khiển.

ƒ Bộ điều khiển (Control Unit) là đơn vị chức năng đảm bảo cho máy tính thực hiện
đúng theo chương trình đã định. Bộ điều khiển phải điều phối, đồng bộ hoá tất cả
các thiết bị của máy để phục vụ yêu cầu xử lý do chương trình quy định. Do bộ
điều khiển và bộ số học logic phải phối hợp hết sức chặt chẽ trong suốt quá trình
thực hiện chương trình nên kể từ các máy tính thế hệ thứ 3, người ta thường chế
tạo chúng trong một khối chức năng chung gọi là bộ xử lí trung tâm (Central
Processing Unit - CPU )
ƒ Thiết bị ngoại vi (Peripheral Device) là các thiết bị giúp máy tính giao tiếp với
môi trường bên ngoài kể cả với người sử dụng.

2.2. Bộ nhớ
Bộ nhớ là thiết bị dùng để lưu trữ dữ liệu và chương trình. Tính năng của bộ nhớ
đánh giá qua các đặc trưng chính sau:
Thời gian truy cập (access time) là khoảng thời gian cần thiết kể từ khi phát tín
hiệu điều khiển đọc/ghi đến khi việc đọc/ghi hoàn thành. Tốc độ truy cập là một yếu tố
quyết định tốc độ chung của máy tính.
Sức chứa bộ nhớ (memory capacity) chỉ khối lượng dữ liệu mà bộ nhớ có thể lưu
trữ đồng thời.
Độ tin cậy: đo bằng khoảng thời gian trung bình giữa hai lần lỗi.

2.2.1. Bộ nhớ trong


Bộ nhớ trong (BNT) là lọai bộ nhớ có thời gian truy cập nhỏ. Nó được dùng để
ghi chương trình và dữ liệu trong thời gian xử lí.
BNT được cấu tạo từ các phần tử vật lý có hai trạng thái đối lập. Một trạng thái
dùng để thể hiện bit 0 còn trạng thái kia thể hiện bit 1. Có nhiều kỹ thuật chế tạo các phần
tử có hai trạng thái. Trong các thập kỷ 60, 70 người ta thường dùng bộ nhớ từ tính như
xuyến phe-rit (ferrite ring) hoặc màng mỏng từ và ghi nhớ các bít bằng chiều của từ
thông. Sau này người ta dùng các bộ nhớ bán dẫn là các mạch bán dẫn điều khiển được
có hai trạng thái đóng/mở để thể hiện các bit. Cần phân biệt thiết bị vật lý (ví dụ mạch
điện) là phần cứng cố định còn trạng thái của thiết bị thì không cố định, dễ dàng thay đổi
(ví dụ bằng cách đóng/ mở mạch điện) để thể hiện các bít.
Hình 2.8. Sơ đồ bộ nhớ
xuyến phe-rit và ảnh chụp
một bộ nhớ dùng xuyến

Nhờ tiến bộ của công nghệ vi điện tử, các bộ nhớ bán dẫn có thể được chế tạo
theo qui mô công nghiệp, giảm được giá thành. Thành phần chủ yếu của bộ nhớ MTĐT
hiện đại là mạch tích hợp. Hiện nay, một vi mạch nhớ cỡ vài cm2 có sức nhớ tới vài trăm
MB. Bộ nhớ bán dẫn được chia thành hai loại:
Bộ nhớ RAM
RAM (Random Access Memory) là loại bộ nhớ có thể ghi và đọc dữ liệu. Chính
vì vậy nó còn có một tên gọi khác là RWM (Read Write Memory). Dữ liệu phải nuôi
bằng nguồn điện nên chúng sẽ bị xóa khi mất nguồn. Bản thân cụm từ “Random Access
Memory” có nghĩa là bộ nhớ truy nhập ngẫu nhiên với ý nghĩa là thời gian truy nhập đến
bất kỳ ô nhớ nào (ngẫu nhiên) cũng như nhau. Điều này không giống với một số loại bộ
nhớ ngoài mà chúng ta sẽ thảo luận trong cùng mục này.
Bộ nhớ ROM
ROM (Read Only Memory) là loại bộ nhớ cố định, chỉ cho phép người sử dụng
đọc dữ liệu ra nhưng không cho phép ghi vào. Dữ liệu được ghi vào ROM trong lúc chế
tạo hoặc bằng phương tiện chuyên dụng. Loại ROM có thể ghi lại được bằng phương tiện
chuyên dụng gọi là EPROM (Erasable Programmable ROM).
Dữ liệu ghi trong ROM không cần nguồn nuôi. ROM thường dùng để lưu trữ các
chương trình điều hành cơ sở của máy tính. Khi bật máy tính các chương trình này có thể
thực hiện được ngay mà không cần nạp từ một nơi nào đó vào bộ nhớ trong.
Tổ chức bộ nhớ trong
Ta có thể hình dung bộ nhớ trong (BNT) như dãy liên tiếp các ô nhớ được đánh
số. Chỉ số của một ô nhớ gọi là địa chỉ của ô nhớ đó.
Địa chỉ được đánh số lần lượt từ 0, 1, 2,... Mỗi ô
nhớ gồm nhiều ngăn, mỗi ngăn dùng để lưu một bit.
Độ dài của ô nhớ là khác nhau theo từng loại máy.
Trước đây khi máy tính dùng chủ yếu với mục đich
khoa học kỹ thuật thì độ dài ô nhớ khá lớn. Ví dụ
IBM/360 dùng ô nhớ 32 bít, chiếc máy tính đầu tiên
Hình 2.9. Một thanh RAM như thế
này có sức chứa tới 256 MB
dùng ở Viện nam, máy МИНСК/22 của Liên xô dùng ở Việt Nam những năm 60 dùng ô
nhớ 37 bít... Phần lớn các máy tính ngày nay dùng ô nhớ có độ dài 8 bit (một byte). Byte
là đơn vị thông tin thuận lợi cho xử lí dữ liệu chữ vì có thể chứa vừa đủ mã một chữ. Để
thể hiện các dữ liệu dài hơn như số người ta sử dụng nhiều byte kế tiếp nhau ví dụ để lưu
trữ một số nguyên người ta có thể dùng 4 ô nhớ 1 byte kề nhau.
Bít
Địa chỉ 7 6 5 4 3 2 1 0
0
1
2
.....
n-1
Hình 2.10. Hình ảnh địa chỉ hoá bộ nhớ n byte.
Hoạt động cơ sở của máy tính là thực hiện một lệnh. Trong một lệnh, máy tính có
thể xử lý cả một nhóm bít trong nhiều byte kế tiếp nhau. Dãy các bit nhớ dài nhất với tư
cách một đơn vị dữ liệu mà CPU có thể xử lí trong một lệnh cơ bản gọi là một từ máy
(memory word). Mỗi MTĐT có độ dài từ máy (số lượng các bit nhớ) xác định, thường là
8, 16, 32... bits (tương ứng một, hai, bốn... byte). Ví dụ từ máy của máy vi tính dùng bộ
xử lý Intel 80286 là 16 bít, còn từ máy vi tính dùng bộ xử lý Pentium của Intel là 32 bit,
từ máy của máy dùng bộ xử lý Alpha hay bộ vi xử lý Itanium mà Intel là 64 bít. Từ máy
càng dài thể hiện mức song song hoá trong xử lý càng cao. Địa chỉ từ máy là địa chỉ byte
đầu tiên của từ máy đó.
Như vậy, mỗi ô nhớ có hai đặc trưng:
ƒ Địa chỉ là giá trị bằng số, chỉ thứ tự của vị trí ô nhớ trong BNT. Địa chỉ của mỗi ô
nhớ là cố định.
ƒ Nội dung là giá trị số dạng mã nhị phân, được lưu trữ bằng các trạng thái vật lí
trong ô nhớ. Nội dung ô nhớ có thể thay đổi.
Do mỗi ô nhớ có địa chỉ riêng của nó, nên có thể truy nhập tới dữ liệu trong từng
ô nhớ không phụ thuộc vào các ô nhớ khác. Chính vì thế, BNT còn được gọi là bộ nhớ
truy nhập trực tiếp. Dữ liệu truyền giữa CPU và bộ nhớ mỗi lần thường là một byte hay
một từ.
Đọc/ ghi
Khi đọc bộ nhớ, nội dung chứa trong ô nhớ không thay đổi (tương tự như khi ta
đọc sách thì chữ viết trong trang sách đó vẫn còn nguyên). Khi ghi vào bộ nhớ thì nội
dung của có trong bộ nhớ đó bị xoá để lưu nội dung mới (tương tự như viết lên bảng, khi
viết thì xoá nội dung trước đó. Để đọc/ghi với bộ nhớ trong, đầu tiên CPU gửi địa chỉ của
vùng nhớ tới một mạch gọi là bộ giải mã điạ chỉ, sau đó gửi một tín hiệu điều khiển tới
kích họat bộ giải mã điạ chỉ. Kết quả là bộ giải mã địa chỉ mở mạch nôí trực tiếp với
mạch lưu trạng thái của ô nhớ tương ứng rồi sao chép nội dung ra một vùng nhớ phụ nếu
thao tác là đọc hoặc nội dung của vùng nhớ phụ được sao vào ô nhớ nếu thao tác là ghi.
Vùng nhớ phụ này có tên là các thanh ghi - register mà ta sẽ nói kỹ hơn trong phần mô tả
CPU.
Do cơ chế địa chỉ hoá và phần nào đó do giá thành nên bộ nhớ trong thường có
dung lượng không lớn lắm (từ vài trăm MB đến vài GB).

2.2.2. Bộ nhớ ngoài


RAM chỉ dùng cho việc ghi dữ liệu khi đang xử lí, không giữ được dữ liệu khi
không còn nguồn nuôi. Vì vậy, đối với các dữ liệu cần lưu giữ lâu dài, không thể để trên
RAM được. Mặt khác tuy tốc độ truy nhập trên RAM là nhanh, nhưng dung lượng nhớ
của nó nhỏ không cho phép lưu trữ lượng thông tin lớn. Để có thể lưu trữ thông tin lâu
dài với khối lượng lớn, ta phải sử dụng bộ nhớ ngoài (BNN). BNN thường làm bằng các
vật liệu từ. Với BNN, tuy tốc độ khai thác chậm hơn, nhưng chi phí lưu trữ rẻ hơn và giữ
được thông tin lâu dài không phụ thuộc vào nguồn.
Có nhiều loại BNN. Cho đến nay chỉ còn sử dụng thông dụng một số loại là đĩa
từ, băng từ và gần đây ta còn dùng đĩa quang.
Ta mô tả một số loại BNN thông dụng.
Đĩa mềm
Đĩa mềm (floppy disk) là một đĩa hình tròn làm bằng nhựa tổng hợp, trên đó có
phủ lớp vật liệu từ tính. Đĩa mềm được chứa trong vỏ bọc hình vuông để bảo vệ khỏi bụi
và chỉ để mở ở hai chỗ, một chỗ cho đầu đọc/ghi tiếp xúc được với đĩa. Một chỗ gọi là
lẫy bảo vệ đĩa mà khi ta cài lại thì việc ghi vào đĩa không thực hiện được. Biện pháp này
giúp người sử dụng có thể bảo vệ thông tin ghi trên đĩa chống ghi nhầm hay xoá mất
thông tin đang có trên đĩa. Dữ liệu được ghi trên một hoặc hai mặt của đĩa theo các
đường tròn đồng tâm mà ta gọi là đường ghi (track). Để tiện định vị các dữ liệu trên các
đường ghi, đường ghi được chia thành các cung (sector). Các cung được đánh số liên tiếp
từ 0, 1, 2,...
Dữ liệu được định vị trên đĩa theo địa chỉ, được xác định thông qua tên đĩa, mặt
dưới hay trên của đĩa, chỉ số đường ghi, chỉ số cung. Việc đọc/ghi thông tin với đĩa thực
hiện theo các đơn vị vài cung gọi là liên cung (cluster) trên một đường ghi chứ không
thực hiện theo từng byte.

Vỏ đĩa

Đĩa

Đường ghi track)

Các cung (sector)

Cửa đọc/ghi

Lẫy chống ghi

Hình 2.11. Đĩa mềm và một ổ đĩa mềm nhìn từ phía ngoài
Thiết bị đọc ghi đĩa (mà sau đây ta sẽ gọi là ổ đĩa) hoạt động giống với bộ phận
quay đĩa của máy hát. Ở tâm đĩa mềm có lỗ để bộ phận quay gắn vào đó và quay đĩa. Đầu
từ đọc /ghi mặt đĩa qua cửa đọc/ghi. Khi có yêu cầu đọc/ghi, CPU gửi tín hiệu điều khiển
đến ổ đĩa. Khi đó bộ phận quay gắn vào đĩa và quay đĩa còn đầu từ được di chuyển theo
phương bán kính đến đường ghi cần thiết. Thời gian truy nhập đối đĩa bao gồm cả thời
gian đặt đầu từ vào vùng đĩa chứa thông tin và cả thời gian đọc/ghi
Có nhiều loại đĩa mềm có dung lượng và kích cỡ khác nhau. Đĩa mềm thông dụng
nhất hiện nay là loại có đường kính 3. 5 inch với sức chứa 1.44 MB. Với việc xuất hiện
các bộ nhớ bán dẫn kiểu flash, đĩa mềm ngày càng ít được dùng.
Đĩa cứng
Đĩa cứng thường là một bộ đĩa gồm nhiều đĩa xếp thành chồng, đồng trục. Các đĩa
này là các đĩa hợp kim có phủ vật liệu từ trên mặt để ghi thông tin. Mỗi đĩa cũng quy
định các đường ghi, các cung tương tự như đĩa mềm. Do có nhiều đĩa nên các đường ghi
trên các đĩa có cùng một bán kính tạo nên một mặt trụ (cylinder). Khi nói tới số trụ của
đĩa cứng ta hiểu đó chính là số thứ tự của đường ghi trên đĩa.

Hình 2.12. Bên trong và bên ngoài một đĩa cứng


Mỗi mặt
đĩa có đầu đọc/ghi (head) riêng. Chúng được cố kết thành một chùm như một cái lược và
di chuyển đồng thời. Khi có yêu cầu, bộ đọc/ghi chuyển đến một trụ và một đầu đọc được
chọn để đọc/ghi trên mặt tương ứng.
Có 3 tính năng thường được kể đến khi xem xét đĩa cứng. Đó là:
ƒ Sức chứa hay dung lượng tính theo GB. Mật độ ghi trên đĩa cứng cũng cao hơn
nhiều so với đĩa mềm. Những đĩa cứng ngày nay rất gọn và có thể có sức chứa tới
nhiều chục GB. Các đĩa cứng dùng cho máy vi tính thông thường có sức chứa
khoảng 40-60 GB. Từ năm 2002 đã xuất hiện các đĩa cứng có sức chứa tới 200
GB.
ƒ Thời gian truy nhập. Thời gian này phụ thuộc cả tốc độ quay của đĩa và thời gian
cần thiết để di chuyển đầu từ tới vị trí cần thiết. Tốc độ quay phổ biến hiện nay là
5400 vòng/phút hoặc 7200 vòng /phút. Cũng đã có các đĩa cứng có tốc độ quay
đạt tới 10.000 vòng/phút. Thời gian trung bình để đặt được đầu từ vào vị trí đọc
mất khoảng 10 ms. Trong các đĩa cứng hiện đại để cải thiện tốc độ giao tiếp người
ta còn xây dựng những bộ nhớ đệm (cache) cho phép nạp trước những dữ liệu sẽ
đọc vào bộ nhớ đệm. Sau đó CPU sẽ lấy dữ liệu từ bộ nhớ đệm để giảm thời gian
chờ đọc từ đĩa cứng.
ƒ Độ tin cậy thường tính bằng khoảng thời gian trung bình giữa hai lần lỗi. Bộ đĩa
và bộ phận đọc/ghi được lắp đặt chung trong một hộp kín để tránh bụi. Khi hoạt
động do tốc độ quay của đĩa rất nhanh nên dòng không khí tạo một lớp đệm tách
đầu từ khỏi mặt đĩa, không làm cho đĩa cứng bị xước do những tiếp xúc cơ học
như đối với đĩa mềm. Do vậy tuổi thọ đĩa cứng rất dài. Khoảng thời gian trung
bình có một lỗi của đĩa cứng lên tới hàng chục nghìn giờ so với vài giờ của đĩa
mềm.
Đĩa quang
Đĩa quang hay đĩa compact (viết tắt là CD) làm bằng polycarbonate, có phủ một
lớp phim nhôm có tính phản xạ và một lớp bảo vệ. Dữ liệu ghi trên đĩa bằng các vết lõm
(trong tiếng Anh gọi là pit) và các vùng phản xạ hay còn gọi là vùng nổi (trong tiếng Anh
gọi là land). Đĩa CD được đọc bằng tia laser, không có sự tiếp xúc cơ học nào giữa đầu
đọc và mặt đĩa. Khi đọc, đầu đọc chiếu tia laser công suất thấp lên đĩa và phân tích tín
hiệu phản hồi để nhận biết các điểm lõm và vùng nổi. Khi gặp các điểm lõm, tín hiệu
phản hồi sẽ bị tán xạ. Còn khi gặp các vùng nổi, tia laser sẽ bị phản xạ.
Đầu phát Đầu thu

Land

Pit

Hình 2.13 : Đĩa quang và nguyên tắc đọc tín hiệu trên đĩa quang

Để ghi đĩa người ta dùng phương pháp ép khuôn nếu sản xuất hàng loạt. Các đĩa
quang tạo dạng theo kiểu này không thể ghi lại được. Cũng vì thế mà ta thường gọi chúng
là các đĩa CDROM (Compact Disk Read Only Memory).
Một vài loại đĩa quang có nguyên tắc ghi khác như dùng chính tia laser công suất
cao đề ghi, thậm chí có những loại có thể ghi được nhiều lần.
Các ứng dụng đầu tiên của đĩa compact là các đĩa nhạc và đĩa hình. Tốc độ truy
cập trên đĩa CD không nhanh bằng đĩa cứng. Người ta thường đo tốc độ đọc đĩa CD theo
tỉ số tốc độ so với các đầu đọc đĩa nhạc số tiêu chuẩn. Ví dụ đầu đọc tốc độ 48 (kí hiệu là
48X) có tốc độ đọc nhanh gấp 48 lần đầu đọc đĩa nhạc (tốc độ khoảng 150 KB/s). Đĩa CD
có sức chứa rất lớn. Các đĩa thông dụng hiện nay có sức chứa khoảng 650 MB. Các nhà
sản xuất đã đưa ra một chuẩn đĩa khác là đĩa Video số (DVD) có sức chứa gấp 7 lần các
đĩa CD ROM hiện nay. Với đĩa này có thể ghi một bộ phim kéo dài nhiều giờ. Người ta
đã chuẩn bị đưa ra thị trường các đĩa quang có sức chức tới 100 GB. Đối với đĩa DVD tốc
độ 1X không chỉ là 150 KB/s như đĩa nhạc mà tính theo tốc độ đĩa hình là 1350 KB/s.
Đọc thông tin từ các loại đĩa (đĩa mềm, đĩa cứng hay đĩa quang) đều bắt đầu từ
việc tính toán trước thông tin nằm ở vùng nào của đĩa (head, sector, track) sau đó mới
đưa đầu từ vào đúng đường ghi (track, cylinder), sau đó kích hoạt việc đọc đối với đầu từ
tương ứng (head) sau đó đợi cung (sector) tương ứng đi qua. Chính vì có thể tính được
trước vùng chứa dữ liệu nên có thể đặt đầu đọc vào đúng vùng cần thiết mà các loại đĩa
nói trên cũng được xem là bộ nhớ truy nhập trực tiếp (direct access) tương tự như bộ nhớ
trong. Điều này khác hẳn với bộ nhớ kiểu băng từ mà ta nêu dưới đây.
Bộ nhớ bán dẫn dùng công nghệ flash
Vài năm gần đây xuất hiện một loại bộ nhớ ngoài mới (có dung lượng từ vài chục
MB đến vài GB). Loại bộ nhớ này dùng các mạch bán dẫn và công nghệ flash. Các bộ
nhớ này rất gọn, có thể dùng trực tiếp với máy tính như bộ nhớ ngoài qua cổng USB hoặc
dùng với các thiết bị cầm tay như máy ảnh số, video camera, điện thoại di động, máy
nghe nhạc. Giá thành của bộ nhớ này rất rẻ. Với sự xuất hiện của loại thiết bị này, người
ta đang chứng kiến sự “ra đi” của đĩa mềm.

Hình 2.14. Bên trái là một bộ nhớ ngoài flash giao tiếp qua cổng USB, giữa là một số thẻ
nhớ dùng cho máy ảnh số, bên phải là một thẻ nhớ của Samsung ra đời vào tháng 9/2005
có dung lượng tới 16 GB được chế tạo trên công nghệ 80 nanomét
Băng từ
Băng từ được sử dụng rất rộng rãi trong thập kỷ 60 và 70. Ưu điểm chính của
băng từ là giá rất rẻ và khối lượng lưu
trữ lớn. Chế độ đọc/ghi với băng từ là
tuần tự (sequential access). Nếu như
để đọc một vùng nào đó trên đĩa người
ta có thể tính toán để đặt chính xác
đầu từ vào vùng đĩa cần đọc thì với
băng từ phải duyệt tuần tự. Thời gian
truy nhập đối với băng từ mất nhiều
phút. Chính vì vậy mà hiện nay băng
từ vẫn còn được sử dụng với mục đích
lưu trữ lâu dài, còn để lưu trữ với mục
đích khai thác thường xuyên thì người Hình 2.15. Băng từ và tủ đọc băng từ dành cho
ta không dùng băng từ mà dùng đĩa từ. các máy tính phục vụ lưu trữ cỡ lớn
Chú ý rằng CPU chỉ xử lí trực
tiếp các dữ liệu được lưu trữ ở BNT. Do vậy, trước khi được xử lí, các thông tin ở BNN
cần được truyền vào BNT. Vì vậy BNT còn được gọi là bộ nhớ chính, BNN gọi là bộ nhớ
phụ.
2.3. Các thiết bị vào/ra
Các thiết bị vào/ra (Input/Output Device) dùng để trao đổi dữ liệu giữa môi
trường bên ngoài và MTĐT. Cụ thể hơn, các thiết bị vào có chức năng chuyển dữ liệu từ
bên ngoài vào bộ nhớ trong còn các thiết bị ra dùng để chuyển thông tin từ bộ nhớ trong
của MTĐT đưa ra môi trường ngoài.

2.3.1. Thiết bị vào


Bàn phím
Bàn phím (keyboard) là thiết bị dùng để đưa dữ liệu vào MTĐT trực tiếp, không
qua giá mang tin. Tương tự như trên máy chữ, trên bàn phím có các phím chữ cái, chữ số
và các phím kí tự đặc biệt. Các phím chia thành bốn nhóm sau:

Hình 2.16. Bàn phím


Nhóm phím chữ bao gồm các phím tương tự như phím máy chữ để gõ vào các
chữ, các chữ số, các dấu.
Nhóm phím chức năng để thực hiện nhanh một số yêu cầu nào đó. Thường các
phần mềm tự quy định những thao tác tương ứng với các phím chức năng. Bàn phím của
máy tính PC thường để sẵn 12 phím chức năng.
Nhóm phím điều khiển, xác định một số chức năng đặc biệt như thiết lập các chế
độ khác nhau của bàn phím
Nhóm phím điều khiển con trỏ và soạn thảo. Nhóm này đặc biệt quan trọng vì
khoảng 80-90% thời gian làm việc trên máy là soạn thảo văn bản. Các phím soạn thảo hỗ
trợ những công việc thông thường nhất trong soạn thảo.
Nhóm phím cuối cùng là các phím chữ số.
Khi ta ấn một phím, tín hiệu được truyền cho máy tính thông qua bộ lập mã,
tương ứng với kí tự của phím được ấn đó. Bàn phím là thiết bị
vào thông dụng của các máy tính hiện nay.
Chuột
Con chuột (mouse) cổ điển là một vật nhỏ , mặt dưới có

Hình 2.17. Con chuột


một viên bi lăn được trên mặt phẳng. Khi di chuyển con chuột trên mặt phẳng, chiều và
độ dài lăn được của viên bi được truyền vào máy tính dưới dạng các xung điện. Một
chương trình xử lý các dữ kiện này sẽ tạo ra một ảnh (thường thể hiện dưới dạng mũi tên
hay là một ô chữ nhật gọi là con trỏ màn hình - cursor) trên màn hình. Khoảng cách và
chiều di chuyển của con trỏ trên màn hình cũng tương tự như khoảng cách và chiều di
chuyển của con chuột. Vì vậy ta có thể dùng con chuột để điều khiển con trỏ để chỉ định
các đối tượng làm việc trên màn hình.
Về nguyên tắc, bất cứ thiết bị nào cho phép chuyển thông tin vào bộ nhớ trong
đều gọi là thiết bị vào. Còn nhiều loại thiết bị vào khác như máy quét ảnh (scanner), máy
số hoá ảnh (digitizer), máy ảnh số, bộ đọc mã vạch
(barcode reader) thường dùng ở các siêu thị, thiết bị
nhận dạng tiếng nói...

2.3.2. Thiết bị ra
Các thiết bị cho phép chuyển thông tin từ bộ
nhớ trong ra một giá mang tin khác gọi là thiết bị ra.
Có nhiều thiết bị ra như:

Màn hình

Màn hình(display hoặc monitor) là thiết bị ra,


giống như màn hình của máy thu hình. Mọi chữ hay
ảnh trên màn hình mà ta thấy được đều tạo từ các
điểm ảnh (pixel) thể hiện bởi một chấm nhỏ trên màn
hình. Ngoài các tính năng giống như màn hình của
máy thu hình thông thường cần phải kể đến các tính
năng kỹ thuật có liên quan đến đặc thù của máy tính. Một tính năng quan trọng của màn
hình là độ phân giải (resolution) chỉ mật độ điểm ảnh trên màn hình - đo khả năng thể
hiện tinh tế của màn hình. Một tính năng khác là khả năng thể hiện màu sắc. Thực ra cả
hai tính năng trên không chỉ phụ thuộc vào chính màn hình mà còn phụ thuộc vào thiết bị
điều khiển màn hình (video card). Các màn hình Super VGA thông thường hiện nay cho
độ phân giải tới 768 x 1024 điểm ảnh với từ 28 đến 2 24 sắc độ màu khác nhau. Một tính
năng khác mà hầu hết các màn hình ngày nay đều phải tính đến là khả năng tiết kiệm
năng lượng. Khi ngừng làm việc với máy một thời gian đủ dài, các màn hình có thể tạm
thời ngừng hoạt động để khỏi tiêu hao năng lượng vô ích.
Hình 2.20. Màn hình dùng đèn tia âm cực dùng cho máy tính để bàn (desktop) và màn
hình tinh thể lỏng dùng với máy tính xách tay (laptop)

.
Loại màn hình phổ biến nhất là là đèn tia âm cực (đèn CRT) - chính là loại đèn
hình dùng cho máy thu hình. Các điểm ảnh được tạo bởi các súng bắn điện tử trong đèn
hình có phủ các vật liệu phát quang. Ngày nay người ta còn dùng các màn hình mỏng
dùng công nghệ tinh thể lỏng hay plasma. Các màn hình này thường dùng cho các máy
tính xách tay (notebook) và bắt đầu dùng cho máy để bàn nhưng giá thành còn khá
đắtMáy in
Máy in (printer) là thiết bị cho phép in nội dung thông tin trên giấy: Ta thường
gặp một số laọi máy in sau:
Máy in dòng (Line Printer) có tốc độ in cực nhanh (từ 300 tới 1200 dòng/ phút),
nhờ sử dụng một trống kim loại hay một băng kim loại khảm các con chữ, chuyển động
với tốc độ cao. Loại máy in này không in ảnh được vì các con chữ được tạo hình sẵn từ
trước. Máy in dòng hay dùng ở những nơi cần in nhiều nhưng chỉ in chữ (ví dụ để in hoá
đơn điện, nước, khí đốt hay ở các trung tâm máy tính của các đại học để in chương trình
cho sinh viên...)
Máy in kim (dot printer) là loại máy không dùng bộ chữ tạo dạng sẵn mà sử dụng
một bộ các kim in. ảnh hay chữ được tạo bằng các chấm do kim in đập vaò băng mực in
vào giấy. Như vậy mỗi chữ được thể hiện qua một tổ hợp các điểm tách từ một ma trận
điểm (khung chữ). Vì lý do này máy in kim còn gọi là máy in theo kiểu ma trận ( matrix
printer). Chất lượng của máy in kim có thể đánh giá qua tốc độ in (tính bằng số kí tự in
được trong một giây) và mật độ điểm máy in có thể in được mà ta có thể đánh giá qua số
đầu kim. Tính năng thứ hai naỳ đo độ tinh tế của ảnh và chữ được in ra. Máy in kiểu này
khá rẻ và rất gọn nên hay được dùng phổ biến trong công tác văn phòng. Mặc dù chất
lượng ảnh không thật cao nhưng do in bằng kim nên với việc in những bản in nhiều liên
(như hoá đơn) thì chưa có máy in nào có thể thay được máy in kim.
Máy in laser (Laser Printer). Máy in loại naỳ dùng kỹ thuật laser để tạo ảnh từng
trang một trên một trống tĩnh điện. Đầu tiên
trống được đặt một điện tích âm có điện áp
khoảng – 600 V. Sau đó người ta dùng chùm
laser phối hợp với một chiếc gương quay chiếu
lên trống theo dạng hình ảnh cần tạo để hạ điện
áp những chỗ được chiếu xuống khoảng -100 V.
Mực in (loại toner) được nạp điện áp thích hợp
sẽ bị hút vào những chỗ có điện áp -100 V và tạo
ra một bức ảnh "tĩnh điện" đúng như hình ảnh
cần in. Khi trống áp vào giấy in những hạt mực
sẽ dính trở lại giấy và được nung nóng để các hạt Hình 2.21 Một máy in laser
mực chảy ra thấm vào giấy. Ưu điểm của loại
máy này là chất lượng ảnh rất cao. Ngày nay giá thành của máy in laser đã khá rẻ nên
chúng đã được sử dụng rộng rãi trong văn phòng.
Máy in phun mực (Inkjet Printer), thay vì dùng kim để tạo một điểm, máy này
phun ra một tia mực siêu nhỏ. Công nghệ phổ biến nhất là dùng tinh thể áp điện để làm
bơm mực. Một tinh thể áp điện sẽ co hay giãn tuỳ thuộc vào điện áp đặt vào hai mặt đối
điện của tinh thể. Một nguyên lý khác cũng được dùng là đầu in có các ống phun mực
nhỏ li ti, các ống này có thể làm nóng hầu như tức khắc. Khi ống bị nóng mực bị sôi tạo
thành bong bóng siêu nhỏ bắn vào giấy. Máy in phun có chất lượng ảnh cao lại không ồn.
Giá máy không đắt nhưng thiết bị phun mực nằm ngay trên hộp mực nên giá mực khá
đắt.

Máy chiếu

Máy chiếu l(Projector) à một thiết bị khá


phổ biến hiện nay giúp chiếu màn hình hình của
máy tính lên màn ảnh lớn. Máy chiếu rất hay được
dùng để giảng bài, thuyết trình trong hội thảo với
bài trình bày để sẵn trong máy tính.
Hiện có hai loại máy chiếu phổ biến là
máy chiếu dùng tinh thể lỏng (LCD) và máy chiếu
DLP (Digital Light Processing) dùng vi gương
Máy chiếu dùng màn hình tinh thể lỏng có
nguyên lý làm việc giống như màn hình tinh thể Hình 2.22. Một máy chiếu của Sony
lỏng. Tuy nhiên thay vì dùng đèn công suất thấp
phía sau (back light) chỉ cốt để nhìn được thì máy chiếu dùng nguồn sáng cực mạnh phía
sau để chiếu ảnh lên màn ảnh lớn.
Nguyên lý của DLP được Larry Hombeck (làm việc tại Texas Instrument) phát
minh vào năm 1987, nhưng tới cuối những năm 90 mới thực hiện được nhờ công nghệ
nano. Để tạo nguồn ánh sáng, thiết bị tạo một chùm chớp sáng và dùng gương phản xạ
chiếu lên màn ảnh Gương trong DLP là linh kiện quang bán dẫn gọi là vi gương số
(DMD – Digital Micro-miror Device). Chíp DMD chứa đến hơn 2 triệu vi gương, mỗi cái
chỉ lớn 16 micro mét vuông (nhỏ bằng 1/5 sợi tóc) và xếp cách nhau 1 phần triệu mét. Vi
gương được điều khiển đồng bộ với các điểm ảnh đồ hoạ. Việc quay gương đi một góc
nào đó sẽ giúp gương chiếu tia sáng vào màn ảnh hoặc chiếu tia sáng ra ngoài màn ảnh
gây ra hiệu ứng tạo điểm ảnh hoặc tắt điểm ảnh trên màn ảnh. Gương có thê điều khiển
thay đổi trạng thái tới 5000 lần/giây. Để tạo màu, người ta dùng các lọc màu theo ba màu
cơ bản từ ánh sáng trằng để chiếu vào gương
Một số thiết bị có thể vừa là thiết bị vào vừa là thiết bị ra như:
ƒ Các thiết bị đọc và ghi đĩa.
ƒ Các modem để nối máy tính với nhau theo đường điện thoại. Tín hiệu số của máy
tính qua modem sẽ biến thành tín hiệu tương tự (analog) để gửi theo đường điện
thoại. Khi nhận, modem biến ngược trở lại từ tín hiệu tương tự ra tín hiệu số.

2.4. Kết nối máy tính và mở rộng ngoại vi


Thường số thiết bị ngoại vi của một máy tính không cố định. Một số thiết bị như
bàn phím, màn hình, chuột thường có ở mọi máy tính. Một số thiết bị có thể bổ sung cắm
trực tiếp vào các cổng sẵn có. Thường các máy tính có sẵn một số cổng như cổng nối tiếp
(ví dụ để cắm chuột hay modem), cổng song song để cắm máy tin, cổng USB... Một cách
mở rộng ngoại vi khác hoặc tạo các kênh giao tiếp với máy tính khác là sử dụng các bảng
mạch (card) mở rộng. Có rất nhiều loại bản mạch mở rộng :

a b

Hình 2.23. (a) Slot để căm các card mở rộng (b) Card video

ƒ Bản mạch âm thanh (sound card) cho phép nối máy tính với loa, với microphone
ƒ Bản mạch giao tiếp mạng (Network Interface Card) dùng để liên kế các máy tính
thành mạng.
ƒ Bản mạch modem-fax dùng để nối máy tính với đường dây điện thoại để có thể
truyền, nhận dữ liệu hay các bản tin fax qua đường điện thoại hoặc kết nối với
Internet qua đường điện thoại.
ƒ Bản mạch video cung cấp cho màn hình khả năng thể hiện tốt hơn.
ƒ Bản mạch TV cho phép có thể xem các chương trình truyền hình trên máy tính
Trong máy tính thường có các khe cắm để sẵn gọi là các slot. Để dùng các bản
mạch mở rộng chỉ cần cắm và các khe đó và nạp các chương trình điều khiển cần thiết
MODULE 3. NGUYÊN LÝ LÀM VIỆC CỦA MÁY TÍNH
ĐIỆN TỬ

3.1. Bộ xử lí
(CPU - Central Processing Unit )
CPU có chức năng điều khiển máy tính và xử lý thông tin theo chương trình đã
được lưu trữ trong bộ nhớ. CPU gồm các thành phần:
ƒ Đồng hồ (clock) tạo các
xung điện áp chính xác, đều
đặn để sinh ra các tín hiệu cơ
bản để điều chế thông tin và
đồng bộ hoá các thành phần
khác của máy tính.
ƒ Các thanh ghi (registers).
Ngoài bộ nhớ trong, CPU
còn dùng các thanh ghi như
là những bộ nhớ nhanh,
chuyên dụng dùng trong khi
thực hiện các lệnh. Các
thanh ghi thường được dùng
để ghi các lệnh đang được
thực hiện, lưu trữ các dữ liệu Hình 3.1. Một CPU của máy tính lớn IBM và bên
phuc phục vụ cho các lệnh, dưới là CPU của Intel dùng cho các máy vi tính
các kết quả trung gian, các
địa chỉ, các thông tin dùng đến trong quá trình thực hiện một lệnh.
ƒ Khối số học và logic (ALU: arithmetic and logic unit) là khối chức năng thực hiện
các phép toán cơ sở của máy như các phép toán số học, các phép toán logic, phép
tạo mã v.v. ALU bao gồm những mạch chức năng để thực hiện các phép toán đó.
ƒ Khối điều khiển (CU: control unit) là khối chức năng điều khiển sự hoạt động của
MTĐT theo chương trình định sẵn.
Nhờ công nghệ vi mạch, người ta có khả năng chế tạo toàn bộ bộ xử lý trong một
chíp (một mạch vi điện tử được đóng trong một vỏ duy nhất). Những bộ xử lý như vậy
gọi là bộ vi xử lý (micro processor ) viết tắt là µP.
Hình 3.2. Một bảng mạch chủ của máy vi tính. trong đó có CPU, bộ nhớ và các
mạch giao tiếp với ngoại vi. Trong hình trên ta thấy một quạt điện nhỏ để làm
nguội CPU, phía dưới quạt chính là CPU

3.2. Quá trình thực hiện lệnh


Để hiểu rõ quá trình này ta cần tìm hiểu thêm về lệnh máy. Mỗi lệnh máy là một
yêu cầu ALU thực hiện một phép tính cơ sở (cộng, nhân, nhân logic, cộng logic, chọn
lệnh cần thực hiện v. v). Các lệnh này phải chỉ ra đầy đủ các thông tin sau:
ƒ Phép tính cần thực hiện. Trong lệnh máy nó cho bằng một số bit gọi là mã phép
tính.
ƒ Nơi đặt dữ liệu của lệnh. Thông tin này có thể là điạ chỉ trong BNT hoặc là mã
thanh ghi.
ƒ Các thông tin liên quan đến kết quả thực hiện chẳng hạn địa chỉ của nơi để kết
quả của phép toán.
Như vậy một lệnh có cấu trúc như sau:

Mã lệnh Các thành phần địa chỉ


Một chương trình máy là một dãy các lệnh. Do chương trình cũng nằm trong bộ
nhớ nên chính các lệnh cũng có địa chỉ, đó chính là địa chỉ byte đầu tiên của lệnh.
Quá trình thực hiện một chương trình là một quá trình thực hiện liên tiếp từng
lệnh. Để quản lý thứ tự thực hiện các lệnh, CU sử dụng một thanh ghi gọi là thanh đếm
địa chỉ (Program Counter - PC) ghi địa chỉ của lệnh sẽ thực hiện tiếp theo. Giá trị khởi
tạo của PC là địa chỉ lệnh đầu tiên chương trình.
MTĐT được điều khiển bởi các lệnh của chương trình. Chu kỳ thực hiện một lệnh
bao gồm các bước sau:
ƒ Đọc lệnh. Trong chu kì đọc lệnh, CU gửi nội dung PC vào bộ giải mã địa chỉ để
đọc byte đầu tiên của lệnh lên một thanh ghi khác là thanh ghi lệnh. PC sẽ tăng
lên một đơn vị để CU đọc byte tiếp theo. Độ dài các lệnh có thể khác nhau nhưng
byte đầu tiên thường là nơi chứa mã lệnh.
ƒ Giải mã lệnh. CU căn cứ vào mã lệnh để đọc nốt các thông tin địa chỉ của lệnh và
hoàn thành việc đọc lệnh, PC tiếp tục tăng theo số lượng byte đã đọc vào.
ƒ Đọc dữ liệu. Các địa chỉ dữ liệu được gửi vào bộ giải mã địa chỉ để đọc nội dung
các đối tượng của lệnh gọi là các tóan hạng (operand) vào các thanh ghi dũ liệu.
ƒ Thực hiện lệnh. Phát tín hiệu điều khiển cho mạch chức năng của ALU thực hiện
phép toán mà mã lệnh xác định. Sau đó quay lại chu kì đọc lệnh với nội dung mới
của PC. Chú ý rằng nếu lệnh thực hiện là lệnh điều khiển thì giai đoạn thực hiện
này sẽ đặt địa chỉ lệnh sẽ thực hiện tiếp theo vào PC.
Như vậy để thực hiện một lệnh nói chung phải đọc/ghi bộ nhớ nhiều lần.
Có hai phương pháp tổ chức điều khiển:
ƒ Phương pháp điều khiển cứng. Ứng với mỗi lệnh máy có một mạch địên thực hiện
lệnh đã cho theo các tín hiệu điều khiển.
ƒ Phương pháp điều khiển vi chương trình. Mỗi lệnh được thực hiện thông qua các
lệnh sơ cấp hơn gọi là các vi lệnh. Khi đó người ta chỉ phải thiết kế phần cứng ở
mức vi lệnh. Ví dụ, phép đọc một byte trong bộ nhớ có thể lấy làm một vi lệnh.
Như vậy, một phép tính có thể thực hiện bằng cách thi hành một dãy vi lệnh gọi là
vi chương trình. Do đó, khi thay đổi lệnh chỉ cần thay đổi vi chương trình tương
ứng mà không cần thay đổi cấu trúc vật lí của MTĐT.
Các CPU ngày nay không thực hiện lệnh theo kiểu tuần tự như trên mà thường
thực hiện song song nhiều quá trình. Thông tin nạp từ bộ nhớ có thể là cả một khối lên
một khối thanh ghi. Một số CPU có cả cơ chế xử lý thông minh để dự đoán các khối
chương trình hay dữ liệu sắp dùng đến để tải trước lên thanh ghi. Trong khi đang thực
hiện lệnh thứ nhất thì một thành phần khác giải mã lệnh thứ hai và một thành phần khác
tải lệnh thứ 3 lên thanh ghi. Cách thức xử lý này gọi là pipeline. Nhờ phương thức này
mà nhiều bộ xử lý có thể thực hiện nhiều lệnh đồng thời.

3.3. Nguyên lý Von Neumann


Kiến trúc máy tính nêu trên được J. Von Neumann mô tả nên cũng gọi là kiến trúc
Von Neumann. Đi kèm với kiến trúc này là nguyên lý hoạt động cũng tên là Von
Neumann. Nội dung nguyên lí gồm hai điểm sau:
Nguyên lý điều khiển bằng chương trình. Máy tính hoạt động theo chương trình
lưu trữ sẵn trong bộ nhớ của nó. Nguyên lý này đảm bảo cho máy tính có khả năng tự
điều khiển không cần có sự can thiệp của người trong quá trình xử lý vì quá trình xử lý đã
được xác định qua một kịch bản.
Nguyên lý truy cập theo địa chỉ. Như đã biết, dữ liệu theo nghĩa rộng (dữ liệu ban
đầu, kết quả trung gian, kết quả cuối cùng, chương trình...) được đưa vào bộ nhớ trong
những vùng nhớ được chỉ định bằng địa chỉ. Trong chương trình, dữ liệu được chỉ định
thông qua địa chỉ. Như vậy, việc truy cập tới dữ liệu là gián tiếp thông qua địa chỉ của nó
trong bộ nhớ. Nguyên lý này đảm bảo tính mềm dẻo trong xử lý thông tin. Người lập
trình có thể viết yêu cầu một cách tổng quát theo vị trí các đối tượng đó nằm ở đâu mà
không cần biết giá trị cụ thể của chúng.
MODULE 4. CÁC HỆ ĐẾM DÙNG TRONG TIN HỌC

4.1. Hệ đếm
Để có cơ sở hình dung quá trình xử lí thông tin xảy ra bên trong MTĐT như thế
nào, chúng ta cần có một số kiến thức về hệ đếm nhị phân. Hệ đếm được hiểu như tập các
kí hiệu và quy tắc sử dụng tập kí hiệu đó để biểu diễn và xác định giá trị các số.
Xét ví dụ về hệ đếm La mã
Hệ đếm La mã sử dụng các kí hiệu I, V, X, L, C, D, M. Mỗi kí hiệu của hệ đếm
La mã biểu thị một giá trị :
I = 1 ; V = 5 ; X = 10 L = 50 ;C = 100 ; D = 500 ; M = 1000
Dưới đây là một số quy tắc tính giá trị được dùng trong hệ đếm La mã:
ƒ Nếu các kí hiệu được xếp từ trái qua phải theo chiều giảm giá trị thì giá trị của
biểu diễn số tính bằng tổng giá trị các kí hiệu. Ví dụ MLVI cho giá trị là
1000+50+5+1 = 1056.
ƒ Nếu trong biểu diễn số tính từ trái qua phải có một cặp hai kí hiệu mà kí hiệu
đứng trước có giá trị nhỏ hơn thi giá trị của cặp đó tĩnh bằng hiệu hai giá trị.
Không chập nhận các bộ có nhiều hơn hai kí hiệu liên tiếp xếp theo chiều tăng của
giá trị. Ví dụ CIX thể hiện số 109. Biểu diễn IXC không hợp lệ vì nó sẽ gây nhập
nhằng không đơn nghĩa với quy tắc tính giá trị.
Như vậy, mỗi kí hiệu đại diện cho một giá trị duy nhất và không phụ thuộc vào vị
trí của nó xuất hiện ở đâu trong biểu diễn. Hệ đếm loại này gọi là hệ đếm không theo vị
trí.
Chúng ta thường sử dụng hệ đếm thập phân. Hệ thập phân dùng là mười ký hiệu
là các chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Trong hệ đếm này giá trị của mỗi chữ số phụ thuộc
vào vị trí của nó trong biểu diễn. Ví dụ, trong số 545, chữ số 5 ở hàng đơn vị chỉ 5 đơn vị
trong khi đí chữ số 5 ở hàng trăm chỉ 500 đơn vị. Hệ đếm mà giá trị của các kí hiệu trong
biểu diễn số phụ thuộc vào vị trí được gọi là hệ đếm theo vị trí.
Số lượng các chữ số được sử dụng (10 chữ số) gọi là cơ số của hệ đếm. Quy tắc
tính giá trị là mỗi đơn vị ở một hàng bất kỳ có giá trị bằng 10 đơn vị của hàng kế cận bên
phải. Do đó, giá trị của một biểu diễn có thể viết dưới dạng một đa thức của cơ số.
Ví dụ. 536,4 = 5.10 2 + 3.10 1 + 6.10 0 + 4.10 -1
Hệ đếm thập phân chỉ là một trường hợp riêng khi chọn cơ số là 10. Thực ra, bất
kì một số tự nhiên b nào lớn hơn 1 đều có thể chọn làm cơ số cho hệ đếm. Các kí hiệu
được dùng cho hệ đếm đó sẽ là ký hiệu đại diện cho các giá trị: 0, 1..., b-1. Nếu một số N
trong hệ đếm cơ số b nếu có biễu diễn là :
N = dnd n-1 d n-2... d 1 d 0, d -1 d -2... d -m
thì giá trị của N được tính theo công thức :
N = dn bn + dn-1 bn-1 +...+ d0 b0 + d-1 b-1 +... + d-m b-m
Ở đây các di thỏa mãn điều kiện 0 ≤ di < b còn n là số lượng các chữ số bên trái,
và m là số lượng các chữ số bên phải dấu phân chia phần nguyên và phần lẻ của số N. Có
thể chứng minh được rằng với mỗi số tự nhiên N có và có duy nhất một cách biểu diễn N
dưới dạng đa thức theo luỹ thừa của b.
Ví dụ số 17 trong hệ đếm cơ số 3 có biểu diễn là 122 vì
17 = 1.32 + 2.31+ 2.30
Trong tin học người ta thường dùng một số hệ đếm sau đây:
ƒ Hệ đếm nhị phân là hệ đếm cơ số 2 với hai chữ số là 0 và chữ số 1
ƒ Hệ đếm cơ số mười sáu còn gọi là hệ Hexa. Hệ Hexa sử dụng các kí hiệu : 0, 1,
2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D,E, F.
Trong các trường hợp cần thiết, để phân biệt số được biểu diễn ở hệ đếm nào
người ta viết cơ số làm chỉ số cho số đó. Ví dụ. 1012, 516.
Sau đây là 16 số nguyên đầu tiên ở các hệ đếm 10, 2 và 16
Bảng 4.1. Biểu diễn của các số từ 0 tới 15 trong các hệ nhị phân và 16

Thập phân Nhị phân Hệ16 Thập phân Nhị phân Hệ16
0 0 0 8 1000 8
1 1 1 9 1001 9
2 10 2 10 1010 A
3 11 3 11 1011 B
4 100 4 12 1100 C
5 101 5 13 1101 D
6 110 6 14 1110 E
7 111 7 15 1111 F

4.2. Tìm biểu diễn số

4.2.1. Biến đổi số ở hệ đếm bất kỳ sang hệ đếm thập phân


Cho số N trong hệ đếm cơ số b :
N = (d n d n-1 d n-2... d 1 d 0, d -1 d -2... d -m)b
Trước hết xét trường hợp N là nguyên. Để tìm biểu diễn của số nguyên N trong hệ
đếm thập phân, ta tiến hành các bước sau:
- Viết N dưới dạng đa thức của cơ số b :
N = dn bn + dn-1 bn-1 + dn-2 bn-2 +...+ d0
rồi tính giá trị của đa thức này. Để giảm số lượng phép tính khi tính giá trị của đa
thức tốt hơn hết là tính theo sơ đồ Horner
N = d0 + b(d1 + b(d2 + b(d3 +...bdn )))...)
Trong trường hợp số có phần lẻ thì sơ đồ Horner mất hiệu lực, ta phải đổi phần lẻ
riêng rồi cộng lại. Ví dụ
1110,1012 = ?10. Thực hiện theo sơ đồ trên, ta có:
11102 = 0 + 2(1+2(1+2.1))) = 14
Còn phần lẻ 0,101 2 = 1.2-1 + 1.2-3 = 0.5 + 0.125 = 0.635
Vậy 1110,1012 = 14.62510
Một ví dụ khác.
D3F,4 16 = ?10. Cũng thực hiện như trên, ta có:
D3F 16 = F + 16(3 + 16.D)
= 15 + 16(3 + 16.13)
= 3391
Còn phần lẻ 0,4 chính là 4.16-1
= 3328 + 48 + 15 + 0,25 = 3391,25
Vậy, D3F,416 = 3391,2510

4.2.2. Biến đổi số ở hệ đếm thập phân sang hệ đếm có cơ số bất kì


Trước hết ta tách phần nguyên và phần lẻ rồi tiến hành biến đổi chúng riêng biệt.
Sau đó chúng ta sẽ ghép lại để có kết quả cần tìm.
Biến đổi số nguyên
Cho N là số tự nhiên. Ta viết N duới dạng da thức:
N = dn bn + dn-1 bn-1 +...+ d0
Nhận xét rằng, 0≤ d0 < b. Do vậy, khi chia N cho b thì phần dư của phép chia đó
là d0 còn thương số N1 sẽ là:
N1 = dn bn-1 + dn-1 bn-2 +...+ d1 (2).
Tương tự, d1 chính là phần dư của phép chia N1 cho b. Gọi N2 là thương của
phép chia ấy. Quá trình chia như vậy được thực hiện liên tiếp và ta sẽ lần lượt nhận đựơc
giá trị các di. Quá trình sẽ dừng lại khi nhận được thương số bằng 0. Để có biểu diễn cần
tìm, các phần dư thu được cần sắp xếp theo thứ tự ngược lại.
Ví dụ. 52 10 = ? 2 = ? 16. Sơ đồ chia liên tiếp dưới đây minh hoạ quá trình thực
hiện theo thuật toán nói trên.

Bảng 4.2. Đổi phần nguyên một số hệ 10 sang hệ 2 và sang hệ 16


52 2
0 26 2
52 16
0 13 2
4 3 16
1 6 2
3 0
0 3 2
1 1 2
1 0

Như vậy 52 10 = 110100 2= 34 16


Biến đổi phần lẻ
Kí hiệu N’ là phần lẻ (phần sau dấu phẩy thập phân) của số N. Giả sử N’ được
biểu diễn dưới dạng đa thức của cơ số b như sau:
N’ = d-1 b -1 + d-2 b-2 +... d-m b-m (1')
Nhân hai vế của (1') với b, ta thu được:
N1’ = d-1 + d-2 b-1 +... d-m b-(m -1)
Ta nhận thấy, d-1 chính là phần nguyên của kết quả phép nhân. Còn phần lẻ của
kết quả là:
N'2 = d-2 b-1 +... d-m b-(m -1) (2')
Lặp lại phép nhân như trên đối với (2'), ta thu được d-2 là phần nguyên. Thực hiện
liên tiếp phép nhân theo cách trên, cuối cùng thu được dãy d-1 d-2 d-3...d-m: trong đó 0 ≤d-1
< b. Đó chính là giá trị của các chữ số trong biểu diễn cần tìm.
Ví dụ. 0,67875 10 = ?2
Quá trình thực hiện được thể hiện như bảng dưới đây (nhân đôi cột bên phải để
đẩy phần nguyên về cột số 1:

Bảng 4.3. Đổi một số lẻ sang hệ đếm cơ số 2

Phần nguyên Phần lẻ


67875
x2=
1 2575
x2=
0 515
x2=
1 03
x2=
0 06
x2=
0 12
x2=
0 24
x2=
0 48
x2=
0 96
x2=
1 92 ...............

Vậy 0,67875 10 = 0,101000001... 2


Ví dụ. 0,843510 = ?16
Các bước tìm kết quả được thể hiện ở bảng dưới đây:
Bảng 4.4. Đổi một số lẻ sang hệ đếm cơ số 16

Phần nguyên Phần lẻ


8435
x 16=
13 496
x 16=
7 936
x 16=
14 976
x 16=
15 616 ..........

Lưu ý rằng trong hệ đếm cơ số 16 thì 13 thể hiện bằng chữ số D, 14 bằng E và 15
bằng F. Vậy 0,843510 = 0.D7EF16
Quá trình trên trong một số trường hợp có thể kéo dài vô hạn. Tùy yêu cầu về độ
chính xác cần thiết mà quyết định cần dừng ở bước nào. Như vậy kết quả của việc đổi
một số có một số hữu hạn chữ số lẻ trong hệ đếm cơ số này có thể cho ra một số có vô
hạn (tuần hoàn) chữ số lẻ trong hệ đếm cơ số khác.

4.2.3. Biến đổi số biểu diễn trong các hệ đếm đặc biệt
Về nguyên tắc có thể đổi bất cứ một biểu diễn số trong hệ đếm cơ số b1 bất kỳ
sang một biểu diễn số trong một hệ đếm cơ số b2 bất kỳ khác. Điều rắc rối là ở chỗ ta
phải nhớ được bảng nhân và bảng chia trong số học của các số biểu diễn trong cơ số b1
hoặc b2. Nếu không biết được bảng nhân và chia thì có thể ta phải đổi hai lần thông qua
một hệ đếm trung gian mà ta đã biết bảng nhân và chia như hệ thập phân chẳng hạn. Khi
đó để đổi một số x trong một hệ đếm cơ số b1 sang hệ đếm của cơ số b2 ta có thể đổi x
thành biểu diễn trong hệ thập phân rồi từ đó tìm biểu diễn của chúng trong hệ đếm cơ số
b2.
Trong một số trường hợp đặc biệt khi b1 và b2 là luỹ thừa của nhau thì có thể đổi
một cách trực tiếp một cách dễ dàng. Nếu b1 = b2 k thì trong hệ đếm cơ số b2, b1 sẽ có
biểu diễn là 100...00 với k chữ số 0. Việc chia hay nhân một số với 100...00 thực chất là
tách từng nhóm k chữ số. Ví dụ có số 932452356 mà ta phải chia và tách phần dư liên
tiếp với số chia là 100 thì kết quả sẽ là các nhóm số.

| | | |
9 32 45 23 56
Ta áp dụng nhận xét này để đổi biểu diễn số giữa hệ đếm cơ số 2 và cơ số 16 là
hai hệ đếm thường dùng trong tin học. Trong trường hợp này 16 = 24.
Biến đổi số của hệ đếm nhị phân và hệ đếm cơ số 16
Quy tắc thực hành sau để đổi biểu diễn từ hệ nhị phân sang hệ 16 như sau:
Gộp các chữ số nhị phân thành từng nhóm bốn chữ số về hai phía kể từ vị trí phân
cách phần nguyên và phần lẻ.
Thay mỗi nhóm 4 chữ số nhị phân bởi một chữ số tương ứng ở hệ đếm 16.
Ví dụ. 1011100101,112. Ta gộp thành từng nhóm bốn chữ số nhị phân:
0010 1110 0101,1100 2
Thay tương ứng mỗi nhóm tương ứng bằng một chữ số hệ 16 (xem bảng tương
ứng giữa các số hệ 2 hệ 10 và hệ 16 ở trên)
2 E 5, C 16
Từ đó, 1011100101.112 = 2E5,C16
Để đổi ngược lại, số ở hệ 16 sang số ở hệ nhị phân ta chỉ cần thay từng chữ số ở
hệ 16 thành nhóm 4 chữ số tương ứng ở hệ nhị phân.
Ví dụ. 3,D7EF16= 11.1101 0111 1110 11112

4.3. Số học nhị phân


Tương tự như số học thập phân, số học nhị phân cũng bao gồm 4 phép toán cơ bản
: cộng, trừ, nhân, chia. Cách thực hiện các phép toán đó là tương tự như các
phương pháp đã biết đối với số thập phân. Sau đây là bảng cộng và nhân các số 1
bit
Bảng 4.5. Bảng cộng và nhân trong hệ nhị phân
x y x+ y x.y
0 0 0 0
0 1 1 0
1 0 1 0
1 1 10 1
Bảng 4.6. cộng và nhân trong hệ đếm nhị phân
Phép cộng Phép trừ
110011010 1010100011
+ 11001001 - 11001001
= 1001100011 = 111011010

Phép nhân trong hệ nhị phân rất đơn giản vì khi nhân với môĩ hàng của số nhân ta
chỉ phải nhân với 1 hoặc 0, có nghĩa là sao lại số bị nhân hoặc dịch trái một vị trị.
Phép chia cũng đơn giản vì khi ước lượng các chữ số ở thương ta chỉ phải chọn 1
trong 2 khả năng là 0 và 1
Bảng 4.7. Nhân và chia trong hệ đếm nhị phân
Phép nhân Phép chia
1101 10000’01 1101
x 101 -1101 101
1101 00011 0
+ 0000 00011 01
1101 - 11 01
= 1000001 00000 00
MODULE 5. ĐẠI SỐ LOGIC VÀ ỨNG DỤNG TRONG
THIẾT KẾ MẠCH LOGIC

Người đặt nền móng cho ngành toán học này là D.Boole (1815 - 1864). Do vậy đại số
logic còn có tên gọi là đại số Boole. Đại số logic có nhiều ứng dụng. Ở đây, chúng ta
quan tâm đến các khía cạnh liên quan đến thiết kế các mạch logic bên trong MTĐT. Như
đã thấy, kết quả thực hiện các phép toán số học với các số nhị phân là một số nhị phân
mới. Do vậy, ta có thể hình dung thiết bị thực hiện các phép
toán trong MTĐT như là thành phần chức năng biến đổi nhị
phân. Thiết bị đặc biệt đó cho phép nạp số liệu dạng nhị phân
ở đầu vào và lấy kết quả có dạng nhị phân ở đầu ra. Vậy có
thể xem bộ biến đổi chức năng đó như là một thiết bị có nhiều
đầu vào và nhiều đầu ra. Tại một thời điểm xác định, ở mỗi
đầu vào chỉ nạp được một bit và từ mỗi đầu ra chỉ cho ra được
một bit dữ liệu. Để hiểu rõ hơn về nguyên lý xây dựng các bộ
biến đổi nhị phân ta sẽ tìm hiểu một số vấn đề có liên quan
dưới đây.
Hình 5.1. D. Boole
5.1. Các hàm đại số logic
Xét tập D = { 0, 1}. Các giá trị của tập D còn gọi là giá trị logic hay nhị phân. Đại lượng
x chỉ có thể nhận giá trị trong tập D gọi là biến boole (hay biến logic, biến nhị phân).
Hàm của n biến nhị phân F(x1,x2...xn) chỉ nhận hai giá trị 0 và 1 gọi là hàm Boole (hoặc
hàm logic). Mỗi hàm boole n biến có thể cho bằng một bảng có n+1 cột. n cột đầu là giá
trị của các biến x1,x2...xn tương ứng. Cột cuối cùng là giá trị của hàm ứng với các giá trị
của biến. Ví dụ:

Bảng 5.2. Cho một hàm bằng bảng giá trị.

x1 x2 f(x1,x2)
0 0 1
0 1 0
1 0 0
1 1 1
Dễ dàng thấy, với mỗi n có đúng 2n cách tổ hợp khác nhau giá trị các biến x1,x2...xn,. Một
hàm boole là một cách tương ứng mỗi một trong số 2n với 1 trong 2 giá trị 0 và 1. Vì thế
nó sẽ tương ứng với một cách phân hoạch tập 2n bộ giá trị này thành 2 nhóm, một nhóm
làm hàm có giá trị 1, một nhóm làm hàm có giá trị 0. Như vậy mọi hàm boole n biến
hoàn toàn được xác định bởi một tập con trong 2n bộ giá trị để giá trị của hàm là 1. Ta đã
biết đối với một tập có k phần tử thì tập tất cả các tập con của nó sẽ có 2k phần tử. Do vậy
n
có đúng 22 hàm boole n biến.
Với n = 1, có 4 hàm nhị phân. Các hàm đó được cho trong bảng dưới đây
Bảng 5.3. Các hàm đại số logic một ngôi

x F1 F2 F3 F4
0 0 1 0 1
1 0 1 1 0

Hàm F1 và F2 là hàm hằng (không phụ thuộc vào đối số x),


F1(x) ≡0 đây là hàm hằng 0
F2(x) ≡ 1 đây là hàm hằng 1
Giá trị F3(x) luôn bằng giá trị biến x, đó là hàm đồng nhất. F3(x) ≡ x
Hàm F4(x) luôn có giá trị ngược lại với giá trị biến x mà ta gọi là hàm phủ định. Hàm này
được kí hiệu bởi ⎤. ⎤ x được gọi là phủ định của x. Ta có ⎤ ⎤ x = x
Dấu ⎤ có thể xem là dấu phép toán một ngôi, cho phép từ giá trị x xác định giá trị ⎤ x.
Phép toán đó cũng có tên là phép phủ định. (Một số tài liệu dùng dấu - trên đầu đối tượng
bị phủ định thay cho dấu ⎤ đứng trước đối tượng).
Với n = 2, có 16 hàm logic. Giá trị của các hàm được cho ở bảng sau:

Bảng 5.4. Các hàm đại số logic hai ngôi


F10
F11
F12
F13
F14
F15
F16
x y
F1
F2
F3
F4
F5
F6
F7
F8
F9

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
Ta xét một vài hàm quan trọng.
F2(x, y) có giá trị 1 khi và chỉ khi x, y đồng thời có giá trị 1. Hàm này được kí hiệu là ( x
∧ y) và còn gọi là phép nhân logic hay phép hội.
F7(x, y) có giá trị 1 khi và chỉ khi x, y khác nhau. Hàm này chính là chữ số hàng đơn vị
khi cộng số học x với y. Vì vậy nếu có nhớ sang hàng bên trái thì giá trị đó cũng bỏ đi.
Chính vì vậy F7 còn gọi là phép cộng theo mô đun 2.
F8(x,y) có giá trị 0 khi và chỉ khi x, y đồng thời có giá trị 0. Hàm F8(x,y) được kí hiệu (x
∨ y) và còn gọi là phép cộng logic hay phép tuyển.
F10(x,y) có giá trị 1 khi và chỉ khi x, y có cùng giá trị như nhau, hoặc 0 hoặc 1. Hàm
F10(x,y) có kí hiệu (x ∼y) và còn gọi là phép tương đương
F14(x,y) có giá trị 0 khi và chỉ khi x có giá trị 1 đồng thời y có giá trị 0. Hàm F14(x,y)
được kí hiệu (x ⇒y) và còn gọi là phép kéo theo.
5.2. Biều diễn các hàm đại số logic
Một hàm đại số logic cũng có thể được xác định thông qua các hàm đại số lôgic khác. Ví
dụ hàm F7(x,y) trong bảng trên có thể cho bằng công thức sau:
( x ∧ ⎤ y ) ∨ (⎤ x ∧ y )
Hai công thức sau gọi là công thức đối ngẫu De Morgan (tương tự như trong lý thuyết tập
hợp).
⎤ (x ∧ y) =(⎤ x) ∨ ( ⎤ y), ⎤ ( x V y) = (⎤ x) ∧ (⎤ y)
Các công thức này cho thấy có thể biểu diễn phép cộng qua phép nhân và phép phủ định
(và ngược lại). Chẳng hạn x V y = ⎤ (⎤ x) ∧ (⎤ y)
Sau đây là hai công thức khác
(x ⇒ y) = ⎤ x ∨ y, ( x ∼ y) = (x ∨ ⎤ y) ∧⎤ (y ∨ x)
Có nhiều cách chứng minh một đẳng thức logic trong đó có một cách chứng minh rất đơn
giản là so sánh giá trị của hai vế với tất cả bộ đối số cụ thể. Vì chỉ có một số hữu hạn các
bộ đối số nên chúng ta có thể kể ra tất cả các trường hợp trong một bảng giá trị. Chẳng
hạn để chứng minh công thức của hàm F7 nói trên ta có thể lập một bảng và so sánh giá
trị của hai vế ứng với mỗi bộ giá trị của các đối như sau:

Bảng 5.5. Có thể chứng minh các đẳng thức bằng bảng đối sánh giá trị

X y ⎤x∧y x∧⎤y (⎤ x ∧ y) ∨ (x ∧⎤ y) F7(x,y)


0 0 0 0 0 0
0 1 0 1 1 1
1 0 0 1 1 1
1 1 0 0 0 0

Qua các ví dụ trên ta thấy rằng các hàm đại số lôgic này có thể biểu diễn qua các hàm đại
số logic khác. Một tập hợp hữu hạn các hàm đại số logic được gọi là một hệ hàm đủ nếu
mọi hàm đại số lôgic khác đều có thể biểu diễn được qua hệ hàm này. Có thể chứng minh
không khó khăn lắm rằng hệ hai hàm phủ định và cộng logic là hệ hàm đủ. Do công thức
đối ngẫu De Morgan ta thấy hệ hai hàm phủ định và nhân lôgic cũng là hệ hàm đủ. (Bạn
đọc có thể tìm hiểu cách chứng minh các giáo trình về logic toán phần trong dạng chuẩn
tuyển và chuẩn hội hoặc tự chứng minh như bài tập số 2 đề nghị )

5.3. Áp dụng đại số logic trong việc thiết kế các mạch logic
Ta sẽ biết, MTĐT biểu diễn thông tin bằng các trạng thái của các thành phần vật lý, thông
thường các thành phần này có hai trạng thái đối lập như một mạch điện đóng hoặc mở,
chiều của từ trường một vùng vật liệu từ nhiễm từ theo chiều 4này hoặc chiều kia... Nếu
dùng trạng thái này chỉ giá trị 1 và trạng thái kia chỉ giá trị 0 thì ta thấy rằng MTĐT là
một máy làm việc trên hệ nhị phân. Mọi phép xử lý máy có thể thực hiện được thực chất
là các hàm đại số logic. Các hệ vật lí thực hiện các hàm đại số lô gic gọi là các mạch
logic.
Ta minh họa một số mạch logic đơn giản dùng
các công tắc ngắt hoặc đóng mạch có điều R
khiển (gọi là các rơ le) với quy ước rằng trạng K1 K2
thái có điện thể hiện giá trị logic 1, trạng thái
không có điện thể hiện giá trị logic 0.

Phần tử AND
Hình 5.6. Sơ đồ phần tử AND
Cho mạch điện có hai rơ-le K1, K2 mắc nối
tiếp như hình vẽ. Chỉ khi có dòng điện điều
khiển để đóng K1 và K2 thì mới có dòng điện
K1
qua R. Vì vậy với cách quan niệm như trên R R
= K1∧K2
K2
Phần tử OR

Cho mạch điện cũng có hai rơ-le K1, K2 với


tính chất như vừa xét, nhưng được mắc song
song theo sơ đồ: Hình 5.7. Sơ đồ phần tử OR
Dễ nhận thấy R không có dòng điện (thể hiện
giá trị 0 ) khi và chỉ khi K1 và K2 đồng thời
ngắt mạch (thể hiện giá trị 0). Do đó, giá trị
K1
logic R thể hiện là tổng logic của các giá trị
của K1 và K2 thể hiện. R

Phần tử NOT

Xét mạch điện có sơ đồ như hình vẽ dưới đây.


Khi K mở, dòng điện phải đi qua R, còn khi K Hình 5.8. Sơ đồ phần tử NOT
đóng, do điện trở của K vô cùng bé so với R
nên dòng điện đi qua K mà không đi qua R.
Do vậy, giá trị logic R thể hiện là phủ định giá trị mà K thể hiện.
Trên thực tế các mạch logic thường được chế tạo từ các mạch bán dẫn hoặc các mạch vi
điện tử với kích thước siêu nhỏ. Người ta cũng chế tạo những mạch (phần tử) OR, AND,
NOT, NAND (NOT AND), NOR (NOT OR), XOR và cả những mạch có chức năng
phức tạp thực hiện các xử lý phức tạp hơn. Các hệ này gọi là các hệ logic. Như vậy có thể
hình dung các hệ logic như những hộp đen (mà ta không quan tâm đến cấu trúc bên
trong) có một số đầu vào và ra.
Các tín hiệu ở đầu vào và đầu ra là các tín hiệu nhị phân (tương ứng với một trong hai
trạng thái vật lí). Ta đã biết hệ hàm phủ định, tuyển và hội là một hệ hàm đủ. Như vậy về
mặt nguyên tắc có thể chồng chất các phần tử NOT và OR và AND để tạo nên bất cứ một
máy thực hiện các phép biến đổi nhị phân nào. Ví dụ sau đây minh họa việc lập mạch
cộng hai bít.
Bộ cộng 2 bít
Phép cộng hai số một bít a và b có thể cho ra một số có a b
hai bít là cd. Bít c chỉ bằng 1 khi và chỉ khi a, b đồng
thời bằng 1 (ứng với trường hợp 1 + 1 = 10). Do đó c =
a ∧ b. Còn d, như đã trình bày trước đây, chính là tổng
theo mô đun 2 của a và b có biểu diễn qua các hàm
cộng, nhân và phủ định logic như sau
d = ( a ∧ ⎤ b ) ∨ (⎤ a ∧ b )
Vậy sơ đồ mạch logic của phép cộng hai bit có thể xây
dựng như trong hình 16.
Trên đây là một ví dụ đơn giản cho thấy người ta có thể
xây dựng các mạch thực hiện các chức năng xử lý như
thế nào. Đương nhiên mạch của một bộ xử lý có thể
thực hiện được hàng trăm loại phép tính và hàng trăm
chức năng điều khiển sẽ rất phức tạp. Bộ vi xử lý
Itanium của Intel xuất xưởng trong năm 2001 là một
mạch điện chứa tới vài chục triệu transitor.
c d

Hình 42. So đồ bộ cộng hai bit


MODULE 6. BIỂU DIỄN THÔNG TIN TRONG MÁY TÍNH
6.1. Dữ liệu
Để đạt được hiệu quả cao khi xử lý, lưu trữ và truyền thông tin điều cần thiết là phải tìm
cách tổ chức và biểu diễn (thể hiện) thông tin trong MTĐT một cách hợp lý. Như đã biết,
dữ liệu là hình thức biểu diễn thông tin. Vậy đối với máy tính dữ liệu chính là các thông
tin đã được mã hoá dưới dạng nhị phân. Dữ liệu - thông tin được máy tính xử lý có thể có
các dạng khác nhau.
Máy tính có thể tính toán trên các số, có thể xử lý thông tin chữ hay thông tin logic, có
thể xử lý những thông tin đa phương tiện (multimedia) như âm thanh và hình ảnh. Máy
tính còn có thể xử lý tri thức (knowledge).

Dữ liệu

Dữ liệu số Dữ liệu phi số Tri thức

Số dấu Số dấu Văn Logic Đa Luật Sự kiện


phảy tĩnh phảy động bản phương tiện

Âm Hình
thanh ảnh

Hình 6.1. Phân loại các dạng dữ liệu cơ bản.

Thông tin về một đối tượng có thể rất phức tạp và có thể được thể hiện bằng nhiều dữ liệu
có kiểu khác nhau. Ví dụ thông tin về một cán bộ có thể có tên, nơi sinh là văn bản; ngày
sinh, lương là số; ảnh chân dung là ảnh...
Để lưu trữ trong MTĐT cả dữ liệu số, phi số và tri thức đều được mã hóa bằng các mã
nhị phân. Theo nghĩa đó mọi dữ liệu dù là bản chất có khác nhau nhưng đều được số hoá.
Sự phân biệt theo sơ đồ trên nặng về ý nghĩa sử dụng hơn là cách biểu diễn. Dưới đây ta
sẽ trình bày chi tiết hơn các lớp dữ liệu. Trong trường hợp biểu diễn thông tin không quá
phức tạp ta sẽ trình bày một chút về cách biểu diễn.

6.2. Dữ liệu kiểu số


Người ta thường dùng hai cách biểu diễn số là số dấu phảy tĩnh và số dấu phảy động.

6.2.1. Biểu diễn số dấu phảy tĩnh


(fixed point number )
Với kiểu biểu diễn số dấu phảy tĩnh, người ta chọn một độ rộng n bít nào đó cho một số.
Trong n bit này, bít đầu tiên dùng để mã dấu của số theo cách bít 0 dùng để mã dấu
dương, bít 1 dùng để mã dấu âm. Trong n-1 bít còn lại, lấy một số bít cho phần nguyên và
phần còn lại cho phần lẻ. Ví dụ trong dãy 16 bít sau nếu ta dùng 7 bít cho phần nguyên và
8 bít cho phần lẻ và một bít cho dấu thì biểu diễn sau thể hiện số 1100101,11011011

0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1

Vị trí dấu phảy


Hình 6.2. Biểu diễn dấu phảy tĩnh
Do với mỗi kiểu biểu diễn đã chọn, vị trí dấu phảy mang tính quy ước nằm ở một vị trí cố
định nên kiểu biểu diễn này gọi là kiểu dấu phảy tĩnh.
Trên thực tế đa số các môi trường xử lý quy ước dấu phảy đứng sau ô cuối cùng có nghĩa
là chỉ áp dụng chế độ dấu phảy tĩnh cho số nguyên. Độ dài của biểu diễn tuỳ thuộc vào
nhu cầu. Các số nguyên thường dùng chủ yếu có các loại độ dài 8 bit, 16 bít và 32 bit.
Mã số nguyên trình bày trên đây được gọi là mã thuận. Thực ra để tiện cho việc thực
hiện các phép tính đại số, người ta còn sử dụng nhiều loại mã số nguyên khác như mã
ngược, mã bù...mà ta sẽ không trình bày ở đây.

6.2.2. Biểu diễn số dấu phảy động


(floating point number)
Biểu diễn dấu phảy tĩnh không đáp ứng được một số nhu cầu, đặc biệt trong tính toán gần
đúng. Đối với các bài toán tính gần đúng người ta có thể chấp nhận những sai số là lớn về
tuyệt đối nhưng tỉ số của sai số trên giá trị thực của số là nhỏ (sai số tương đối). Mặt khác
cách biểu diễn số trong dấu phảy tĩnh không đủ mềm dẻo để thể hiện các số quá lớn hoặc
quá bé. Đã từ lâu, khi có nhu cầu tính toán gần đúng trên máy tính người ta thường dùng
một loại biểu diễn số khác là biểu dấu phảy động. Trong dạng này số phải được phân tích
trong dạng mũ hay còn là dạng nửa logarit như sau:
x =± mx.10 ±Px
trong đó mx gọi là phần định trị còn ±Px gọi là phần bậc.
Ví dụ
3,14 = 0,314 x 101
- 0.0012 = - 0.12 x 10-2
Như vậy phân tích của một số ra dạng mũ là không duy nhất nhưng nếu kèm thêm điều
kiện phần định trị phải nằm giữa 1 và 10-1 thì phân tích luôn duy nhất. Phân tích như thế
gọi là dạng chuẩn. Với dạng chuẩn, phần định trị không có phần nguyên nên chỉ phải biểu
diễn phần lẻ của nó. Hơn nữa trong dạng chuẩn nếu một số khác 0 thì chữ số đầu tiên của
phần định trị phải khác 0. Trong hệ đếm cơ số 2 nó phải là 1.
Để biểu diễn một số trong một vùng nhớ n bít người ta sẽ dành một phần biểu diễn phần
định trị và một vùng biểu diễn phần bậc.

± Phần định trị ± Phần bậc

Hình 6.3. Biểu diễn dấu phảy động

Nguyên tắc mã dấu của phần định trị và phần bậc cũng giống như trong trường hợp số
dấu phảy tĩnh. Như vậy ví trí dấu phảy thực sự của số là do phần bậc định ra trên phần
định trị. Chính vì vậy người ta gọi kiểu biểu diễn số này là biểu diễn dấu phảy động.
Biểu diễn dấu phảy động có hai ưu điểm so với biểu diễn dấu phảy tĩnh là:
- Khoảng biểu diễn số rất lớn theo nghĩa với cùng một số vị trí (tương ứng là các ngăn
lưu trữ trong một ô nhớ), kiểu dấu phảy động có thể biểu diễn các số có giá trị tuyệt đối
rất lớn hoặc rất nhỏ so với biểu diễn dấu phảy tĩnh.
- Một khi số lượng các ngăn chứa các chữ số của một đã được xác định thì cũng có nghĩa
là ta phải chấp nhận sai số làm tròn. Giả sử có số x mà do làm trong ta chỉ biễu diễn được
giá trị x’. Khi đó |x-x’| được gọi là sai số tuyệt đối và |x-x’| /|x| được gọi là sai số tương
đối. Kiểu biểu diễn số dấu phảy động có sai số tương đối khá tốt.
Để dễ hình dung, ta minh họa trên hệ thập phân với ô nhớ gồm 10 ngăn, mỗi ngăn chứa
được một chữ số thập phân.
Giả sử trong chế độ dấu phảy tĩnh ta dùng 1 ngăn dấu của số, 6 số cho phần nguyên, 3 số
cho phần lẻ.

±
phần nguyên phần lẻ
Số dương lớn nhất biểu diễn được là 999999,99. Số dương nhỏ nhất là 0,001.
Một cách tổng quát khi dùng m ngăn cho phần nguyên, n ngăn cho phần lẻ thì số dương
lớn nhất biểu diễn được là 10m-10-n, còn số dương nhỏ nhất biểu diễn được là 10-n
Nếu cũng vẫn 10 ngăn đó ta dùng 6 ngăn cho phần định trị và 2 ngăn cho phần bậc, một
ngăn cho dấu của bậc.

± ±
phần định trị phần
bậc
Số dương lớn nhất biểu diễn được là 0.999999.1099 . Số dương nhỏ nhất biểu diễn được
là 0,1. 10-99 = 10-100 .
Một cách tổng quát, nếu dùng m ngăn cho phần định trị và n ngăn cho phần bậc thì số
dương lớn nhất có thể biểu diễn được là
m
−1
(1 − 10 − m ) 1010
Còn số dương nhỏ nhất có thể biểu diễn được là
−m
1010
Rõ ràng là khoảng số biểu diễn được của chế độ dấu phảy động tốt hơn rất nhiều so với
chế độ biểu diễn dấu phảy tĩnh.
Trong ví dụ trên, với kiểu biểu diễn dấu phảy tĩnh, sai số tuyệt đối là 10-3 (0,001) và sai
số tương đối xấp xỉ 10-9 .(0,001/999999,999). Một cách tổng quát nếu ta dùng m ngăn cho
phần lẻ và n ngăn cho phần nguyên thì chế độ dấu phảy tĩnh sai số tuyệt đối gây ra do
làm tròn là 10-m còn sai số tương đối có thể lên tới 10-m-n.
Với chế độ dấu phảy động, trong ví dụ trên, sai số tuyệt đối có thể khá lớn do bị khuyếch
đại theo hệ số 10Px như 0,000001.1099. Còn sai số tương đối thì rất tốt, luôn luôn đạt mức
10-m-n .
Chuẩn dấu phảy động IEEE 754
Chuẩn dữ liệu dấu phảy động được dùng rộng rãi hiện nay có khác chút ít với chuẩn dữ
liệu dấu phảy động nêu trên. Với chuẩn IEEE 754, người ta đưa vào những yếu tố mới để
việc xử lý số liệu đa dạng hơn, phản ánh được đầy đủ thực tiễn tính toán với các số gần
đúng.
Chuẩn này định nghĩa định dạng và cách thực hiện các phép tính trên các số phảy động
trong đó có cả số 0 với dấu âm, các số không chuẩn hoá, các giá trị đặc biệt như vô hạn
và giá trị không phải số (NaNs). Chuẩn cũng xác định 4 mode làm tròn số và 5 ngoại lệ.
Bit đầu tiên là dấu của số, sau đó là phần bậc, cuối cùng là phần định trị.

Bảng dưới đây mô tả định dạng cho chuẩn dấu phảy động IEEE 754
Kiểu Exponent Mantissa

Zeroes (Số 0) 0 0

Denormalized numbers (Số không được chuẩn hoá) 0 khác 0

1 to 2e − 2
Normalized numbers (Số trong dạng chuẩn hoá) bất kỳ
Khác 1…11

2e − 1
Infinities (Vô hạn) 0
11111…11

2e − 1
NaNs (Phi số, định dạng không phải số) khác 0
11111…11

6.3. Dữ liệu phi số

6.3.1. Mã hoá chữ và dữ liệu kiểu văn bản.


Đơn vị cơ sở của dữ liệu văn bản là chữ. Ở đây khái niệm chữ cần được hiểu theo nghĩa
rộng, không chỉ là các chữ cái la tinh mà kể cả chữ số, các dấu chính tả, các dấu toán học,
các kí hiệu để trình bày. Mặt khác không phải dân tộc nào cũng dùng chữ latinh nên đối
với một số dân tộc có thể có những chữ riêng. Ví dụ bộ chữ Trung hoa có đến hơn 60
nghìn chữ.
Để đỡ gây nhầm lẫn giữa khái niệm chữ theo nghĩa chữ cái thông thường (letter) với
"chữ" dùng trong văn bản nói chung kể cả văn bản máy tính, từ đây trở đi chúng ta sẽ
dùng thuật ngữ ký tự (character) với ý nghĩa là một ký hiệu dùng trong văn bản.
Nếu dùng một vùng nhớ k bit để mã hoá một chữ thì chỉ có thể biểu diễn được tối đa là 2k
kí tự vì chỉ có thể tạo được đúng 2K các mã nhị phân khác nhau. Điều này giải thích tại
sao người Mỹ chỉ cần 7 bit để mã cho các chữ của họ; để có thêm các mặt chữ châu Âu,
chữ Hy lạp và một số ký hiệu trình bày cũng chỉ cần 8 bít; trong khi đó người Trung hoa
hay người Nhật phải dùng các mã 16 bít.
Các văn bản được hình dung như một chuỗi kí tự. Nội dung một cuốn sách, một bài thơ
được đưa vào máy tính là những ví dụ cụ thể về thông tin văn bản. Hầu hết các máy tính
và môi trường lập trình hiện nay đều sử dụng một byte để mã hoá một chữ.

6.3.2. Các dữ liệu logic


Dữ liệu loại logic chỉ thể hiện một trong hai trạng thái đối lập là đúng/sai, hoặc có/không.
Điều này ta thường thấy trong rất nhiều loại hồ sơ. Ví dụ trong lý lịch cá nhân: họ tên,
quê quán là dữ liệu kiểu văn bản, ngày tháng năm sinh, lương có thể thể hiện bằng số,
còn các thông tin như có là đoàn viên không, có gia đình hay không là các thông tin có
kiểu logic. Các thông tin kiểu logic chịu tác động của các phép toán đặc trưng như các
phép toán so sánh, các phép toán nhân logic “và”, cộng logic “hoặc” hay phủ định logic
“không” ví dụ trong một hệ thống quản lý sinh viên người ta có thể phải đặt các câu hỏi
như: In ra danh sách các sinh viên (mà) tuổi < 20 hoặc tuổi <21 và là nữ và là đoàn viên
và không phải nơi sinh là Hà Nội.
Về nguyên tắc có thể mã giá trị sai hay không bới bít 0, giá trị đúng hay có bới bít 1. Tuy
nhiên ít khi người ta sử dụng tới mức bít vì cơ chế địa chỉ hoá thường ít nhất ở mức byte.
Khi đó người ta vẫn dùng một byte để mã hoá các giá trị logic

6.3.3. Hình ảnh


Hình ảnh cũng có thể xử lý bằng máy tính. Khác
với hình ảnh thông thường, hình ảnh trong máy
tính được mã hoá dưới dạng nhị phân. Có rất
nhiều kiểu mã hoá ảnh trong đó hai kiểu thông
dụng nhất là.
Ảnh bitmap (nghĩa là bản đồ các bít) thể hiện ảnh
như một lưới điểm. Như vậy mỗi điểm sẽ phải
nằm trong một hàng và một cột nào đó trong lưới,
ngoài ra màu của điểm cũng được mã hoá. Các
ảnh khí tượng do các vệ tinh chụp gửi về, ảnh
phong cảnh, chân dung đều có thể thể hiện theo
kiểu này. Ta cũng có thể đưa một ảnh bất kỳ vào Hình 6.4. Ảnh bitmap
máy dưới dạng bitmap bằng máy quét ảnh
(scanner), máy quay video số (digital video camera) hay máy chụp ảnh số (digital
camera)... Nói chung dữ liệu ảnh này là dữ liệu lớn. Vì vậy, người ta thường sử dụng các
kỹ thuật nén ảnh trước khi đưa vào máy lưu trữ và khôi phục ảnh khi trình bày. Có rất
nhiều chuẩn ảnh khác nhau, chủ yếu khác nhau ở cách tổ chức để nén được ảnh mà vẫn
giữ được chất lượng và thể hiện được các hiệu ứng ảnh. Còn lúc hiển thị để xem thì ảnh
sẽ được khôi phục dưới dạng bitmap. Ảnh thể hiện theo từng điểm còn gọi là ảnh raster.
Kiểu thứ 2 thể hiện ảnh theo cách vẽ. Kiểu này chỉ phù hợp với các ảnh có thành phần là
các điểm rời rạc, các đường hoặc hình thể hiện bằng các đường biên như bản vẽ kiến trúc,
các bản vẽ kỹ thuật, bản đồ. Cách lưu trữ là lưu thông tin về các thành phần của ảnh. Đối
với một đoạn thẳng thì chỉ lưu toạ độ các đầu mút, đối với một hình tròn thì chỉ lưu toạ
độ tâm và bán kính... Vì thế các ảnh này thường gọn gàng và dễ phóng to thu nhỏ (vì chỉ
dùng các phép biến đổi toạ độ). Các ảnh kiểu này gọi là ảnh vector.

6.3.4. Âm thanh
Âm thanh cũng có thể được xử lý bằng máy tính. Cũng có nhiều phương pháp mã hoá âm
thanh. Cách đơn giản nhất là mã hoá bằng cách xấp xỉ dao động sóng âm bằng một chuỗi
các byte thể hiện biên độ dao dộng tương ứng theo từng khoảng thời gian bằng nhau. Dĩ
nhiên các đơn vị thời gian này cần phải đủ nhỏ để không làm nghèo âm thanh. Đơn vị
thời gian này gọi là chu kỳ lấy mẫu. Hình vẽ dưới đây minh hoạ cách lưu trữ xấp xỉ sóng
âm, theo đó sẽ lưu lại dãy các giá trị sau:
2 4 5 4 3 3 5 7 7 6 3 4 5 5 4 3 1

Hình 6.5. Số hoá âm thanh

Khi phát, một mạch điện sẽ khôi phục lại sóng âm với một sai lệch chấp nhận được.
Một cách khác là phân tích dao động âm thanh thành tổng các dao động điều hoà (các dao
động hình sinh với tần số và biên độ khác nhau) và chỉ lưu lại các đặc trưng về tần số, và
biên độ.
Còn có nhiều cách mã hoá âm thanh dựa theo những nguyên lý nén dữ liệu rất hiệu quả
Việc số hoá âm thanh cũng được thực hiện nhờ các thiết bị chuyên dụng
Xử lý âm thanh trên máy tính gồm những việc sau:
ƒ Thu và mã hoá âm thanh,
ƒ Biên tập (sửa chữa, ghép, cắt),
ƒ Phân tích (tìm các đặc trưng để nhận dạng tiếng nói). Một số máy tính đã có thể
nghe được các lệnh đơn giản. Các máy điện thoại di động hiện nay đã có khả năng
nhận dạng tiếng nói,
ƒ Tổng hợp tiếng nói. Ở mức độ đơn giản máy tính có thể đọc văn bản thành lời.

6.4. Biểu diễn vật lý của thông tin trong máy tính
Đối với bộ nhớ trong, các thông tin sau khi mã hoá dưới dạng nhị phân được đưa vào bộ
nhớ theo quy ước. Mỗi ngăn của ô nhớ sẽ lưu giữ một trong hai trạng thái được quy ước
là một trong hai bit 0 hoặc 1.
Với đĩa từ, người ta không ghi mã hoá bit 0 hay 1 theo chiều của từ thông của các vùng
nhiễm từ. Vấn đề là khi đọc, đầu đọc trên nguyên tắc cảm ứng từ chỉ có thể cảm nhận
được các trạng thái khác nhau qua sự biến thiên của từ trường. Nếu dùng chiều của từ
thông để mã hoá thì không thể phân biệt được các bít giống nhau đứng liền nhau. Thông
thường các bít được ghi theo kiểu điều tần. Các bít được thể hiện qua các kiểu biến thiên
của từ trường chứ không phải chiều của từ thông một vùng nhiễm từ trên đĩa. Thực ra
cách ghi trên điã từ khá phức tạp vì người ta không những chỉ ghi dữ liệu mà còn có các
thông tin về địa chỉ và các thông tin đồng bộ giúp cho việc đọc thông tin được chính xác.

6.5. Truyền tin giữa các máy tính.


Người ta muốn truyền các bít từ máy này đến máy khác và cách đơn giản nhất là phân
biệt các bit bằng điện áp, ví dụ điện áp 5 v để thể hiện bít 1, điện áp -5 v thể hiện bit 0.
Thực tế không bao giờ có thể truyền và nhận các tín hiệu dưới dạng các xung vuông mà
bao giờ khi chuyển từ mức điện áp nọ đến mức điện áp kia cũng có những giai đoạn điện
áp nhận những giá trị trung gian. Không những thế còn rất nhiều ảnh hưởng khác làm tín
hiệu lúc nhận khác với tín hiệu mức thu như sự suy yếu tín hiệu làm biên độ thay đối,
hình dạng tín hiệu thay đổi - bị méo và
đương cong tín hiệu không trơn như lúc
đầu do nhiễu. Những vấn đề này cần
được khắc phục bằng các mạch vật lý.
Thể hiện các bít bằng mức điện áp chỉ là
một cách điều chế tín hiệu mà ta gọi là
điều biên. Còn có các phương pháp điều
chế tín hiệu khác gọi là điều tần theo đó,
các bít thể hiện bằng sự thay đổi tần số
của tín hiệu và phương pháp điều pha
theo đó các bít được thể hiện bằng pha
của tín hiệu hình sin. Người ta cũng kết
hợp cả nhiều cách điều chế để có thể
tăng tốc độ truyền tin. Một trong các
thiết bị cho phép truyền tin giữa các máy Hình 6.6. Điều chế tín hiệu
qua mạng điện thoại là modem. Tên a) Tín hiệu cơ sở (nhị phân);b) Điều biên 1:
"modem" có nguồn gốc từ cặp từ biên độ khác 0, 0: biên độ 0; c) Điều tần 1: tần
"modulation - demodulation" nghĩa là số cao, 0: tần số thấp. d) Điều pha 1: phaπ/2,
điều chế và giải điều chế. Các dữ liệu 0: pha -π/2
truyền ra từ một máy tính sẽ được
modem điều chế thành tín hiệu tương tự và gửi đi theo đường điện thoại. Modem nhận sẽ
giải điều chế từ tín hiệu tương tự thành các bít chuyển cho máy tính nhận. Một cách mã
hoá để truyền trong modem là kết hợp điều biên và điều pha cho phép có thể truyền tin
với tốc độ cao hơn tần số của sóng mang.
Còn rất nhiều kiểu truyền thông khác như truyền thông nhờ các môi trường không dây
như sóng điện từ hay tia hồng ngoại. Đối với mỗi kiểu truyền thông đó đều có một cách
điều chế tín hiệu riêng.
MODULE 7. THUẬT TOÁN XỬ LÝ THÔNG TIN

7.1. Khái niệm bài toán và thuật toán


Trước khi xem xét đặc trưng của “bài toán” ta xét một số ví dụ.
Ví dụ 1. Bài toán kiểm tra tính nguyên tố.
Cho : số nguyên dương N;
Cần biết: N có là số nguyên tố hay không?
Ví dụ 2. Bài toán quản lý hồ sơ cán bộ.
Có : Hồ sơ gốc của các cán bộ trong cơ quan
Cần : Bảng thống kê, phân loại cán bộ theo trình độ văn hoá
Qua các ví dụ trên, ta thấy các bài toán được cấu tạo bởi hai thành phần cơ bản:
ƒ Thông tin vào (input): Thông báo cho ta biết các dữ liệu đã có;
ƒ Thông tin ra (output) : Thông báo cho ta cái cần tìm từ input;
Như vậy, việc cho một bài toán có nghĩa là cho input và output của nó. Cho bài
toán nghĩa là làm rõ câu hỏi "Có các dữ kiện gì và phải làm gì?" nhưng không cho biết
"Phải làm thế nào". Việc giải bài toán có nghĩa là xuất phát từ input dùng một số hữu hạn
các bước thao tác thích hợp để tìm được output theo yêu cầu của bài toán đã đề ra.
Lưu ý rằng trong toán học có một xu hướng nghiên cứu định tính các bài toán.
Theo xu hướng này, khi xem xét các bài toán, người ta chỉ cần chứng tỏ sự tồn tại của
output khi cho input và nếu có thể, xét xem có bao nhiêu "lời giải" và nghiên cứu tính
chất của chúng. Trong các nghiên cứu như vậy, nhiều khi ta không cần tìm ra lời giải một
cách tường minh nhưng bằng cách dùng các công cụ toán học khác nhau một cách thích
hợp ta vẫn có thể chứng minh chặt chẽ các điều khẳng định liên quan đến lời giải. Chẳng
hạn, một định lý toán học khẳng định rằng nếu hàm f(x) liên tục trên đoạn [a, b] và f(a).
f(b)<0 thì tồn tại điểm c nằm giữa a và b sao cho f(c) = 0. Sự tồn tại lời giải theo nghĩa
này không cho ta cách khả thi để tìm ra lời giải.
Ở đây, ta sẽ quan niệm việc giải bài toán là việc xác định tường minh output theo
input bằng một quá trình có thể thực hiện một cách hiệu quả. Đó chính là nội dung cơ bản
của lý thuyết tính toán.
Theo lý thuyết tính toán, một quá trình gồm một dãy hữu hạn các thao tác có thể
thực hiện được sắp xếp theo một trình tự xác định dùng để giải một bài toán được gọi là
một thuật toán (algorithm). Như vậy, khác với quan niệm về việc giải một bài toán theo
toán học truyền thống, việc giải bài toán theo quan niệm của tin học có nghĩa là chỉ ra
một thuật toán mà về nguyên tắc, các thao tác này có thể "giao cho máy làm được". Từ
điển Oxford đưa ra một định nghĩa về thuật toán như sau “Algorithm: set of well-defined
rules for solving a problem in a finite number of steps”. Thực ra các định nghĩa như trên
không được chặt chẽ về mặt toán học. Tuy nhiên, quan niệm như vậy về việc giải bài toán
là cơ sở để có thể chuyển giao công việc cho máy tính. Bản thân máy tính là một thiết bị
vật lý vô tri vô giác, do đó với thể hiện vật lý cụ thể, máy tính chỉ có thể thực hiện được
các thao tác rất đơn giản (tất nhiên với tốc độ rất nhanh và chính xác).
Ví dụ, cho hai số nguyên dương a, b. Cần xây dựng thuật toán để tìm ước số
chung lớn nhất (UCLN) của a và b. Dưới đây là thuật toán Euclid đề xuất cho bài toán
nêu trên dựa trên một tính chất hiển nhiên là : Nếu a = b thì chính b là USCLN của a và b.
Ngược lại nếu a < b thì USCLN(a,b) = USCLN(b-a, a) và nếu a>b thì USCLN(a,b) =
USCLN(b, a-b) .

Bài toán
Input : a, b nguyên dương
Output: UCLN của a và b
Thuật toán Euclid
ƒ Bước 1: Nếu a = b thì lấy giá trị chung này làm USCLN và kết thúc
ƒ Bước 2: Nếu a> b thì bớt a đi một lượng là b rồi quay trở lại bước 1.
ƒ Bước 3: Ngược lại, bớt b đi một lượng là a rồi quay trở lại bước 1.
Các thao tác bao gồm:
ƒ Phép gán giá trị: xây dựng các giá trị của đối tượng (ví dụ bớt a đi một lượng là b
hay cho USCLN là a)
ƒ Phép dừng, kết thúc quá trình xử lý
ƒ Phép chuyển có hoặc không có điều kiện cho phép thực hiện tiếp từ một bước nào
đó ví dụ sau bước 2 quay trở lại bước 1.
Ở cuối bước 3 của thuật toán trên ta gặp thao tác "thực hiện bước 1". Trong
trường hợp này bộ xử lý sẽ chuyển sang thực hiện bước 1 của thuật toán. Khi diễn đạt
thuật toán ta ngầm qui định rằng nếu không gặp phép chuyển điều khiển thì bộ xử lý sẽ
thực hiện tuần tự: sau bước thứ i sẽ chuyển sang bước thứ i + 1. Như vậy bước 2 nếu
không quay về bước 1 thì sẽ thực hiện tiếp bước 3.

7.2. Một số đặc trưng của thuật toán


Knuth – tác giả của bộ sách nổi tiếng “Nghệ thuật lập trình” đã đưa ra 5 đặc trưng
sau đây của thuật toán:
ƒ Input (dữ liệu vào): Mỗi thuật toán cần có một số (có thể bằng 0) các dữ liệu ban
đầu. Trong ví dụ thuật toán Euclid nói trên đó là hai số m và n.
ƒ Output (Kết quả): Thuật toán phải cho ra được kết quả - chính là mục đích
giải quyết bài toán thông qua thuật toán
ƒ Tính xác định:Tính xác định của thuật toán đòi hỏi ở mỗi bước các thao tác phải
hoàn toàn xác định, không có sự nhập nhằng, lẫn lộn, tuỳ tiện. Nói cách khác,
trong cùng một điều kiện, các chủ thể xử lý dù là người hay máy thực hiện cùng
một bước của thuật toán thì phải cho cùng một kết quả. Chính vì vậy, ngôn ngữ
mô tả thuật toán phải chặt chẽ để không thể hiểu lầm.
ƒ Tính khả thi: Các chỉ dẫn trong thuật toán phải có khả năng thực hiện được trong
một thời gian hữu hạn. Ví dụ sau đâu không thể là mô tả một thuật toán: gán cho
x giá trị 1 nếu bài toán tô màu giải được và cho giá trị 0 nếu bài toán tô màu
không giải được (Bài toán tô màu khẳng định không cần dùng quá 4 màu để tô
các nước trong bản đồ đề hai nước có biên giới chung phải có màu khác nhau.
Người ta kiểm chứng trên thực tế thì đúng nhưng chưa tìm được chứng minh cho
bài toán này)
ƒ Tính kết thúc (tính dừng): Việc thực hiện các bước theo một thuật toán phải
dừng sau một số hữu hạn bước. Thuật toán Euclid tìm UCLN thoả mãn tính dừng
vì sau mỗi bước ta thấy tổng a+b giảm thực sự nhưng không được nhỏ hơn 2. Vì
vậy quá trình trên nhất định phải dừng sau một số hữu hạn bước.
Ngoài 5 đặc trưng trên, trong một số tài liệu khác người ta còn nói đến tính phổ dụng.
ƒ Tính phổ dụng: Tính phổ dụng có nghĩa là một thuật toán có thể được áp dụng
với một lớp các bài toán với input thay đổi chứ không chỉ áp dụng cho một trường
hợp cụ thể. Thuật toán Euclid nói trên có thể áp dụng cho bất kỳ cặp hai số tự
nhiên
Cần lưu ý là trong khi tính dừng và tính xác định là điều kiện cần để một quá trình
là một thuật toán thì tính phổ dụng chỉ là một tính chất thường thấy vì có nhiều bài toán
có input hoàn toàn xác định, không tồn tại một lớp các bài toán tương tự.

7.3. Các phương pháp diễn tả thuật toán


Người ta thường diễn tả thuật toán bằng một trong ba cách thức sau đây.

7.3.1. Liệt kê từng bước


Liệt kê ra các quy tắc, các chỉ thị thực hiện giống như các ví dụ nói trên
Ta xét thêm ví dụ sau. Có 43 que diêm. Hai người chơi luân phiên bốc diêm. Mỗi
lượt, mỗi người bốc từ 1 đến 3 que diêm. Người nào bốc cuối cùng sẽ thắng cuộc. Thuật
toán để người đi trước luôn thắng cuộc được diễn tả bằng cách liệt kê từng bước như sau:
ƒ Bước 1: Bốc 3 que rồi đợi đối phương đi
ƒ Bước 2: Đối phương bốc (giả sử x que, 0<x<4). Sau đó thực hiện bước 3
ƒ Bước 3: Đến lượt người đi trước bốc a = (4-x) que và nếu còn diêm thì quay lại
bước 2.
ƒ Bước 4 : Tuyên bố thắng cuộc - kết thúc.
Bạn đọc hãy tự lý giải tại sao theo thuật toán này người đi trước luôn luôn thắng.

7.3.2. Lưu đồ hay còn gọi là sơ đồ khối


Lưu đồ (flow chart) là một phương tiện hình học giúp ta diễn tả thuật toán một
cách trực quan. Lưu đồ được tạo bởi các kiểu khối cơ bản nối với nhau bằng các đường
có hướng. Sau đây là một số khối được dùng để diễn đạt thuật toán.
Khối tính toán được biểu diễn bằng hình chữ nhật. Trong khối này ta viết một
hoặc một dãy các thao tác như tạo giá trị, hoặc là một nhóm công việc. Nếu để thể hiện
việc tính giá trị ta sẽ dùng dấu gán := với ý nghĩa đại lượng đứng bên trái dấu gán được
gán giá trị cho phía phải dấu gán. Khối tính toán có nhiều đường đi đến và 1 đường đi ra.

Khối chỉ điểm


bắt đầu Khối điều kiện

Khối chỉ điểm


kết thúc Khối input

Khối thao tác


Khối output
Hướng xử lý

Hình 7.1. Các loại biểu diễn hình học trong sơ đồ khối

Khối điều kiện


được biểu diễn bằng hình
thoi hoặc hình lục giác.
Trong khối này ta viết một
điều kiện. Tuỳ theo điều a, b
kiện này thoả mãn hay
không mà việc thực hiện
tiếp theo sẽ được chỉ dẫn +
bởi một trong hai đường đi a=b d := a d
ra mang dẫu + (cho trường
hợp đúng) hoặc dấu - (cho
trường hợp sai). Như vậy
khối điều kiện có 1 đường a>b
đi đến và 2 đường đi ra. +
Hai khối đặc biệt là a:= a - b b := b-a
khối bắt đầu và khối kết
thúc được biểu diễn bằng
hình tròn chỉ rõ điểm bắt
đầu và điểm kết thúc
(điểm dừng) của thuật
toán. Khối bắt đầu không
có đường đi đến và có 1
Hình 7.2. Lưu đồ cho thuật toán Euclid
đường đi ra. Khối kết thúc
không có đường đi ra.
Trong khối input ghi rõ các đại lượng vào, và ở khối output ghi các đại lượng ra.
Khối input có thể đặt kế tiếp khối bắt đầu, còn khối output có thể đặt liền trước khối kết
thúc.
Chúng ta dùng lưu đồ diễn tả lại thuật toán Euclid tìm UCLN của hai số nguyên
dương.
Sau đây là lưu đồ cho bài toán bốc diêm. Lưu đồ này không cần cả khối input và
output. Trong các ô thao tác không chỉ là phép gán mà có thể là mô tả một hành động nào
đó

Lấy 3 que

Số diêm Tuyên bố
còn > 0 thắng cuộc
+
Đối phương lấy
x que diêm

Ta lấy 4-x que

Hình 7.3. Lưu đồ thuật toán trò chơi bốc diêm

7.3.3. Ngôn ngữ thuật toán


Với cách thức này, thuật toán được diễn đạt gần như ngôn ngữ tự nhiên bằng một
số cách nói như “trong khi một điều kiện thoả mãn thì lặp lại một nhóm thao tác“ hay
“nếu một điều kiện thoả mãn thì thực hiện nhóm thao tác này ngược lại thực hiện nhóm
thao tác kia” hay “sau thao tác này thì thực hiện thao tác kia”. Như vậy các diễn đạt đó
chỉ rõ cách thiết lập thứ tự các thao tác và được gọi là cấu trúc điều khiển. Cấu trúc điều
khiển chính là cách thể hiện thuật toán của các ngôn ngữ lập trình bậc cao mà ta sẽ thảo
luận kỹ hơn trong phần ngôn ngữ lập trình.
Ví dụ thuật giải Euclid có thể thể hiện như sau:
Trong khi a ≠ b thì lặp lại khối sau
Nếu a > b thì
Bớt a đi một lượng là b
Nếu không thì
Bớt b đi một lượng là a

Cho tới khi a= b thì tuyên bố USCLN chính là giá trị chung của a và b

Hình 7.4. Thể hiện thuật toán Euclid bằng các cấu trúc điều khiển

7.4. Sơ lược về đánh giá thuật toán


Đối với một bài toán, có thể có nhiều thuật toán nhưng chúng phải cho cùng một
output đối với một input. Tuy nhiên chúng có thể khác nhau về hiệu quả:
ƒ Hiệu quả thời gian: cách xử lý là nhanh hay chậm. Ta có thể đánh giá căn cứ vào
số bước thực hiện.
ƒ Hiệu quả không gian. Có thể đánh giá không gian lưu trữ theo số các đối tượng
dùng để ghi nhớ các kết quả (kể cả kết quả trung gian).
Ví dụ: Để tìm USCLN có thể có nhiều thuật toán như
Thuật toán 1:
ƒ Bước 1: Phân tích các số a và b thành tích của các thừa số nguyên tố.
ƒ Bước 2:lấy tích của các thừa số chung với số mũ nhỏ nhất làm USCLN
ƒ Bước 3: Kết thúc xử lý
Thuật toán 2 : Thuật toán Euclid cải tiến
ƒ Bước 1: Chia a cho b tìm số dư r;
ƒ Bước 2: Nếu r = 0 thì thông báo kết quả:
UCLN là b và kết thúc công việc
ƒ Bước 3: Nếu r > 0 thì gán giá trị b cho a, gán giá trị r cho b rồi quay trở lại thực
hiện bước 1.
Về hiệu quả cả về không gian và thời gian thì thuật toán 1 tồi hơn thuật toán
Euclid đã trình bày trước đây rất nhiều vì số bước cần thiết thực sự để phân tích ra thừa
số nguyên tố là rất lớn. Thuật toán 2 thực sự là một cải tiến so với thuật toán Euclid mà ta
đã trình bày trước đây vì phép chia lấy phần dư thực tế đã thay cho hàng loạt phép trừ nói
trong thuật toán Euclid. Vì vậy trong trường hợp chung nó tìm được USCLN với số bước
xử lý ít hơn nhiều.
Trong tin học có cả một ngành chuyên đánh giá độ phức tạp của thuật toán, chủ
yếu là đánh giá về hiệu quả thời gian. Thực tế sử dụng cho thấy thách thức về không gian
lưu trữ có thể giải quyết dễ hơn thách thức về thời gian thực hiện.
MODULE 8. PHẦN MỀM
8.1. Phần mềm
Như đã đề cập trong mục 2, có một số định nghĩa về phần mềm có sắc thái hơi khác nhau
một chút nhưng đều nêu lên khía cạnh phương pháp trong xử lý thông tin bằng máy tính điện tử.
Trong cuốn sách rất nổi tiếng "Software Engineering, a Practitioner's Approach", Roger S.
Pressman đã trích dẫn một định nghĩa về phần mềm như sau:
"Phần mềm là: (1) Các chỉ dẫn (các chương trình máy tính) mà khi được thực hiện, nó
mang lại chức năng và hiệu quả mong muốn. (2) Các cấu trúc dữ liệu mà theo đó chương trình có
thể thao tác được với các thông tin (3) Các tài liệu hướng dẫn cách hoạt động của chương trình và
cách sử dụng chương trình".
Ông còn nói "không có một định nghĩa nào đầy đủ hơn". Như vậy theo định nghĩa này,
phần mềm mang ý nghĩa của phương pháp giải quyết một bài toán trên máy tính. Phần mềm không
chỉ là các chương trình máy tính mà còn là phương pháp tổ chức dữ liệu và tài liệu. Chính dữ liệu
không được coi là phần mềm nhưng cách tổ chức dữ liệu thì lại là phần mềm. Có những tác giả
không xem tài liệu là phần mềm, nhưng trong rất nhiều trường hợp, phương pháp xử lý thông tin
còn cho các chỉ dẫn liên quan đến cách thức vận hành chương trình và thiết lập dữ liệu. Các hệ
thống thông tin ngày nay trở nên phức tạp đến nỗi sẽ không làm gì được nếu chỉ có chương trình
và dữ liệu mà không có hồ sơ.
Nhiều người chỉ nghĩ đơn giản phần mềm chỉ là chương trình máy tính hoặc có người cho
rằng phần mềm là chương trình máy tính và dữ liệu. Thực ra nếu có quan niệm như vậy thì cũng
không có gì trầm trọng vì thực ra điều cốt lõi vẫn là chương trình máy tính vì cuối cùng là phải xử
lý thông tin bằng máy tính điện tử theo các chương trình máy tính. Cách tổ chức dữ liệu cũng có
mục đích là để chương trình xử lý có hiệu quả, tài liệu cũng có mục đích để sử dụng đúng đắn và
hiệu quả chương trình máy tính.
Dưới đây ta sẽ phân loại phần mềm trên cơ sở chương trình máy tính.

8.2. Phần mềm ứng dụng


(application software)
Có thể nói, bất cứ nơi nào có nhu cầu xử lý thông tin là ở đó có thể ứng dụng tin học. Ngày
nay giá máy tính đủ thấp, tạo cơ hội thực tế để đưa máy tính vào mọi họat động xã hội và nghề
nghiệp. Người ta đã xây dựng rất nhiều phần mềm máy tính để phục vụ cho các công việc phục vụ
sinh hoạt của cuộc sống đời thường như như chơi nhạc, xem phim, như soạn thảo văn bản, học qua
máy tính , quản lý chi tiêu cá nhân cũng những hoạt động nghiệp vụ như sinh các bản vẽ kỹ thuật,
tính kết cấu công trình, kế toán, quản lý cán bộ... Những phần mềm như thế gọi là các phần mềm
ứng dụng. Nói một cách đơn giản, phần mềm ứng dụng là phần mềm nhằm thực hiện một công
việc nào đó.
Trong phần mềm ứng dụng cũng có thể phân chia thành phần mềm đặt hàng và phần mềm
đóng gói.
Có những phần mềm ứng dụng được viết theo yêu cầu riêng có tính đặc thù của một cá
nhân hay tổ chức, ví dụ phần mềm thiết kế một thí nghiệm, phần mềm điều khiển một dây chuyền
sản xuất, phần mềm quản lý khách hàng của một công ty... Những phần như vậy gọi là các phần
mềm đặt hàng.
Có những phần mềm ứng dụng được thiết kế dựa trên những yêu cầu chung của nhiều
người, không theo yêu cầu đặt hàng của riêng ai. Chúng được viết rất hoàn chỉnh và thường kèm
theo những phương tiện để cài đặt lên máy một cách tự động. Người sử dụng chỉ cần mua về, cài
đặt lên máy của mình, thiết lập các chế độ làm việc phù hợp là có thể sử dụng được. Những phần
mềm như thế gọi là phần mềm đóng gói. Các phần mềm soạn thảo văn bản (như Winword,
WordPerfect), phần mềm tra cứu Internet (như Internet Explorer, Nescape Navigator), phần mềm
tra cứu kiến thức, phần mềm thiết kế bản vẽ (AutoCad), phần mềm nghe nhạc hay xem phim trên
đĩa CD (như Jet Audio , Mpeg) đều là các phần mềm đóng gói. Từ khi xuất hiện máy tính cá nhân
với giá rẻ, nhiều người có thể sử dụng máy tính, thị trường phần mềm đóng gói hết sức phát triển.
Phần mềm công cụ
Có một lớp phần mềm ứng dụng đặc biệt, là các phần mềm dùng để làm ra các phần mềm
khác. Đây là các phần mềm ứng dụng của những chuyên viên tin học chuyên về phát triển phần
mềm. Đối với những người làm tin học trong lĩnh vực phát triển phần mềm thì phần mềm ứng
dụng của người sử dụng cuối cùng (end-user) là sản phẩm và là mục tiêu cuối cùng của họ. Để hỗ
trợ cho việc làm ra các sản phẩm phần mềm, người ta lại dùng chính các phần mềm khác gọi là
phần mềm công cụ. Điều này cũng giống như để chế tạo động cơ ô tô ta dùng máy công cụ.
Các phần mềm dịch tự động các thuật toán viết trong một hệ thống quy ước nào đó thành
các chương trình trên mã máy mà máy tính có thể thi hành được, các phần mềm hỗ trợ tổ chức dữ
liệu, những phần mềm phát hiện lỗi lập trình và sửa lỗi (debuger) ... đều thuộc các phần mềm công
cụ. Do các phần mềm công cụ được dùng với mục đích phát triển phần mềm nên ta còn gọi phần
mềm công cụ là phần mềm phát triển. Chúng ta sẽ thảo luận kỹ hơn một số phần mềm công cụ cụ
thể trong các mục tiếp theo.

Tiện ích
Còn có một loại phần mềm ứng dụng khác không nhằm vào các hoạt động nghiệp vụ đời
thường mà chỉ giúp chúng ta cải thiện hiệu quả công việc khi làm việc với máy tính. Chúng là các
công cụ đáp ứng những nhu cầu chung của nhiều người và không liên quan đến các lĩnh vực công
việc cụ thể. Các phần mềm như thế gọi là các tiện ích (utility). Ví dụ các phần mềm soạn văn bản
có thể soạn các văn bản đơn giản hay soạn thảo chương trình máy tính, những phần mềm sao chép
dữ liệu từ nơi này đến nơi kia, những phần mềm tìm và diệt virus đều là các tiện ích.
Nhiều tiện ích có hiệu quả rất cao. Trong những năm 80, khi hệ điều hành DOS còn phổ
biến trên các máy vi tính, rất nhiều người đã từng sử dụng tiện ích Norton Commander (NC) của
Symantec. Phần mềm này thay đổi cơ bản cách giao tiếp với máy tính. Người sử dụng không phải
gõ các lệnh của DOS với các tham số phức tạp mà chỉ cần chọn các chức năng và các file dữ liệu
dược bày đặt sẵn trên màn hình. NC còn cung cấp rất nhiều các công cụ có lợi khác như khôi phục
các file dữ liệu bị xoá nhầm, sửa chữa một đĩa bị hỏng, kết nối hai máy vi tính để truyền dữ liệu từ
máy này sang máy kia, nén dữ liệu để tiết kiệm đĩa ...

Phần mềm nhúng


Ngày nay, các thiết bị điện tử dân dụng trở nên thông minh hơn nhờ công nghệ vi xử lý.
Các phần mềm điều khiển thiết bị được ghi trong ROM. Tivi, xe hơi, điện thoại di động, lò vi sóng
... đều sử dụng các hệ vi xử lý. Phần mềm được ghi vào ROM và dùng trong các hệ vi xử lý gắn
liền với các thiết bị gọi là phần mềm nhúng (Embedded Software). Phần mềm nhúng chiếm một tỉ
trọng rất lớn trong thị trường phần mềm nói chung.

8.3. Phần mềm hệ thống


Nói chung, các phần mềm ứng dụng được khởi động khi cần thiết và ngừng hoạt động khi
thực hiện xong công việc.
Có những chương trình phải thường trực chỉ vì nó phải cung cấp các dịch vụ theo yêu cầu
của các chương trình khác mà không biết trước các yêu cầu đó khi nào xuất hiện. Một khi được thi
hành, các chương trình như vậy trở thành môi truờng làm việc cho các phần mềm khác. Những
phần mềm như thế gọi chung là phần mềm hệ thống.
Phần mềm hệ thống quan trọng nhất là hệ điều hành (operating system). Hệ điều hành có
chức năng điều hành toàn bộ hoạt động của máy tính trong suốt quá trình làm việc. Chúng ta sẽ
xem xét kỹ hơn chức năng và kiến trúc của hệ điều hành trong mục 10.
Hệ điều hành không phải là phần mềm hệ thống duy nhất. Còn có nhiều phần mềm thường
trực cung cấp môi trường làm việc cho các phần mềm khác, ví dụ phần mềm gõ bàn phím theo
kiểu tiếng Việt. Một khi được cài đặt ta có thể gõ tiếng Việt từ nhiều phần mềm khác. Một ví dụ
khác là các hệ quản trị cơ sở dữ liệu hoạt động theo kiểu khách - chủ. Từ nhiều máy tính khác nhau
cũng như từ nhiều ứng dụng khác nhau ta có thể gửi yêu cầu tra cứu dữ liệu tới máy tính chạy dịch
vụ cơ sở dữ liệu, phần mềm tính câu hỏi sẽ tính ra kết quả gửi lại ứng dụng đã yêu cầu.
H
Máy tính, các hãng chế tạo máy tính ình
tạo ra 8.1.


Phần mềm hệ thống, dùng làm môi
trường cho phần mềm ứng dụng  đồ
tươ
Các tiện
ích
ng
Phần mềm phát triển dùng cho người qua
làm tin học làm phần mềm ứng dụng Phần mềm n
đóng gói của
các
Phần mềm ứng dụng dùng cho Phần mềm lớp
những người sử dụng cuối cùng đặt hàng phầ
n
mề
Hình 8.1. Sơ đồ tương quan giữa các lớp. Con người sử dụng máy tính m,
thông qua phần mềm ứng dụng. Phần mềm ứng dụng sử dụng máy tính đối
thông qua phần mềm hệ thống, phần mềm hệ thống khai thác máy tính trực tượ
ế ng
tạo ra và đối tượng sử dụng chúng. .Chính các hệ điều hành cũng thường cung cấp một số tiện ích
đi kèm xem như môi trường giao tiếp cơ bản của người sử dụng với máy tính. Chẳng hạn, tất cả
các hệ điều hành đều có tiện ích soạn thảo văn bản ở mức đơn giản ví dụ Windows có Notepad,
UNIX có Vi hay Emag. DOS từ Ver.4 có Edit.
Nhiều tài liệu có thể có những quan niệm về phân lớp khác nhau. Sự phân loại nói trên chỉ
có ý nghĩa tương đối. Ranh giới của các lớp phần mềm trên rất mờ, thậm chí còn xâm lấn vào
nhau. Phần mềm gõ bàn phím tiếng Việt có thể được coi như một phần mềm ứng dụng, đồng thời
do tính chất cung cấp môi trường cho các ứng dụng khác mà cũng có thể dược coi như một phần
mềm hệ thống. Việc đưa ra phân lớp nói trên chỉ có thể cho một bức tranh đại thể về các lớp phần
mềm dựa trên mục đích và phương thức sử dụng.

8.4. Quá trình xây dựng một phần mềm


Tuỳ theo từng mục đích cụ thể mà phần mềm có thể phức tạp hay đơn giản. Có những phần
mềm chỉ vẻn vẹn vài trăm dòng lệnh, nhưng cũng có những phần mềm tới vài trăm nghìn, thậm chí
tới 15 triệu dòng mã lệnh như hệ điều hành Window 95.
Thời kỳ đầu, máy tính điện tử được dùng chủ yếu với các bài toán khoa học kỹ thuật. Khi
đó người lập trình thường chính là các chuyên gia trong lĩnh vực ứng dụng. Họ vừa phải nghiên
cứu cách giải quyết, vừa phải thiết kế và đồng thời tự lập trình và thử nghiệm. Sau này khi máy
tính áp dụng rộng rãi vào trong mọi lĩnh vực của đời sống kinh tế - xã hội, khoa học kỹ thuật... thì
bắt đầu xuất hiện nhu cầu chuyên môn hoá trong lĩnh vực phát triển phần mềm. Làm phần mềm trở
thành một nghề nghiệp. Người ta phải xây dựng các phần mềm trong các lĩnh vực mà chính người
làm phần mềm lúc đầu không biết. Chính vì thế xây dựng một phần mềm thường là công sức của
nhiều người và là công việc phức tạp vì để làm một phần mềm trong một lĩnh vực nào đó, người
phát triển phần mềm phải làm chủ được lĩnh vực đó. Có những người chuyên phân tích hệ thống
để làm rõ được yêu cầu và tình trạng của các hệ thống làm cơ sở cho việc xây dựng các dự án khả
thi. Thường các chuyên viên phân tích cũng là những người thiết kế vì việc thiết kế bao giờ cũng
thực hiện trên cơ sở hiểu biết nhu cầu và khả năng của công nghệ. Người lập trình là người viết
chương trình theo thiết kế. Vì phần mềm là một sản phẩm trí tuệ nên thường tiềm ẩn rất nhiều lỗi
(đôi khi rất tinh tế) nên để kiểm soát tốt chất lượng của chương trình, người ta phải áp dụng rất
nhiều biện pháp trong đó có kiểm thử chương trình (test). Trong một nhóm phát triển phần mềm có
thể có cả những người chuyên kiểm thử. Công việc chuyển giao phần mềm cho người sử dụng
cũng không đơn giản. Có hàng loạt việc cần làm như viết tài liệu, mua sắm và lắp đặt thiết bị, xây
dựng dữ liệu, cài đặt phần mềm lên máy, tổ chức đào tạo, đặt hàng cho các nhà thầu phụ (sub
contractor). Cuối cùng còn một khâu rất quan trọng là bảo trì (maintenance) . Bảo trì khác với bảo
hành và là một đặc thù của sản xuất phần mềm. Nếu người ta mua một sản phẩm bị lỗi hoặc bị
hỏng thì việc bảo hành là khôi phục lại trạng thái chất lượng ban đầu. Người ta có thể sửa chữa,
thay thế phụ tùng hoặc đổi lấy sản phẩm mới. Bảo trì không phải làm tốt bằng lúc đầu mà phải làm
cho sản phẩm tốt hơn. Những công việc sau đây thuộc về bảo trì:
ƒ Tìm và sửa hết các lỗi (Correction)
ƒ Sửa sao cho phần mềm dễ dùng và phù hợp hơn với môi trường nghiệp vụ. Công việc này
gọi là làm thích nghi. (Adaptation)
ƒ Tăng cường chức năng. Nếu thấy có một chức năng nào cần thiết cho công việc phải bổ
sung thì phải làm thêm. (Enhancement)
ƒ Dự phòng (Prevention).Mặc dù có thể chưa phát hiện được lỗi, hoặc không có yêu cầu
ngay về tăng cường chức năng, đôi khi trong bảo trì người ta đã phải có các hoạt động dự
phòng. Chẳng hạn khi làm một phần mềm trả lương, lương của mỗi người bằng hệ số
lương nhân với đơn vị lương cơ bản là 290.000 đ. Một người có tầm nhìn xa phải hiểu đến
một lúc nào đó đơn vị lương cơ bản sẽ bị thay đổi. Tốt nhất là dự phòng trước khả năng này
bằng cách đưa đơn vị lương như một đối tượng có thể thay đổi được trong cơ sở dữ liệu,
còn chương trình phải bổ sung thêm một chức năng điều chỉnh lương cơ bản
Như vậy bảo trì luôn luôn là quá trình làm mới phần mềm. Để bảo trì không chỉ đơn giản là
lập trình lại mà đôi khi phải phân tích lại hoặc thiết kế lại. Bảo trì rất tốn kém, nói chung chi phí
bảo trì đắt hơn chi phí phát triển ban đầu (bao gồm chi phí phân tích, thiết kế, lập trình, kiểm thử
để đưa phần mềm vào sử dụng lần đầu tiên).
Hình 8.2 là mô hình phát triển phần mềm theo kiểu thác nước (waterfall), theo đó các giai
đoạn phát triển sẽ lần lượt kế tiếp nhau. Trên thực tế phát triển phần mềm còn có nhiều mô hình
khác, phù hợp với những hoàn cảnh cụ thể hoặc tuỳ theo phương pháp luận của người quản trị dự
án phát triển phần mềm.
Phân tích

Thiết kế

Thực hiện

Kiểm thử

Chuyển giao

Bảo trì

Hình 8.2. Sơ đồ các giai đoạn xây dựng hệ thống thông tin
MODULE 9. NGÔN NGỮ LẬP TRÌNH VÀ CHƯƠNG TRÌNH
DỊCH
9.1. Các mức khác nhau của ngôn ngữ lập trình
Trong mục 7, ta đã xem xét một số phương pháp diễn đạt thuật toán. Để cho máy
tính có thể thực hiện được thuật toán, cần phải viết thuật toán dưới dạng các dòng "lệnh"
theo các quy ước nào đó mà máy tính có thể thực hiện được một cách trực tiếp hoặc viết
dưới dạng nào đó để có thể sinh tự động dạng mà máy tính có thể thực hiện trực tiếp. Tập
các kí hiệu và các quy tắc viết các lệnh để thể hiện thuật toán được gọi là một ngôn ngữ
lập trình (programming language). Các quy tắc để viết chương trình được gọi là cú pháp
(syntax) của ngôn ngữ lập trình. Mỗi chương trình sẽ mang một ý nghĩa nhất định mà ta
gọi là ngữ nghĩa (semantic) của chương trình.
Có nhiều lớp ngôn ngữ lập trình khác nhau. Theo mức độ hình thức hoá, người ta
chia các ngôn ngữ lập trình thành các lớp sau:
Ngôn ngữ máy. Chương trình trong ngôn ngữ máy là dãy các lệnh máy mà CPU
có thể thực hiện trực tiếp. Đó là ngôn ngữ lập trình duy nhất mà máy tính "hiểu được".
Trong thang bậc các ngôn ngữ giao tiếp với máy tính, đây là mức thấp nhất nhưng hiệu
quả của chương trình sẽ là cao nhất vì ta có thể khai thác triệt để khả năng của máy. Tuỳ
theo thiết kế về phần cứng, mỗi loại máy tính có một ngôn ngữ máy khác nhau. Các lệnh
viết bằng ngôn ngữ máy nói chung ở dạng nhị phân hoặc biến thể của chúng trong hệ
đếm 16.
Ví dụ sau đây là một đoạn chương trình viết bằng ngôn ngữ máy của một máy
tính dùng bộ vi xử lý Intel 8086.
Bảng 9.1. Ngôn ngữ máy
Mã trên hệ nhị phân Mã hệ 16 Ý nghĩa
1001 0001 0110 0100 0001 0000 A1 64 10 Nạp số 2 byte từ 1064 lên AX
0000 0011 0110 0110 0001 0000 03 65 10 Cộng AX với số 2 byte ở 1066 kết quả để trên AX
1010 0011 0000 0000 0010 1011 A3 00 2B Chuyển kết quả từ AX về hai byte bắt đầu từ 2B00
Đoạn chương trình này cộng hai số nguyên hai byte ở trong các địa chỉ 1064 và
1066. Kết quả để ở hai byte bắt đầu từ địa chỉ 2B00. Cột đầu là dòng lệnh trong hệ 16,
cột giữa là dòng lệnh tương đương trong hệ nhị phân (chính là hình ảnh thực sự của
chương trình trong bộ nhớ) và cột bên phải là giải thích. AX là tên một thanh ghi 16 bít
trong bộ vi xử lý 8086 .
Qua ví dụ trên, ta thấy ngôn ngữ máy không thật thích hợp cho số đông người sử
dụng máy tính vì để viết hoặc hiểu chương trình, người ta phải nhớ rất máy móc các mã
số của lệnh mà các dòng số này không có hàm ý rõ ràng. Mặt khác do tập lệnh của các bộ
xử lý có thể khác nhau nên không thể dùng chương trình viết trên bộ xử lý này chạy trên
máy tính dùng bộ xử lý khác loại.
Hợp ngữ (Assembly). Để khắc phục nhược điểm trên của ngôn ngữ máy, người ta
đề xuất một ngôn ngữ giao tiếp với máy ở mức độ hình thức hơn gọi là hợp ngữ. Về cơ
bản, hợp ngữ có các cấu trúc rất giống với ngôn ngữ máy. Điều khác là trong hợp ngữ có
thể viết lệnh dưới dạng mã chữ. Mã chữ thể hiện mã lệnh hoặc các đối tượng trong lệnh
(trong ngôn ngữ máy nó là mã lệnh và địa chỉ của đối tượng). Mã lệnh ở dạng chữ thường
chính là những từ trong tiếng Anh có ý nghĩa rõ ràng, còn đối tượng do ta tự đặt tên phù
hợp với ý niệm về đối tượng đó. Ví dụ nếu đoạn chương trình trên dùng để cộng chiều
dài và chiều rộng của hình chữ nhật để tính nửa chu vi thì trong hợp ngữ ASM ta chỉ cần
viết

Bảng 9.2. Chương trình viết trên Assembly


MOV AX CHIEU_DAI
ADD AX CHIEU_RONG
MOV NUA_CHU_VI AX

Từ MOV có gốc từ từ MOVE trong tiếng Anh, có nghĩa là chuyển, còn từ ADD
có nghĩa là cộng. Lệnh thứ nhất có nghĩa là nạp số liệu mà ta đặt tên là CHIEU_DAI lên
thanh ghi AX, lệnh thứ hai có nghĩa là cộng số trong thanh ghi AX với số liệu mà ta đặt
tên là CHIEU_RONG. Ta thấy mặc dù còn cồng kềnh và còn phụ thuộc vào một loại máy
tính cụ thể, hợp ngữ dễ dùng hơn rất nhiều so với ngôn ngữ máy.
Để một chương trình viết bằng hợp ngữ chạy được trên máy tính, nó cần phải
được dịch ra ngôn ngữ máy. Rõ ràng là, mỗi hợp ngữ dùng cho một loại máy nào đó đều
cần có trình dịch phù hợp. Khi dịch, hai đối tượng CHIEU_DAI và CHIEU_RONG nói
trên sẽ được tự động thay bằng hai địa chỉ cụ thể nào đó không nhất thiết là 1064 và 1066
như ở ví dụ trên. Vì vậy ta cũng không cần phải quan tâm đến sắp xếp địa chỉ cụ thể sau
khi dịch xong và chạy chương trình. Chương trình dịch đối với hợp ngữ được gọi là hợp
dịch (assembler).
Ngôn ngữ thuật toán (còn gọi là ngôn ngữ thuật toán) . Ta đã thấy ngôn ngữ máy
và cả hợp ngữ đều phụ thuộc vào hệ thống lệnh của một loại máy cụ thể. Chúng chưa thật
thích hợp cho đông đảo người sử dụng máy tính. Người ta muốn thể hiện thuật toán bằng
những lệnh với ý nghĩa thực tế và độc lập với bất cứ loại máy cụ thể nào. Chẳng hạn
trong ví dụ trên chỉ cần viết NUA_CHU_VI = CHIEU_DAI + CHIEU_RONG là đủ. Từ
đầu những năm 50, người ta đã xây dựng những ngôn ngữ lập trình vạn năng có các lệnh
gần với ngôn ngữ tự nhiên và ngôn ngữ toán học. Các ngôn ngữ lập trình này được gọi là
các ngôn ngữ lập trình bậc cao (high level programming language). Vì chúng chỉ nhằm
vào thể hiện thuật toán độc lập với các máy tính cụ thể nên người ta còn gọi nó là các
ngôn ngữ thuật toán (algorithmic language). Cũng như đối với hợp ngữ, mỗi ngôn ngữ
lập trình bậc cao trên một loại máy cụ thể đều cần có chương trình dịch để dịch các
chương trình sang sang ngôn ngữ máy của máy đó mới có thể thực hiện được.
Chú ý rằng mỗi lệnh của hợp ngữ nói chung được dịch thành một lệnh trong ngôn
ngữ máy còn mỗi lệnh của ngôn ngữ bậc cao thường tương đương với nhiều lệnh máy. Ví
dụ lệnh NUA_CHU_VI = CHIEU_DAI + CHIEU_RONG sẽ dịch thành 3 lệnh máy.
Có hai kiểu dịch: thông dịch (Interpeter) là kiểu dịch từng lệnh để hiểu công việc
phải làm và thực hiện luôn nhưng không nhất thiết phải tạo ra những đoạn mã tương ứng
trong ngôn ngữ máy. Nếu một lệnh cần thực hiện nhiều lần thì cũng phải dịch nhiều lần.
Ngôn ngữ BASIC thịnh hành vào những năm 80 thường đi theo chế độ thông dịch. Còn
các trình biên dịch (compiler) sẽ dịch toàn bộ chương trình ban đầu (gọi là chương trình
nguồn) thành một chương trình tương ứng trong ngôn ngữ máy (gọi là chương trình
đích), sau đó nạp chương trình đích vào máy tính để thực hiện. Sở dĩ trong tiếng Việt
chúng ta gọi hai kiểu dịch này là "thông dịch' và "biên dịch" vì tính chất dịch có phần nào
giống với dịch tiếng nước ngoài. Thông dịch giống như công việc của người phiên dịch
(thông ngôn), nói tới đâu dịch tới đó. Còn biên dịch là công việc của người biên dịch, căn
cứ trên tài liệu đầy đủ, ta viết ra một lần bản dịch đầy đủ.
Ngôn ngữ bậc cao đầu tiên được xây dựng vào năm 1957 là ngôn ngữ FORTRAN
(FORmula TRANslator - Bộ dịch các công thức). Ngày nay có rất nhiều các ngôn ngữ lập
trình bậc cao như PASCAL hay C. Sau đây là một đoạn chương trình giải phương trình
bậc 2 viết trên PASCAL và FORTRAN. Bạn đọc dù chưa có một chút ý niệm gì về các
ngôn ngữ này cũng có thể hiểu được các đoạn chương trình sau nói gì

Bảng 9.3. Chương trình viết trên Pascal


(*Đoạn chương trình trên PASCAL*)
DELTA := B*B - 4*A*C;
IF DELTA > 0 THEN
BEGIN
X1 := (- B + SQRT(DELTA))/(2*A);
X2 := (- B - SQRT(DELTA))/(2*A);
WRITE (X1,X2);
END
ELSE
WRITE('Vo nghiem');
.....
Sau đây là đoạn chương trình viết trên ngôn ngữ FORTRAN. Theo quy ước,
chương trình FORTRAN được viết trên giấy mẫu có 80 cột. Từ cột 1 đến cột 5 dành cho
nhãn các toán tử, từ cột 7 đến 72 dành cho toán tử.
Các lệnh in phải đi kèm với thông tin về cách in (ví dụ kênh 3 để nối máy in và
nhãn của một toán tử FORMAT giải thích cách in, ví dụ F8.3 là in một số thực ở 8 vị trí
trong đó dành cho phần lẻ sau dấu phảy 3 vị trí).
Bảng 9.4. Chương trình viết trên FORTRAN IV
1 6 7 72 73 80
DELTA = B*B - 4* A*C
IF DELTA < 0 GOTO 10
X1 = (- B + SQRT(DELTA))/(2*A)
X2 = (- B - SQRT(DELTA))/(2*A)
WRITE (3,20) X1, X2
20 FORMAT ('NGHIEM 1= ', F8.3, NGHIEM 2 = ', F8.3)
GOTO 30
10 WRITE(3,40)
40 FORMAT('VO NGHIEM')
30 ...........................................

Qua các ví dụ trên ta thấy ngôn ngữ thuật toán dễ sử dụng hơn nhiều so với hợp
ngữ và ngôn ngữ máy. Ngày nay rất ít người phải sử dụng hợp ngữ và ngôn ngữ máy để
phát triển phần mềm.

9.2. Quá trình thực hiện một chương trình với ngôn ngữ bậc cao
Cần nhắc lại rằng MTĐT chỉ làm việc trực tiếp với ngôn ngữ máy. Việc dịch một
chương trình viết bằng ngôn ngữ bậc cao sang ngôn ngữ máy do một chương trình dịch
(compiler) thực hiện. Chương trình dịch chính là một loại phần mềm thuộc lớp công cụ
mà chúng ta thảo luận trong mục 7. Quá trình tạo ra một chương trình thực hiện được bao
gồm những bước sau:
Soạn thảo chương trình nguồn. Có thể dùng các phần mềm soạn thảo văn bản để
tạo ra văn bản chương trình nguồn.
Phân tích từ vựng (Lexical Analysis) và phân tích cú pháp (Syntax Analysis).
Phân tích từ vựng để xây dựng danh sách các đối tượng của chương trình. Phân tích cú
pháp có mục đích duyệt chương trình nguồn để phát hiện và thông báo các lỗi không
đúng với quy ước của ngôn ngữ. Các lỗi này làm cho nghĩa của chương trình không rõ và
do đó không thể dịch đúng được. Ví dụ trong ngôn ngũ PASCAL ta viết dòng lệnh d := (a
+ b)/e-f)+g. Khi đọc đến dấu ngoặc đóng thứ 2 sau f, ta sẽ không hiểu được nguời viết
muốn tính gì và đương nhiên cũng không thể dịch được. Lý do làm cho dòng lệnh không
rõ nghĩa ở đây là thiếu một dấu ngoặc "(" ở phía trước, có thể là trước chữ e, cũng có thể
trước chữ a. Những lỗi sai với quy ước của ngôn ngữ gọi là lỗi cú pháp. Quá trình phân
tích cú pháp cũng tạo ra các thông tin cần thiết về cấu trúc của chương trình và các đối
tượng sẽ dùng trong công việc dịch được mô ta tiếp theo đây. Trong quá trình phân tích
cú pháp, danh mục các đối tượng cũng được xây dựng để còn sinh mã chương trình trong
giai đoạn tiếp theo. Công việc này gọi là phân tích từ vựng.
Dịch (Compile). Nếu chương trình nguồn không có lỗi cú pháp thì việc dịch ra
lệnh máy mới có thể tiến hành được. Thông thường việc phân tích cú pháp và dịch
thường tiến hành xen kẽ. Kết quả sau giai đoạn dịch là những đoạn chương trình gọi là
mô đun đối tượng (object module). Nói chung các mô đun đối tượng chưa đủ hoàn chỉnh
để có thể thi hành được. Sau khi dịch có thể tối ưu mã. Một đoạn chương trình sau khi
dịch có thể chuyển tải được các ý đồ của thuật giải nhưng chưa được đối ưu. Công đoạn
tối ưu hoá có thể giúp tạo ra các mã hiệu quả hơn.
Liên kết (Link). Trên thực tế, một chương trình có thể có nhiều phần được dịch
một cách độc lập. Ngoài ra rất nhiều công việc thường dùng đã được lập trình sẵn và
được lưu trong các thư viện dưới dạng các mô đun đối tượng. Người lập trình chỉ cần viết
yêu cầu sử dụng. Ví dụ trong PASCAL khi viết y := 3 + sin(x) thì chính đoạn chương
trình tính sin được lập sẵn từ trước dưới dạng một mô đun đối tượng sẽ được ghép vào
chương trình đích. Như vậy sau khi dịch để có một chương trình hoàn chỉnh cần phải liên
kết các các mô đun đối tượng lại với nhau. Quá trình ghép nối các đoạn chương trình của
người sử dụng và các đoạn chương trình khác được lập từ trước gọi là hợp nhất hoặc liên
kết (link). Quá trình này cũng có thể gặp lỗi ví dụ không tìm thấy các đoạn chương trình
được yêu cầu nối vào hoặc cấu trúc kết nối không phù hợp, ví dụ mô đun A thông báo
chuyển cho mô đun B dữ liệu là một ký tự trong khi trong mô đun B lại yêu cầu nhận mọt
số.
Thực hiện (run). Sau khi liên kết, ta được một chương trình có thể sẵn sàng thi
hành trên máy. Trong quá trình thi hành trên máy vẫn có thể có lỗi gọi là lỗi thi hành
(runtime error). Lỗi thi hành có thể có nguyên nhân từ thuật toán , cũng có thể có nguyên
nhân do ta không thể hiện chính xác ý nghĩa hoặc không kiểm soát được đúng quá trình
sinh ra hoặc biến đổi của các đối tượng. Các lỗi này gọi là lỗi ngữ nghĩa (semantic). Ví
dụ dòng lệnh trong ngôn ngữ PASCAL a: = x/y nghĩa là a tính bằng thương của x và y thì
không sai cú pháp nhưng khi thực hiện nếu y là 0 thì sẽ gây lỗi ngữ nghĩa. Lỗi thi hành
còn có nguyên nhân là tình trạng xử lý cụ thể của máy. Ví dụ chương trình đòi in nhưng
máy in không bật điện hoặc ghi đĩa nhưng đĩa bị hỏng.

Sơ đồ thực hiện một công việc sử dụng hợp ngữ hoặc ngôn ngữ bậc cao được
minh hoạ trong hình 9.1.
Ta thấy rằng các bộ dịch hay chương trình liên kết chính là một loại phần mềm
phát triển
Soạn thảo Dịch Liên kết Thực hiện

Phần mềm Chương trình Chương Dữ liệu


soạn thảo dịch trình liên kết

Kết quả
Chương trình Các mô đun Chương trình xử lý
nguồn đối tượng chạy được

Lỗi cú Lỗi liên kết Lỗi thi


pháp hành

Hình 9.1. Sơ đồ thực thực hiện một công việc với ngôn ngữ bậc cao
MODULE 10. HỆ ĐIỀU HÀNH
10.1. Khái niệm và chức năng của hệ điều hành
Máy tính là một thiết bị phức tạp với nhiều thành phần như CPU, bộ nhớ trong, bộ
nhớ ngoài, thiết bị ngoại vi. Việc điều khiển máy vô cùng phức tạp. Trong thời kỳ đầu
khi mới có máy tính, phương thức khai thác máy là trực tiếp theo đó chương trình được
viết trên ngôn ngữ máy và người sử dụng có thể can thiệp trực tiếp vào quá trình thực
hiện chương trình qua các phím ở bàn điều khiển của máy. Phương thức làm việc như
vậy rất kém hiệu quả. Người ta đã nghĩ đến việc dùng máy tính để quản lý chính nó. Theo
cách đó người ta xây dựng các phần mềm hệ thống để quản lý tài nguyên của máy, quản
lý công việc xử lý trên máy và giao tiếp với người sử dụng. Phần mềm này chính là hệ
điều hành (Operating System). Như vậy hệ điều hành là hệ thống nằm giữa con người và
máy giúp con người thực hiện công việc xử lý của họ (thể hiện bởi chương trình ứng
dụng của họ) một cách hiệu quả. Hoạt động của máy tính không thể tách rời khỏi hệ điều
hành. Vì thế người ta coi máy tính và hệ điều hành là một máy ảo (virtual machine).
Hệ điều hành gồm có các chức năng sau:
ƒ Quản lý và điều phối các thiết bị của máy để phục vụ cho công việc xử lý.
ƒ Quản lý thông tin ở bộ nhớ ngoài. Ngoài việc quản lý thiết bị thì hệ điều hành còn
phải quản lý các thông tin đã được lưu trữ để có thể dùng nhiều lần. Đây là một công
việc rất phức tạp. Các thông tin ở bộ nhớ ngoài được tổ chức thành các đơn vị lưu trữ
gọi là file (nhiều tài liệu dịch là tệp hoặc tệp tin). Phân hệ thực hiện chức năng quản
lý thông tin ở bộ nhớ ngoài được gọi là hệ quản lý file (file management system). Các
ứng dụng muốn tìm file, khai thác thông tin trong file hay lưu trữ thông tin lên bộ nhớ
ngoài đều phải thông qua hệ quản lý file. Chức năng này giải phóng các chương trình
ứng dụng ra khỏi một công việc rất phức tạp và tỉ mỉ.
ƒ Quản lý các tiến trình (process management). Về cơ bản, mỗi tiến trình là một
chương trình đang thực hiện trên máy tính. Ngoài các chương trình của người ứng
dụng, còn có các tiến trình hệ thống như quản lý thông tin giao tiếp với các thiết bị
ngoại vi, điều phối tài nguyên.... Thực chất quản lý tiến trình là lập lịch thực hiện các
tiến trình phù hợp với yêu cầu tài nguyên của mỗi tiến trình.
ƒ Cung cấp môi trường giao tiếp với người sử dụng kể cả việc cung cung cấp các tiện
ích cơ bản. Mỗi hệ điều hành thừơng cung cấp một ngôn ngữ giao tiếp với người sử
dụng. Trước đây ngôn ngữ giao tiếp thường là các lệnh (command) mà người sử dụng
phải gõ trực tiếp từ bàn phím. Ngày nay một số hệ điều hành như WINDOWS hay
UNIX cung cấp cả môi trường giao tiếp theo kiểu đồ hoạ theo đó người ta chỉ cần
dùng chuột để chỉ ra các công việc thể hiện qua các biểu tượng chứ không phải gõ các
lệnh.
Hệ điều hành phải được khởi động ngay trước khi máy tính làm việc với các
chương trình khác. Hệ điều hành phải luôn luôn thường trực cho tới khi cho máy ngừng
hoạt động. Ngày nay, nói đến sử dụng máy tính thực chất là sử dụng hệ điều hành.

10.2. Tiến triển của hệ điều hành

10.2.1. Phương thức làm việc với các máy tính thế hệ thứ nhất
Các máy tính thế hệ thứ nhất không có hệ điều hành. Các chương trình đều viết
trong ngôn ngữ máy và đưa vào máy bằng cách nối dây trên các bảng cắm nối
(plugboard). Chính việc điều khiển máy tính cũng được thực hiện qua các bảng cắm nối.
Không có sự phân biệt giữa chương trình của người sử dụng và chương trình điều khiển.

10.2.2. Hệ điều hành của các máy tính thế hệ thứ 2


Hệ điều hành xử lý theo lô đơn giản
Các máy tính thế hệ thứ hai có tốc độ vài nghìn đến vài chục nghìn phép tính một
giây, bộ nhớ trong từ vài nghìn đến vài chục nghìn từ máy. Thiết bị vào ra đã thay đổi cơ
bản. Thông tin nhập vào máy qua bìa đục lỗ (punched card) hay băng đục lỗ. Bộ nhớ
ngoài kiểu băng từ đã được sử dụng.
Từ thế hệ thứ hai bắt đầu có hệ điều hành . Hệ điều hành thời kỳ này chỉ là các hệ
điều hành đơn chương trình, mỗi lúc chỉ cho phép thực hiện một chương trình của người
sử dụng. Nếu phải thực hiện một chương trình viết trên ngôn ngữ FORTRAN, người lập
trình phải chuẩn bị chương trình lên các bìa đục lỗ và giao cho thao tác viên (operator).
Thao tác viên nạp chương trình dịch FORTRAN từ băng từ vào máy và nhập chương
trình nguồn từ máy đọc bìa đục lỗ. Kết quả dịch (chương trình đích) được ghi lên băng từ.
Cuối cùng thao tác viên tải lại chương trình đích từ băng từ vào máy và nhập số liệu từ
máy đọc bìa đục lỗ. Kết quả in ra máy in và thao tác viên trả lại người lập trình kết quả
tính được. Quy trình này sinh ra rất nhiều thời gian chết của máy do hoạt động xen kẽ của
thao tác viên và máy (trong khi chi phí tính toán trên máy rất đắt). Chính vì vậy trong giai
đoạn này người ta sáng tạo ra chế độ xử lý theo lô (batch processing).
Trong chế độ xử lý theo lô người ta đưa ra khái niệm nhiệm vụ xử lý gọi là JOB.
Mỗi JOB là một hoặc nhiều công việc liên hoàn. Người ta cũng xây dựng ngôn ngữ điều
khiển nhiệm vụ (JCL - JOB Control Language) để người lập trình tự xác lập dãy công
việc phải thực hiện, giải phóng thao tác viên ra khỏi công việc vận hành chuyển tiếp từ
công việc nọ tới công việc kia. Như vậy cũng có nghĩa là loại trừ được thời gian chết của
CPU. Mỗi lệnh của JCL thường bắt đầu bằng một số ký tự đặc biệt (ví dụ $ hay //) để
phân biệt với các dòng lệnh của chương trình và được mã hoá trên một tấm bìa đục lỗ
(punched card) xếp chung với các tấm bìa đục lỗ của chương trình và dữ liệu. Các JOB
của nhiều công việc được xếp kế tiếp nhau. Ví dụ với công việc thực hiện một chương
trình FORTRAN nói trên, người lập trình phải đặt các bìa có các nội dung và thứ tự như
trong bảng sau:
Bảng 11.1. Ví dụ về ngôn ngữ JCL
Nội dung các dòng lệnh của JCL Ý nghĩa
$JOB TKTU THIET KE TOI UU Thông báo cho hệ điều hành bắt đầu một JOB có
tên là TKTU
$FORTRAN Gọi chương trình dịch FORTRAN để dich chương
trình sắp đọc ra mã nhị phân
Các bìa chương trình nguồn trên Các bìa này sẽ được đọc vào để dịch, kết quả dịch
FORTRAN xếp ở đây sẽ được lưu trên bộ nhớ ngoài như băng từ
$LINK TKTU Gọi chương trình liên kết các mô đun đối tượng
(xem lại phần ngôn ngữ lập trình)
$LOAD TKTU Nạp chương trình đã dịch vào bộ nhớ
$RUN Yêu cầu thi hành chương trình
Các bìa dữ liệu xếp tiếp theo ở đây
$END Thông báo hết JOB, xoá bộ nhớ, chuyển sang JOB
kế tiếp
....................... JOB tiếp theo
Chương trình xử lý các bìa đọc vào, lọc các lệnh của JCL , căn cứ vào đó thực
hiện các điều phối thiết bị thực hiện các hoạt động tính toán chính là hệ điều hành. Hai hệ
điều hành tiêu biểu của thời kỳ này là FMS (The FORTRAN Monitor System) và
IBMSYS của IBM chạy trên dòng máy 7094.
Hệ điều hành xử lý theo lô đơn giản nhằm loại trừ thời gian chết của CPU khi
chuyển tiếp giữa các công đoạn trong một công việc là nét chủ đạo của hệ điều hành đối
với các máy tính thế hệ 2.

10.2.3. Hệ điều hành của các máy tính thế hệ 3


Thế hệ thứ 3 là các máy tính xây dựng với công nghệ mạch tích hợp mà điển hình
là các dòng máy tính IBM/360 và ICL/1900 phục vụ cả hai mục đích tính toán khoa học
kỹ thuật (chủ yếu xử lý số) và quản lý (chủ yếu xử lý chữ). Tốc độ của máy tính đạt tới
hàng trăm nghìn tới vài triệu phép tính một giây. Bộ nhớ có thể đạt từ vài trăm KB đến 1
MB. Người ta bắt đầu sử dụng đĩa từ làm bộ nhớ ngoài.
Hệ điều hành đa chương trình
Một cải tiến quan trọng ở hệ điều hành các máy tính thế hệ thứ 3 là chế độ đa
chương trình (multi-program). Trong máy tính thế hệ 2, khi một chương trình đang sử
dụng thiết bị xuất nhập dữ liệu thì CPU phải chờ công việc xuất nhập kết thúc mới tiếp
tục công việc xử lý. Các thống kê cho thấy thời gian máy dùng cho xuất nhập dữ liệu
chiếm một tỉ lệ khá lớn. Chế độ đa chương trình nhằm song song hoá các thiết bị ngoại vi
để tận dụng thời gian CPU. Trong chế độ đó, nhiều chương trình cùng được nạp vào
trong bộ nhớ. Trong khi chương trình này sử dụng CPU thì thì chương trình thứ hai có
thể đọc dữ liệu từ đĩa, còn chương trình thứ ba có thể sử dụng máy in... Vai trò của hệ
điều hành trong chế độ xử lý đa chương trình là điều phối các “tài nguyên” của hệ thống
một cách hợp lý phục vụ cho các chương trình để giảm thời gian "chết" của các thiết bị.
Lưu ý rằng chính việc phân phối bộ nhớ cho các chương trình cùng được nạp vào bộ nhớ
cũng là một việc điều phối “tài nguyên”.
Đương nhiên, việc điều phối lại tài nguyên chỉ có thể thực hiện được khi chính
máy tính có thêm một khả năng đặc biệt là nhận biết một sự kiện từ các thiết bị ngoại vi.
Để làm điều này, máy tính được trang bị thêm các bộ xử lý vào/ra để giảm tải cho CPU.
CPU chỉ cần liên lạc và bàn giao công việc vào ra cho các bộ xử lý vào/ra khi có nhu cầu
trao đổi dữ liệu với các thiết bị ngoại vi và sau đó tiếp tục công việc xử lý. Mặt khác để
tiếp nhận và xử lý được các sự kiện từ thiết bị ngoại vi, CPU có một cơ chế xử lý ngắt
theo đó nếu có một sự kiện từ ngoại vi, ví dụ trạng thái bận/rỗi thay đổi thì hệ điều hành
sẽ tạm thời ngắt CPU ra khỏi công việc đang thực hiện, lưu lại trạng thái hiện tại và thực
hiện một chương trình điều phối lại tài nguyên (một tiến trình của hệ điều hành). Sau khi
xử lý xong sự kiện, trạng thái xử lý được khôi phục lại và CPU tiếp tục công việc đang
dở dang. Với cơ chế này, các thiết bị có thể hoạt động song song. Khi cần đến sự điều
phối chung, các thiết bị có thể đối thoại với CPU thông qua cơ chế ngắt .
Tính năng điều khiển phân tán còn mở ra một khả năng song song hoá không
những giữa CPU với ngoại vi mà ngay cả ngoại vi với nhau không cần CPU tham gia.
Trong khi thiết bị đĩa từ rỗi thì có thể tranh thủ đọc trước bìa đục lỗ chuyển vào đĩa. Sau
này, thay vì phải nạp chương trình hay dữ liệu từ máy đọc bìa, hệ điều hành sẽ nạp chúng
từ đĩa từ. Quá trình đưa ra máy in cũng vậy, dùng đĩa từ để ghi lên trước. Do tốc độ làm
việc với đĩa từ nhanh hơn nhiều tốc độ nạp từ máy đọc bìa nên kiểu làm việc này cũng
góp phần đáng kể tận dụng thời gian CPU. Cơ chế này của hệ điều hành được biết đến
dưới tên gọi là Spooling (Simultaneous Peripheral Operation On Line – nghĩa là thao tác
ngoại vi đồng thời theo kiểu thường trực). Cơ chế đa chương trình và spooling lần đầu
tiên được IBM đưa vào hệ điều hành OS/360 chạy trên họ máy IBM/360 trong những
năm cuối thập kỷ 60.
Ngày nay người ta không còn phải dùng các ngoại vi chậm như máy đọc bìa
nhưng phương thức Spooling vẫn còn được dùng đối với máy in. Để in một tài liệu, phần
mềm ứng dụng tạo ảnh in cho máy in trước gửi vào đĩa cứng trong một hàng đợi. Khi có
thể, máy in sẽ lấy file ảnh phải in từ hàng đợi, mà không đợi chương trình ứng dụng. Như
vậy đã có sự thoả thuận giữa máy in và hệ thống hàng đợi tài liệu in đang có trên đĩa.
Hệ điều hành phân chia thời gian
Trong các hệ điều hành đa chương trình, các chương trình được xử lý có một thứ
tự ưu tiên nào đó, thông thường đó chính là thứ tự nạp vào máy. Một số hệ điều hành tự
động xếp các chương trình có dự báo thời gian chạy ít lên trước để giảm thời gian chờ đợi
tổng thể. Như vậy các chương trình không bắt buộc phải cùng tiến triển. Điều đó dẫn đến
tình trạng có các chương trình hầu như không được phục vụ cho tới khi một số chương
trình có độ ưu tiên cao hơn đã thực hiện xong. Trong nhiều trường hợp, chế độ này tỏ ra
khá bất tiện.
Một phát minh quan trọng khác lần đầu tiên được đưa vào trong hệ điều hành của
các máy tính thế hệ 3 là cơ chế phân chia thời gian (time sharing). Chế độ này thuờng áp
dụng đối với các máy tính nhiều người sử dụng (multi-user) thông qua các trạm cuối
(terminal). Mỗi trạm cuối thường có một màn hình và một bàn phím, người sử dụng giao
tiếp trực tiếp với máy tính qua hệ điều hành. Tốc độ làm việc của mỗi người đều rất chậm
so với khả năng của máy. Trong chế độ phân chia thời gian, hệ điều hành lần lượt cấp
CPU cho mỗi người sử dụng một khoảng thời gian nhất định. Nếu máy tính có tốc độ 1
triệu phép tính giây mà có 100 người sử dụng đồng thời, thì mỗi giây mỗi người có thể
được phục vụ 10.000 phép tính. Cơ chế này tăng hiệu suất sử dụng máy lên vài chục lần
nếu ta thấy rằng phần lớn những người làm việc từ terminal là gõ chương trình hoặc số
liệu từ bàn phím. Thời gian chờ giữa hai lần gõ phím máy tính của một người sử dụng đủ
để thực hiện được hàng trăm nghìn phép tính cho những người khác. Những người làm
việc với máy trong chế độ phân chia thời gian vẫn có cảm giác độc chiếm máy vì chu kỳ
phục vụ rất ngắn. Phương pháp tổ chức này thực sự nâng cao hiệu suất sử dụng máy
trong chế độ làm việc tương tác trực tiếp (interactive) vì nó phục vụ được nhiều người mà
không ảnh hưởng nhiều đến năng suất làm việc của mỗi người. Một số hệ điều hành cho
phép phối hợp đồng thời giữa các tiến trình chạy theo kiểu phân chia thời gian và một số
công việc xử lý theo lô.
Trong các hệ điều hành nhiêu người sử dụng, còn một vấn đề khác phải tính tới là
thẩm quyền của mỗi người trong hệ thống và bảo vệ không để tình trạng chương trình
này gây ra lỗi cho chương trình khác. Nếu không, việc sử dụng không đúng thẩm quyền
có nguy cơ gây mất thông tin hoặc gây lỗi cho hệ thống.
Học viện Công nghệ Massachuset (MIT), Bell Labs, General Electric đã phát triển
các hệ thống phân chia thời gian để hỗ trợ hàng trăm người sử dụng đồng thời cùng một
máy tính trên quy mô địa lý rộng. Thành công này đã mở đường xây dựng những hệ
thống máy tính có khả năng cung cấp dịch vụ tính toán rất mềm dẻo. Chỉ cần cắm
terminal vào những ổ nối là có thể làm việc với máy tính, điều mà trước đó không ai
tưởng tượng được. Một hệ điều hành với chế độ phân chia thời gian được xây dựng vào
thời kỳ đó là MULTICS (MULTiplexed Information and Computing Servive) có ý nghĩa
là " Thông tin được dồn kênh và dịch vụ tính toán trên máy tính". MULTICS có một ảnh
hưởng rất lớn đến các hệ điều hành sau này kể cả những hệ điều hành rất nổi tiếng như
VAX/VMS trên dòng mini VAX của DEC (Digital Equipment Company). MULTICS
cũng chính là tiền thân của hệ điều hành UNIX được sử dụng trong hầu hết các máy mini
và máy tính lớn (mainframe) ngày nay.
Hệ điều hành đa nhiệm
Như vậy hệ điều hành phân chia thời gian là một kiểu phát triển cao hơn của hệ
điều hành đa chương trình. Điểm mới là việc xử lý các chương trình là luân phiên chứ
không đợi xử lý xong chương trình này mới chuyển đên chương trình khác. Như vậy các
chương trình sẽ cùng tiến triển. Nếu không, không thể biết một chương trình phải chờ đến
bao giờ và nếu phải chờ một số công việc khác thực hiện xong thì việc thực hiện chương
trình đó còn có ý nghĩa nữa không. Ví dụ một máy tính của một đơn vị tên lửa phòng
không chạy hai chương trình, theo dõi đường bay của máy bay đối phương và liên lạc với
cơ quan chỉ huy thì ta thấy không thể sử dụng chế độ đa chương trình đơn giản được. Ta
cần vừa liên lạc vừa theo dõi được đường bay. Tính năng cùng tiến triển giúp cho nhiều
nhiệm vụ có thể thực hiện một cách có ý nghĩa. Chính vì lý do này mà hệ điều hành có cơ
chế phân chia thời gian còn gọi là hệ điều hành đa nhiệm (multi-task). Nói đúng hơn,
phân chia thời gian là cách thức để thực hiện chế độ đa nhiệm trên các máy tính chỉ có
một bộ xử lý.
Hệ điều hành nhiều người sử dụng
Như vậy về mặt lịch sử chế độ phân chia thời gian có nguồn gốc từ nhu cầu phục
vụ đồng thời nhiều người dùng theo kiểu tương tác trực tiếp. Sau này thậm chí chỉ có một
người dùng (như với máy vi tính) người ta cũng thực hiện chế độ đa nhiệm. Trong khi
chờ lấy thư trên Internet, người sử dụng vẫn có thể tranh thủ soạn thảo văn bản và vẫn có
thể nghe nhạc qua máy tính. Tuy nhiên vẫn có những điểm khác nhau giữa một hệ thống
đa nhiệm và một hệ thống nhiều người dùng đồng thời (Multi-user). Đương nhiên một hệ
thống nhiều người dùng phải là một hệ thống đa nhiệm. Điều khác là khi làm việc với
nhiều người sử dụng thì có vấn đề quản lý giao tiếp với nhiều người sử dụng ở nhiều trạm
cuối (terminal), có thể từ xa.
Windows/95 là hệ điều hành đa nhiệm nhưng không phải hệ điều hành nhiều
người sử dụng. Trong khi đó UNIX hoặc Windows/2000 là các hệ điều hành nhiều người
sử dụng và đương nhiên cũng là hệ điều hành đa nhiệm.
Bộ nhớ ảo
Trong thời kỳ các thế hệ các máy tính thế hệ 3 người ta cũng đưa vào hệ điều
hành một chế độ vận hành gọi là bộ nhớ ảo. Để máy tính có thể chạy được các chương
trình có kích thước lớn hơn bộ nhớ trong người ta tổ chức một cơ chế phân trang. Mỗi
trang bộ nhớ đều có độ dài như nhau. Một chương trình khi làm việc được hệ điều hành
cấp cho một số trang trong bộ nhớ. Như vậy chỉ một phần chương trình đang chạy có mặt
trong bộ nhớ trong, phần còn lại của chương trình vẫn nằm đĩa từ. Khi nào cần sử dụng
đến các lệnh đang nằm ở đĩa thì hệ điều hành tổ chức hoán chuyển (swap), ghi phần đang
nằm trong bộ nhớ trong lên đĩa và nạp phần chương trình cần thiết từ đĩa vào các trang
dành cho chương trình.
Các thống kê trong những năm 70 cho thấy với độ dài của trang là 512 từ máy thì
khả năng lệnh tiếp theo nằm trong 8 trang kế cận lên tới hơn 90%. Điều này có nghĩa là
nếu chia cho mỗi chương trình 8 trang thì hoạt động hoán đổi trang xảy ra không thường
xuyên và không làm chậm nhiều thời gian thực hiện chương trình. Kỹ thuật bộ nhớ ảo
còn được sử dụng cho tới ngày nay mặc dù hiện nay bộ nhớ trong của máy tính cũng rất
lớn, không chỉ trên máy tính lớn mà cả PC, không chỉ trên hệ điều hành UNIX mà cả các
hệ điều hành kiểu khác như Windows.

10.2.4. Hệ điều hành với máy tính thế hệ thứ 4.


Trong mục 3, chúng ta đã đề cập đến các máy tính thế hệ thứ 4 được xây dựng
dựa trên công nghệ mạch tích hợp mật độ cao VLSI. Có hai khuynh hướng phát triển vào
thời kỳ này: xây dựng các máy tính nhỏ - máy tính cá nhân và xây dựng các máy tính
mạnh - siêu máy tính.
Hệ điều hành cho máy tính cá nhân
Với máy vi tính, hệ điều hành có những hướng phát triển ưu tiên mới: đó là tính
năng thân thiện (user-friendly) vì đối tượng sử dụng thường là những người không
chuyên nghiệp. Một số hệ điều hành nổi tiếng trong thời kỳ này là DOS, WINDOWS trên
các máy dòng PC với bộ xử lý Intel, MAC/OS trên các máy dòng Macintosh với bộ xử lý
Motorola.
Hệ điều hành DOS (Disk Operating System) được xây dựng từ những năm 80 cho
họ máy PC và đuợc sử dụng rộng rãi suốt thập kỷ 80 và đầu thập kỷ 90 cho đến khi bị
Windows thay thế. Ta tóm tắt một số đặc điểm chính của hệ điều hành DOS:
ƒ DOS là một hệ điều hành đơn chương trình và cá nhân, theo đó mỗi lúc chỉ có
một chương trình của người sử dụng được thực hiện trên máy.
ƒ DOS tổ chức thông tin trên đĩa từ theo các đơn vị quản lý gọi là file. Các file được
tổ chức theo một cấu trúc phân cấp có dạng cây gọi là cấu trúc thư mục. Đĩa chứa
thư mục gốc, mỗi thư mục có quyền chứa nhiều thư mục khác. Các file có thể
nằm ở một thư mục cấp nào đó.
ƒ Giao tiếp giữa người và máy theo kiểu lệnh. Ví dụ muốn xoá một file có tên là
GPT.PAS trên đĩa C ta gõ vào bàn phím lệnh DEL C:GPT.PAS sau đó bấm phím
↵ (phím Enter)
ƒ Về chức năng, trên DOS ta có thể thực hiện được những công việc như: tổ chức
thư mục (tạo mới, xoá, di chuyển từ thư mục này tới thư mục khác, xem danh mục
các file của một thư mục), tổ chức file (tạo bản sao trong các thư mục khác nhau,
xóa, xem nội dung), thực hiện các chương trình, đặt chế độ làm việc (đặt cấu hình
hệ thống, đặt thời gian), tổ chức xử lý theo lô... Các ứng dụng trên DOS được xem
như một lệnh. So với các hệ điều hành trước đó thì DOS rất dễ sử dụng.
Windows cũng là một hệ điều hành nổi tiếng cho các máy PC vì phong cách giao
tiếp theo kiểu đồ hoạ rất thân thiện. Nếu trong môi trường DOS, giao diện của các phần
mềm do chính chương trình ứng dụng tạo ra thì trong windows, giao diện tiêu chuẩn
được hỗ trợ ngay ở mức hệ điều hành. Kiểu giao tiếp với các biểu tượng (icon) thực đơn
trải xuống (pulldown menu), cửa sổ ứng dụng (window), hộp thoại để đặt tham số (dialog
box) và cơ chế chỉ định bằng chuột (mouse) đã trở thành chuẩn cho giao tiếp đồ hoạ cho
đến ngày nay.
Thực ra hệ điều hành thực hiện thành công giao tiếp theo kiểu này đầu tiên không
phải là Windows của Microsoft mà là MAC/OS trên họ máy Macintosh của hãng Apple
ngay từ năm 1985. Microsoft chỉ là người đi sau, thực hiện lại và cải tiến các ý tưởng đã
được Apple sử dụng trong dòng máy Macintosh.
Cơ chế plug and play
Một tính năng quan trọng được đưa vào hệ điều hành các máy vi tính là cơ chế
plug & play (“cắm và chạy” – cũng được hiểu là “cắm vào là chạy”). Thị trường thiết bị
ngoại vi hết sức phát triển đã trở thành một nỗi phiền phức cho người sử dụng. Mỗi một
thiết bị ngoại vi của một hãng đòi hỏi một phần mềm điều khiển riêng. Khi cài đặt, nhiều
khi các thiết bị đó xung đột nhau làm tê liệt hệ thống. Một khó khăn khác là người sử
dụng bình thường thường không hiểu những tính năng cũng như thuật ngữ kỹ thuật nên
trong nhiều trường hợp không dễ cài đặt được ngoại vi mới. Điều đó dẫn đến các hãng
viết hệ điều hành phải đưa vào hệ điều hành khả năng tự nhận dạng thiết bị ngoại vi mới
và tự cài đặt các chương trình điều khiển ở mức tự động hoá cao nhất có thể. Điều này
đặt ra hai vấn đề: thứ nhất, phải thiết lập các tiêu chuẩn cho thiết bị ngoại vi; thứ hai: hệ
điều hành phải có khả năng phát hiện ra các thiết bị mới trong tình trạng mới khởi động
máy hoặc máy đang làm việc. Nếu thấy các thiết bị mới, cần bổ sung ngay lập tức các
chương trình điều khiển mới mà thực chất là các thành phần mới của hệ điều hành để
giám sát và phối hợp hoạt động với các thiết bị này.
Hệ điều hành của các máy tính lớn
Đối với các dòng máy lớn như mini và mainframe thì hệ điều hành chủ đạo vẫn là
UNIX. Như đã nói, UNIX là sự kế thừa của MULTICS. Thực tế MULTICS đã thất bại vì
nó có quá nhiều tham vọng so với khả năng kỹ thuật đương thời. Có người đã so thất bại
của MULTICS với thất bại của Babbage chế tạo máy tính ở đại học Cambridge đầu thế
kỷ thứ 19. Ken Thompson, một trong những thành viên chủ chốt xây dựng MULTICS đã
quyết định viết lại hệ điều hành này trên máy PDP-11. Thay vì dùng PL/1 để viết cho
MULTICS, ông đã xây dựng một ngôn ngữ lập trình thật hiệu quả - đó chính là ngôn ngữ
C được sử dụng rộng rãi ngày nay. Tên ban đầu hệ điều hành này là UNICS còn mang
dấu ấn của MULTICS nhưng tỏ ra khiêm tốn hơn (UNiplexed Information and
Computing Servive). Từ này được phát âm giống như UNIX nên sau này mọi người gọi
luôn hệ điều hành này là UNIX. Kết quả thành công hơn mức trông đợi. Thực tế sau này
UNIX thay thế hẳn MULTICS và được sử dụng cho rất nhiều loại máy kể từ máy vi tính
đến siêu máy tính. Sau đây là một số nét chính về hệ điều hành UNIX.
ƒ Thừa hưởng những tính năng có từ MULTICS, ngay từ đầu UNIX đã được thiết
kế là một hệ điều hành đa nhiệm và nhiều người dùng với cơ chế phân chia thời
gian. Do quan niệm có nhiều người dùng nên nó có cơ chế kiểm soát thẩm quyền
nghiêm ngặt để đảm bảo an toàn cho mỗi chương trình cùng chạy trên máy tính.
ƒ Hệ thống file của UNIX cũng được phân cấp theo một cây thư mục có các thuộc
tính để kiểm soát thẩm quyền: quyền đọc, quyền sửa, quyền thực hiện cho bản
thân người tạo ra file, nhóm người sử dụng và cho những người khác.
ƒ UNIX cung cấp nhiều tiện ích dưới dạng các lệnh. Chúng bao gồm: các lệnh thao
tác với file và thư mục, các phương tiện để lọc, các phương tiện lập trình, các hệ
soạn thảo băn bản, các lệnh để quản trị hệ thống. Chuẩn POSIX (Portable
Operating System Interface) 1003.2 của Hội đồng tiêu chuẩn của IEEE đã quy
định cú pháp và ngữ nghĩa của khoảng 100 lệnh UNIX. Các phiên bản UNIX sau
này mặc dù có nhiều sáng tạo riêng nhưng nói chung đều tuân thủ POSIX.
UNIX thực ra bắt đầu xuất hiện với các máy tính thế hệ 3 và có nhiều phiên bản,
ngoài phiên bản đầu viết cho PDP 11, sau này còn có những phiên bản UNIX System V
của AT&T, phiên bản UNIX của Đại học Berkerley với những tính năng mới như tính
năng mạng theo giao thức TCP/IP hay bộ nhớ ảo cho phép máy tính có thể thực hiện các
chương trình lớn hơn bộ nhớ vật lý của máy . Chính vì UNIX dùng TCP/IP nên người ta
còn coi như UNIX đã khai sinh ra Internet.
Ngày nay hầu hết các máy tính lớn đều sử dụng UNIX. SOLARIS của SUN, AIX
của IBM, Alpha UNIX của DEC. HP Unix của Hewlette Parkard đều là các phiên bản
khác nhau của hệ điều hành UNIX. UNIX cũng được dùng trên các máy tính cá nhân như
các phiên bản SOLARIS trên PC, SCO UNIX và gần đây là LINUX. Đặc biệt LINUX là
một hệ điều hành mã mở, tạo điều kiện để những người quan tâm có thể cùng tham gia
phát triển UNIX. LINUX đã nhận được sự hỗ trợ của rất nhiều hãng máy tính và các hãng
phần mềm lớn và là một hệ điều hành trên máy tính cá nhân rất có triển vọng.
Ngoài giao diện lệnh của UNIX truyền thống, người ta cũng sử dụng một giao
diện đồ hoạ là X - WINDOW.
Do khuôn khổ của một giáo trình tin học cơ sở, ở đây ta sẽ không bàn thêm về
những tiến triển của hệ điều hành như hệ điều hành song song hay trong khung cảnh
mạng máy tính như hệ điều hành mạng (network operating system), hệ điều hành phân
tán (distributed operating system).
MODULE 11. PHẦN MỀM MÃ NGUỒN MỞ
11.1. Định nghĩa phần mềm mã nguồn mở
Phần mềm mã nguồn mở (PMNM) là những phần mềm được cung cấp dưới dạng
mã nguồn, không chỉ miễn phí tiền mua mà chủ yếu là miễn phí về bản quyền. Do có
được mã nguồn của phần mềm và có quy định về giấy phép PMNM (ví dụ General Public
Licence – GPL), người sử dụng có quyền sửa đổi, cải tiến, phát triển và nâng cấp theo
một số nguyên tắc chung đã được qui định mà không cần phải xin phép ai. Điều này
trước đây không được phép làm đối với các phần mềm nguồn đóng (tức là phần mềm
thương mại).
PMNN do một người, một nhóm người hay một tổ chức phát triển và đưa ra phiên
bản đầu tiên cùng với mã nguồn, công bố công khai cho cộng đồng, thường là trên
Internet. Trên cơ sở đó các cá nhân tham gia sử dụng sẽ đóng góp phát triển, sửa các lỗi
(nếu có) và bổ sung để hoàn thiện sản phẩm cho các phiên bản tiếp theo.
Tuy nhiên, người ta cũng được phép kinh doanh PMNM trên một số mặt. Nhà
cung cấp phần mềm nguồn mở có quyền yêu cầu người sử dụng phải trả một số chi phí về
các dịch vụ bảo hành, huấn luyện, nâng cấp, tư vấn, v.v. tức là những dịch vụ thực sự đã
thực hiện để phục vụ người sử dụng nhưng không được bán các mã nguồn mở vì nó là tài
sản trí tuệ của chung, không phải là tài sản riêng của một nhà cung cấp nào.
Xét về phương diện quyền sử dụng, phần mềm có nhiều loại giấy phép (licence)
như sau:
ƒ Phần mềm thương mại (Commercial Software) là phần mềm thuộc bản quyền
của tác giả hoặc các hãng phần mềm, chỉ được cung cấp dưới dạng mã nhị
phân, người dùng phải mua và không có quyền bán lại. Windows, Microsoft
Office, Oracle là các ví dụ về phần mềm thương mại.
ƒ Phần mềm thử nghiệm giới hạn (Limited Trail Software) là các phiên bản giới
hạn của phần mềm thương mại được cung cấp miễn phí với mục đích thử
nghịêm, giới thiệu sản phẩm. Loại này có thể có giới hạn về mặt chức năng,
tính năng mà còn giới hạn về thời gian được sử dụng. Chẳng hạn một phần
mềm cho phép người dùng lấy từ Internet về dùng thử nhưng chỉ cho giới hạn
sử dụng trong vòng 30 ngày, sau đó một khoá cài đặt ngầm sẽ vô hiệu hoá
phần mềm.
ƒ Phần mềm chia sẻ (Shareware) là loại phần mềm có tính năng như phần mềm
thương mại và được phân phối tự do nhưng có một số giấy phép khuyến cáo
các cá nhân hoặc tổ chức được mua theo những điều kiện cụ thể . Ví dụ phần
mềm để nén dữ liệu Winzip là phần mềm chia sẻ.
ƒ Phần mềm phi thương mại - phần mềm tự do (Free ware) là các phần mềm
được dùng tự do không phải trả tiền nhưng không có nghĩa là không phải tuân
thủ bất cứ điều kiện nào. Trong loại phần mềm này có loại phần mềm dưới
dạng mã nhị phân có thể cho không. Cũng có loại phần mềm cho không dưới
dạng mã gốc. Loại này gọi là phần mềm mã nguồn mở (PMNM).
Trên thế giới đã có hàng ngàn sản phẩm PMNM, nhưng hiện nay phổ biến nhất là
hệ điều hành nguồn mở LINUX (hoặc với tên gọi đầy đủ hơn là GNU/LINUX) và
FreeBSD. PMNM dùng cho các ứng dụng văn phòng có Open Office, trình duyệt Web có
FireFox, phần mềm máy chủ Web có Apache, hệ quản trị cơ sở dữ liệu có MySQL và
PostgreSQL, ứng dụng Java cho máy chủ có Jakarta và ngoài ra còn có các ngôn ngữ lập
trình nguồn mở như Perl và Python. Nói đến mã nguồn mở, người ta hay nghĩ đến các sản
phẩm chạy trên hệ điều hành LINUX. Thực ra thì không phải như vậy, trên Windows
cũng có rất nhiều PMNM.

11.2. Những ưu việt của PMNM


- Chi phí thấp: PMNM được dùng miễn phí về bản quyền và nếu có chi phí thì
cũng chỉ là chi phí cho đóng gói sản phẩm và dịch vụ cho sản phẩm. Vì vậy, chi phí rất
thấp so với các phần mềm thương mại. Ví dụ, chi phí cho mua bản quyền sử dụng một bộ
Hệ điều hành Window XP và ứng dụng Văn phòng của Microsoft vào khoảng 560USD
((1) Theo giá của Châu Âu cuối năm 2002) trong khi đó PMNM cho Hệ điều hành Linux
và ứng dụng văn phòng PMNM không phải chi trả phí bản quyền. Nhiều phần mềm mã
nguồn mở cho quản trị cơ sở dữ liệu, trang chủ Web, quản lý thư tín điện tử… tuy hơi
khó dùng hơn phần mềm thương mại (do chủ yếu chưa có đủ tài liệu hướng dẫn sử dụng,
và không được hỗ trợ đầy đủ) nhưng được phép tải miễn phí từ Internet về để sử dụng,
trong khi đó những phần mềm thương mại như vậy thường có giá từ hàng nghìn đến hàng
chục nghìn USD.
- Độc lập: PMNM không bị lệ thuộc vào bất kỳ một nhà cung cấp nào. Sự độc lập
này là rất quan trọng vì các cơ quan Nhà nước đều cần có những giải pháp chung, chuẩn
hóa và không muốn phụ thuộc vào các sản phẩm sở hữu riêng của các nhà cung cấp.
- Làm chủ công nghệ, đảm bảo an toàn và riêng tư: Sự sẵn sàng của phần mềm
nguồn mở và việc có quyền thay đổi chúng cũng là một yếu tố quan trọng. Đó không chỉ
vì do các nhu cầu phát triển đặc thù mà còn vì do không có các “hộp đen” khi sử dụng
PMNM. Hiểu rõ hệ thống làm việc như thế nào là yêu cầu cơ bản của các cơ quan công
quyền. PMNM không có các “cửa hậu”, không có gián điệp điện tử lẩn ở đâu đó trong
phần mềm. Do nắm được mã nguồn nên những người sử dụng và những nhà phát triển
làm chủ được phần mềm, có khả năng thay đổi, bổ sung và phát triển các ứng dụng theo
yêu cầu riêng của mình, điều mà phần mềm thương mại không đáp ứng được.
- Tính thích ứng và sáng tạo: Thực tế đã cho thấy rất ít chương trình có thể tồn
tại không cần thay đổi, nâng cấp trong một thời gian dài. Vì thế, khả năng cho phép lập
trình viên xác định và sửa các lỗi cũng như thích ứng phần mềm với các yêu cầu mới phát
sinh là một vấn đề rất quan trọng. Sự sẵn sàng có mã nguồn và có quyền thay đổi chúng
giúp cho công việc này dễ dàng hơn. Việc có được mã nguồn cũng giúp những nhà lập
trình sáng tạo ra phần mềm riêng của mình, đặc biệt đối với thế hệ trẻ và các doanh
nghiệp phục vụ các yêu cầu đa dạng của khách hàng.
- Chất lượng tin cậy: Nhiều phần mềm có chất lượng và độ tin cậy cao. Các
PMNM khi đã hoàn thành thông thường sẽ được thử nghiệm, đánh giá, phát hiện lỗi và
hoàn thiện bổ sung bởi nhiều rất nhiều nhà phát triển khác nhau trên toàn thế giới và công
việc này cũng không bị áp lực về thời gian. Các nhà sản xuất phần mềm thương mại lại
thường công bố thời điểm ra đời của một phiên bản nào đó rồi sau đó buộc phải tung ra
thị trường những sản phẩm vẫn còn có lỗi để giữ đúng thời hạn đã công bố.
- Tuân thủ các chuẩn: PMNM thông thường được phát triển tuân thủ theo các
chuẩn tốt hơn. Đó là vì lợi ích của các nhà phát triển tự do cần thực hiện được những sản
phẩm có tính liên tác tốt nhất. Để làm được việc đó họ không sử dụng các chuẩn sở hữu
riêng. Sự tìm kiếm liên tục các chuẩn dùng chung làm cho các PMNM có khả năng liên
tác lâu dài. Phần mềm thương mại có thể có những đặc tính rất tốt nhưng do một công ty
tạo ra và đôi khi để đảm bảo hiệu quả, các công ty tạo ra các chuẩn riêng của mình.
Chẳng hạn VBscript được dùng viết các ứng dụng WEB của Microsoft không chạy được
trên các trình duyệt khác nhưng lại rất tốt đối với các ứng dụng theo kiểu Windows
- Không bị hạn chế về quyền sử dụng: Quyền được dùng PMNM dưới bất kỳ
hình thức nào làm yên tâm mọi nhà phát triển, nhà quản trị và người sử dụng. Do PMNM
không bị giới hạn cho người sử dụng nên các cơ quan công quyền yên tâm cung cấp cho
số lượng không giới hạn người sử dụng theo mục đích riêng của mình.
- Tính lâu dài: PMNM không có một chủ sở hữu duy nhất là lý do bảo đảm để
không ai có thể làm ngừng hoặc “giết chết” sản phẩm này. Việc sản phẩm bị ngừng hay
bị “giết chết” dễ dàng xảy ra đối với phần mềm thương mại như ở trong các trường hợp
sau: công ty bị phá sản, hoặc sát nhập, hoặc bán lại cho một công ty khác, hoặc thay đổi
chiến lược và phương hướng kinh doanh. Do đó người sử dụng PMNM sẽ không bị lo
ngại xảy ra trường hợp bị bắt buộc chuyển sang giải pháp khác như đối với phần mềm
thương mại khi nhà cung cấp phần mềm thương mại quyết định ngừng hỗ trợ kỹ thuật.
- Tự do: Các kết quả phát triển PMNM theo yêu cầu của cộng đồng sẽ được
quyết định bởi “đa số dân chủ”. PMNM không bao giờ bắt buộc chỉ có một cách cài đặt.
Người sử dụng luôn luôn chỉ cài đặt những phiên bản hoàn chỉnh và ổn định, bỏ qua các
phiên bản phát triển chưa ổn định. PMNM cũng cho phép mỗi người sử dụng tạo ra và
duy trì những phiên bản đặc thù theo yêu cầu riêng của mình.
- Phát triển dễ dàng: Những dự án và phát triển phần mềm mới có thể được thực
hiện mà không cần phải xin phép ai trước khi triển khai. Việc này phù hợp với các kỹ
thuật phát triển mới: tạo ra giải pháp bằng cách tập hợp nhiều đối tượng đã có mà không
sợ rủi ro bị ngừng giữa chừng vì những hạn chế pháp lý và những qui định về sở hữu trí
tuệ đối với phần mềm.

11.3. Những hạn chế của PMNM


Cùng với những ý kiến ủng hộ việc đẩy mạnh sử dụng PMNM, cũng còn có nhiều
ý kiến e ngại dùng các phần mềm này. Đó là những lí do hạn chế chính của PMNM như
sau:
- Chưa có hỗ trợ kỹ thuật tin cậy: Nếu người sử dụng gặp sự cố, tuy họ tin sẽ
nhận được sự giúp đỡ của cộng đồng nguồn mở quốc tế, nhưng không ai chịu trách nhiệm
hỗ trợ đầy đủ. Về mặt pháp lý, không ai có nghĩa vụ bắt buộc phải cung cấp các dịch vụ
hỗ trợ PMNM cho người sử dụng như trong trường hợp các phần mềm thương mại.
- Số các thiết bị hỗ trợ PMNM còn hạn chế: Các máy in, máy vẽ, bìa màn hình
và các thiết bị ngoại vi khác đều cần có các chương trình điều khiển (drivers) riêng. Có
thể phải chờ một thời gian dài nữa cộng đồng phần mềm nguồn mở quốc tế mới phát triển
đầy đủ các chương trình điều khiển này.
- Các ứng dụng chuyên nghiệp trên nền PMNM còn ít: Số các ứng dụng
chuyên nghiệp sẵn sàng sử dụng trên nền PMNM còn ít so với các ứng dụng trên
Windows hoặc trên Unix sở hữu riêng.
- Thiếu các hướng dẫn sử dụng: Nếu không có các chuyên gia tư vấn chuyên
nghiệp hoặc các kiến trúc sư hệ thống, người sử dụng và ngay cả người quản trị hệ thống
CNTT sẽ khó tìm kiếm giải pháp trong số hàng ngàn giải pháp PMNM đã có sẵn để phục
vụ cho mục đích cụ thể của mình.
- Không có cam kết bắt buộc phải hoàn thành một sản phẩm cụ thể: Có
những dự án về PMNM được phê duyệt đầu tư nhưng không thể phát triển được hoặc bị
đình trệ vì không thể tìm được kinh phí đầu tư hoặc không đủ lập trình viên từ các trường
đại học và tổ chức khác tham gia. Thực ra, đây cũng là một vấn đề đối với các phần mềm
thương mại. Cũng xảy ra các trường hợp tương tự khi dự án đã tương đối được phổ biến,
sự phát triển tiếp tục của dự án đó có thể lại do một nhóm khác đảm nhiệm.
- Có một số hạn chế đối với các hệ thống cao cấp: Trừ một số môi trường rất
chuyên dụng như các máy tính lớn IBM mainframe, phần lõi của hệ thống nguồn mở hiện
nay vẫn còn bị hạn chế đối với các hệ thống quản lý chuẩn của doanh nghiệp như hỗ trợ
đa xử lý và quản lý nhật ký.
- Năng lực hạn chế của người sử dụng: Các hệ điều hành nguồn mở hiện nay
đều dựa theo hệ điều hành Unix, nhưng hầu hết người sử dụng trong các cơ quan hành
chính cũng như doanh nghiệp thậm chí cả những người quản trị hệ thống CNTT chưa có
kiến thức cần thiết về Unix. Do đó đôi khi phải đào tạo lại từ đầu và đi từ đào tạo cơ bản.
Chi phí cho đào tạo việc này sẽ lại là đáng kể.
Trong một số trường hợp, tổng hợp những hạn chế nêu trên cũng làm mất đi ưu
thế về việc không phải trả phí về bản quyền nhưng lại làm tăng tổng sử dụng phần mềm .
Trên đây là những thuận lợi và khó khăn của việc dùng PMNM trong các cơ quan
công quyền và doanh nghiệp theo kinh nghiệm của các nước. Đối với nước ta cần nhận
thức đúng đắn thuận lợi và khó khăn đối với từng vấn đề cụ thể để đề xuất một giải pháp
đúng đắn và khả thi.
12. MẠNG MÁY TÍNH
12.1. Khái niệm về mạng máy tính
Nhiều ứng dụng có bản chất phân tán về địa lý nhưng lại cần chia sẻ các tài nguyên
chung. Tài nguyên có thể là thiết bị (chẳng hạn nhiều máy tính muốn dùng chung máy
in), cũng có thể là phần mềm hay dữ liệu. Một công ty đa quốc gia có các chi nhánh ở
nhiều nước và hàng ngày ở trụ sở chính người ta cần nắm được thông tin kinh doanh ở tất
cả các chi nhánh. Có rất nhiều ví dụ tương tự. Vì vậy, ngay từ cuối những năm 60, người
ta đã có nhu cầu kết nối máy tính với nhau thành mạng để có thể chia sẻ tài nguyên.
Mạng máy tính là một tập hợp các máy tính nối với nhau bằng những kênh truyền
vật lý, theo một kiến trúc nhất định. Khi nói đến mạng máy tính, chúng ta muốn nói tới
các khía cạnh sau:
ƒ Các thiết bị đầu -cuối (end system) là các thiết bị tham gia vào mạng để khai thác
các tài nguyên chung không chỉ là máy tính, mà có thể là điện thoại di động (đối
với mạng điện thoại), các thiết bị cầm tay như PDA.... Người ta cũng dùng một
thuật ngữ khác để gọi thiết bị đầu-cuối trong mạng : host. Trong một số tài liệu
host được định nghĩa là một máy tính chạy phần mềm của người sử dụng, đặt
trong mạng để chia sẻ tài nguyên trên mạng. Mỗi host hình thành một nút của
mạng.
ƒ Các kênh vật lý, là môi trường truyền dẫn dữ liệu (media), thông qua đó các thiết
bị đầu cuối khai thác tài nguyên chung của mạng. Môi trường truyền dẫn có thể là
hữu tuyến như dây cáp đồng trục, cáp xoắn, cáp quang. Môi trường truyền dẫn có
là vô tuyến như sóng vô tuyến điện, hồng ngoại.
ƒ Cách đấu nối các thiết bị đầu-cuối về phương diện hình học, được gọi là tô pô của
mạng (topology) hoặc cũng có thể gọi là sơ đồ đấu nối.
ƒ Giao thức của mạng (protocol): đó là các quy ước truyền thông để các máy tính
trong mạng có thể liên lạc, trao đổi thông tin vơi nhau.

12.2. Môi trường truyền dẫn


Sau đây, chúng ta sẽ nêu một số môi trường truyền dẫn dữ liệu phổ biến đối với
mạng máy tính.
Cáp nối. Có nhiều loại cáp được dùng với các tính năng rất khác nhau như cáp
quang, cáp xoắn, cáp đồng trục. Trong những mạng không dây có thể không cần cáp nối
nhưng khi đó phải có các thiết bị thu phát vô tuyến.

12.2.1. Cáp xoắn


Cáp thông dụng nhất hiện nay là cáp
xoắn không bọc kim UTP (Unshielded Twist
Pair) . Cáp này có 4 đôi dây xoắn, có giắc cắm
tương tự như giắc cắm dây điện thoại dùng để
nối máy tính vào mạng. Giắc cắm này có 8
đầu nối cho 4 đôi dây xoắn gọi là giắc RJ-45.

12.2.2. Cáp đồng trục


Cáp đồng trục có hai dây, một dây là lõi đồng, dây thứ hai là một lưới kim loại
cách điện với lõi bới một lớp cách điện. Ngoài cùng là một lớp vỏ bảo vệ. Cách bố trí như
vậy giúp cáp đồng trục có khả năng chống
nhiễu tốt. Cáp đồng trục cũng có nhiều loại.
Loại cáp béo (thick cable) có vỏ màu vàng
thường dùng để nối ở khoảng cách xa (khoảng
500m). Cáp gầy (thin cable) thường dùng để
nối trong khoảng cách 200 m trở lại sử dụng
các đầu cắm nối chữ T (T-connector). Trước
đây cáp gầy được dùng nhiều để thiết lập các
mạng theo kiểu bus. Từ khi có cáp xoắn,
người ta ít sử dụng cáp gầy.

12.2.3. Cáp quang


Hình 12.2. a) Cấu trúc của áp đồng trục b)
Các thành tựu của công nghệ quang đầu cắm nối chữ T để nối máy tính vào mạng
học hiện nay đã cho phép truyền dữ liệu bằng c) lược đồ nối
các xung ánh sáng. Một xung ánh sáng có thể
dùng để biểu diễn bit 1, sự không có xung có
thể biểu biễn bit 0. Ánh sáng nhìn thấy được
có tần số khoảng 108 MHz, vì vậy dải thông
của hệ thống kênh truyền quang học là cực
lớn. Một hệ thống kênh truyền quang học bao
gồm 3 thành phần: môi trường truyền, nguồn
sáng và bộ cảm nhận ánh sáng.
ƒ Môi trường truyền là sợi thuỷ tinh cực Hình 12.3. Cáp quang đa mode, do thành sợi
mảnh hoặc sợi silica. cáp quang phản xạ toàn phần nên ánh sáng có
thể phản xạ nhiều lần giữa các thành ống và có
ƒ Nguồn sáng là LED (Light Emitting
thể truyền trên cáp bị uốn cong
Diode) hoặc đi-ốt laser (Laser diode).
Cả hai thiết bị này phát ra xung ánh
sáng khi truyền qua nó một xung dòng điện.
ƒ Bộ cảm nhận ánh sáng (detector): là photodiode, nó sẽ phát ra xung dòng điện khi
có xung ánh sáng chiếu vào.
Có hai loại sợi quang: sợi quang đa mode (multimode fiber) sử dụng nguyên lý
phản xạ toàn phần, tia sáng khi truyền bị phản xạ trong
thành ống và có thể đi theo các sợi quang bị cong như
minh hoạ trong hình 12.3. Đối với cáp quang đa mode,
người ta có thể dùng LED để phát ánh sáng. Hiện nay
giữa các khu nhà của Đại học Quốc gia Hà Nội đều nối
với nhau bằng cáp quang đa mode. Thường cáp quang
đa mode có nhiều sợi quang.
Cáp quang đơn mode. Nếu đường kính sợi quang nhỏ bằng đúng 1 bước sóng ánh
sáng thì sợi quang hoạt động như một ống dẫn sóng, không có sự phản xạ tại bề mặt mà
tia sáng sẽ đi bên trong dù cáp có cong. Trong sợi quang loại này nguồn sáng phải là đi-ốt
laser (đắt hơn LED). Cáp quang có thể truyền tia laser 100 km mà không cần sử dụng các
thiết bị phát chuyển tiếp. Cáp quang Bắc-Nam chạy dọc theo đường quốc lộ số 1 là cáp
quang đơn mode

12.2.4. Sóng vô tuyến


Sóng vô tuyến cũng là một môi trường truyền số liệu. Những ví dụ về môi trường
này có thể kể đến như:
ƒ Mạng vệ tinh. Các vệ tinh có thể phát đồng thời cho rất nhiều thiết bị thu.
ƒ Mạng điện thoại di động có thể phủ sóng trên một khu vực rất lớn như lãnh thổ
một quốc gia.
ƒ Mạng không dây trong phạm vi hẹp. Người ta dùng các thiết bị thu phát sóng (gọi
là access point). Loại thiết bị này chỉ cho sử dụng trong phạm vi khoảng 100 m và
hiện nay đang được dùng rất phổ biến ở các cơ quan, trường học, quán cafe
Internet. Chuẩn 802.11g hiện cho truyền thông với tốc độ tối đa là 54 Mbít/s.
Các máy tính muốn thu phát với thiết bị không dây cũng cần phải có thiết bị thu
phát. Hình 12.5. mô tả một card mạng không dây. Một số máy xách tay (notebook) hiện
nay đã hỗ trợ công nghệ Centrino cho phép truy nhập trực tiếp các mạng không dây.
12.3. Card giao tiếp mạng (Network Interface Card)
Để nối máy tính vào
mạng, máy tính phải có một
thiết bị giao tiếp với mạng
thường được gọi ngắn là
card mạng. Một số máy tính
ngày nay tích hợp sẵn thiết
bị giao tiếp mạng trên bản
mạch chủ (mainboard). Một
số máy khác thì không có
sẵn, người dùng phải mua thêm để cắm vào máy tính.

12.3. Tô pô của mạng.


Kết nôi điểm - nhiều điểm, còn gọi là phát tán (broadcast). Từ một điểm, truyền
dữ liệu đồng thời tới nhiều điểm thu, thường dùng với các mạng vô tuyến, như truyền từ
vệ tinh, truyền hình cáp trong các mạng thành phố (metropolitain network).
Kết nối điểm - điểm: nối trực tiếp từ một host này tới một host khác. Có một vài
kiểu kết nối điểm - điểm điển hình
ƒ Tô pô nối tiếp (Bus Topology): các host nối với nhau theo một đường, host nọ
đấu nối trực tiếp với một host kế tiếp. Đây là kiểu kết nối thường dùng với cáp
đồng trục. Nhược điểm của kiểu
kết nối này là một khi có sự cố
12.1
Hình Cáp

Hình 12.6. Tô pô bus


ở một điểm nút bất kỳ đều gây ra tê liệt mạng
ƒ Tô pô hình sao (Star Topology), các máy đấu chung vào một đầu mối. Đầu mối
này là một bộ dồn kênh có các ổ cắm sẵn gọi là Hub. Ưu điểm của kiểu nối này là
nếu dây nối với một máy nào đó bị đứt cũng không gây ảnh hưởng đến các máy
khác trong mạng.
ƒ Tô pô vòng ( Wired Ring Topology). Các
máy tính nối vào một tuyến dây khép kín
như hình vẽ. Dữ liệu truyền từ máy này tới
máy khác phải chuyển qua các máy trung HUB
gian.

ƒ Trên đây là 3 kiểu nối cơ bản, thích hợp
cho các mạng cục bộ nhỏ và đơn giản. Với
các mạng phức tạp người ta có thể sử dụng
cách nối hỗn hợp, chẳng hạn dùng các bộ
chuyển mạch để tạo các kiến trúc phân cấp
hình cây, chỗ này có thể dùng tôpô kiểu
bus, chố khác có thể dùng tôpô hình sao. Hình 12.7. Tô pô hình sao
Để mở rộng quy mô mạng cục bộ có thể
dùng các thiết bị chuyển tiếp ...

12.4. Giao thức mạng


Để các thiết bị trên mạng có thể liên hệ được
với nhau, cần phải có các quy ước định mà các host
phải tuân thủ trong truyền thông mà chúng được gọi
là các giao thức (protocol) của mạng.
Một số các quy ước sau này có thể được
công nhận dưới dạng các chuẩn. Có một số chuẩn Hình 12.8. Tô pô vòng
được các uỷ ban tiêu chuẩn công bố nhưng cũng có
một số chuẩn được hình thành do người sử dụng thừa nhận rộng rãi mà không có một uỷ
ban nào thông qua. Xét về lĩnh vực có liên quan đến truyền thông, có thể kể đến một số
các loại chuẩn như:
ƒ Chuẩn cơ, chẳng hạn các quy định liên quan đến hình dạng, kích thước, tính chất
vật liệu của các giắc cắm
ƒ Chuẩn điện, chẳng hạn mức điện áp nào được coi là ứng với bit 1, mức điện áp
nào được coi là ứng với bit 0.
ƒ Chuẩn thủ tục, đây là các chuẩn quan trọng nhất quy định logic trong truyền thông
và được thể hiện cụ thể bằng các phần mềm làm nền tảng cho giao tiếp. Chẳng
hạn cách đánh địa chỉ của các host trên mạng Internet, cách tổ chức các gói tin
truyền đi trên đường truyền v.v.

12.5. Mạng cục bộ

12.5.1. Phân loại mạng theo quy mô và mạng cục bộ


Quy mô địa lý của mạng tuỳ thuộc vào chính nhu cầu công việc và có ảnh hưởng
gần như quyết định đến kiến trúc mạng. Về quy mô, người ta thường xét đến 3 loại sau:
mạng cục bộ (Local Area Network viết tắt là LAN), mạng khu vực (Metropolitain Area
Network, viết tắt là MAN), mạng rộng (Wide Area Network, viết tắt là WAN).
Nếu liên kết thực hiện trong một phạm vi đường kết nối từ vài mét đến vài trăm
mét mà không cần phải dùng các trạm chuyển tiếp, dẫn đường cho thông tin thì ta có một
mạng cục bộ. Mạng cục bộ của các đại học lớn có thể có hàng trăm máy lớn và hàng chục
nghìn máy vi tính.
Nếu kết nối cần đến các đường viễn thông và thiết bị hướng dẫn hướng đi cho các
luồng tin thì ta có mạng rộng. Mạng rộng nói chung đuợc thiết lập từ nhiều mạng cục bộ
qua các đường truyền viễn thông và các thiết bị dẫn đường giữa các mạng cục bộ. Có
những mạng rộng có quy mô rất lớn thậm chí trên nhiều châu lục. Khi đó ta có mạng toàn
cầu (Global Area Network viết tắt là GAN). Internet là một mạng toàn cầu. Hệ thống đặt
chỗ máy bay hiện nay cũng là một mạng toàn cầu. Các công ty lớn cũng có thể thiết lập
những mạng toàn cầu của mình.
Còn mạng khu vực vốn là một loại mạng có kiến trúc tương đối đặc biệt được
dùng với những công việc như phát thanh và truyền hình số.

12.5.2. Các thành phần cơ bản của một LAN


ƒ Các máy tính, trong đó có các máy làm việc, còn gọi là máy trạm (workstation) và
một số máy cung cấp các dịch vụ mạng gọi là máy chủ cung cấp dịch vụ (server),
thường được gọi tắt là máy chủ. Các trạm làm việc có thể là các trạm câm (dump
terminal) chỉ có khả năng giao tiếp mà không có khả năng xử lý, cũng có thể là
các trạm thông minh theo nghĩa có khả năng xử lý độc lập. Cần phân biệt khái
niệm workstation nói ở đây với tư cách một điểm làm việc trong mạng với khái
niệm workstation hiểu là một máy độc lập có khả năng đồ họa cũng như tính toán
số rất mạnh thường chạy trên hệ điều hành UNIX.
ƒ Các máy muốn nối được vào mạng cần được trang bị thiết bị giao tiếp với mạng
(Network Interface Card viết tắt là NIC). Mỗi NIC đều có một địa chỉ khác nhau
giúp định vị chính xác các máy trong mạng. Ta cũng có thể nối vào mạng qua
đường điện thoại. Trong trường hợp này cần có một modem.
ƒ Các thiết bị ghép nối mạng. Ta sẽ mô tả tính năng của một số thiết bị ghép nối
mạng trong phần cuối của mục này.

12.5.3. Công nghệ mạng cục bộ


Đặc trưng công nghệ cơ bản trong mạng cục bộ là việc sử dụng đường truyền
chung. Tín hiệu từ một trạm đưa lên đường truyền sẽ được tất cả các trạm khác “nghe
thấy”. Một vấn đề khác là, nếu nhiều trạm cùng gửi tín hiệu lên đường truyền đồng thời
thì tín hiệu sẽ chồng lên nhau và bị hỏng. Vì vậy cần phải có một phương pháp tổ chức
chia sẻ đường truyền để việc truyền thông đựơc đúng đắn.
Có hai phương pháp chia sẻ đường truyền chung thường được dùng trong các
mạng cục bộ:
ƒ Truy nhập đường truyền một cách ngẫu nhiên, theo yêu cầu. Đương nhiên phải có
tính đến việc sử dụng luân phiên và nếu trong trường hợp do có nhiều trạm cùng
truyền tin dẫn đến tín hiệu bị chồng lên nhau thì phải truyền lại.
ƒ Có cơ chế trọng tài để cấp quyền truy nhập đường truyền sao cho không xảy ra
xung đột. Mạng theo giao thức token ring của IBM đối với topo ring thường dùng
một cơ chế thẻ bài (tocken) để kiểm soát truy nhập đường truyền. Máy tính nào
nhận được thẻ mới được truyền thông. Các thẻ sẽ luân phiên đi từ máy này sang
máy khác.
Sau đây là giao thức CSMA (Carrier Sense Multiple Access) – nhiều truy nhập
đồng thời có cảm nhận sóng mang được sử dụng rất phổ biến trong các mạng cục bộ.
Mỗi máy tính đều sử dụng card mạng để “nghe” tín hiệu trên đường truyền (tức là
cảm nhận sóng mang). Trước khi truyền cần phải nghe để biết đường truyền có rỗi
không. Nếu rỗi thi mới được truyền tin. Phương pháp này gọi là LBT (Listening before
talking). Nếu phát hiện đường truyền bận, máy tính sẽ phải phát lại. Có một số chiến lược
phát lại như sau:
ƒ Khi phát hiện đường truyền rỗi thì truyền ngay. Do vậy xác suất truyền khi kênh
rỗi là 1. Chính vì thế mà giao thức có tên là CSMA 1-kiên trì (CSMA 1-
persistent)
ƒ Giao thức CSMA 1- kiên trì tạo ra một nguy cơ là: khi có nhiều máy tính có nhu
cầu truyền tin thì việc mạng rỗi tạo ra một sự đồng bộ để tất cả các máy đang có
nhu cầu đều khởi động việc truyền tin. Do đó việc truyền tin sẽ gây xung đột trên
đường truyền. Vì vậy người ta cải tiến đi một chút thành giao thức CSMA không
kiên trì khác một chút. Trạm nghe đường, nếu đường truyền rỗi thì truyền, nếu
không rỗi thì ngừng nghe một khoảng thời gian ngẫu nhiên rồi mới khởi động lại
thủ tục truyền tin. Cách này có hiệu suất dùng đường truyền cao hơn vì giảm được
nguy cơ xung đột.
ƒ Giao thức CSMA p-kiên trì. Khi đã sẵn sàng truyền, máy tính nghe tín hiệu trên
đường, nếu đường rỗi thì thực hiện việc truyền với xác suất là p < 1 (tức là ngay
cả khi đường rỗi cũng không hẳn đã truyền, mà chỉ truyền với tỉ lệ p nào đó. Ví
dụ với p = 0,3 thì có nghĩa là trong 100 lần rỗi thì cũng chỉ thực hiện 30 lần truyền
tin). Đây là một cơ chế tạo cho các máy một tình trạng biết “kiềm chế nhu cầu”
khi không biết các máy khác có truyền hay không. Khi mạng có nhiều máy, việc
chọn một số p thích hợp sẽ giúp cho mạng đỡ bị xung đột.
Như vậy dù có áp dụng CSMA thì vẫn có khả năng xung đột. Hai máy đều thấy
đường rỗi và không biết gì về nhu cầu phát tin của
nhau, ngẫu nhiên cùng phát tin thì chắc chắn sẽ gây
xung đột trên đường truyền. Vì thế người ta tiếp tục
cải tiến CSMA là đưa vào cơ chế kiểm soát xung đột.
Khi gửi tin lên mạng, các máy vẫn tiếp tục “nghe” để
phát hiện có xung đột hay không. Nếu phát hiện thấy
xung đột, thì nó dừng ngay để tiết kiệm được thời
gian và tải của đường truyền. Chính vì vậy cơ chế
truyền này còn gọi là LWT (Listening While

Hình 12.9 Một HUB 8 cổng


Talking). Giao thức này gọi là CSMA có phát hiện xung đột (Carrier Sense Multiple
Access with Collision Detection viết tắt là CSMA/CD), dùng rộng rãi trong LAN.
Tổ chức IEEE đã chuẩn hoá giao thức CSMA/CD và gọi là chuẩn IEEE 802.3.
Hầu hết các card mạng trên các máy tính vi tính hiện nay là card theo chuẩn IEEE 802.3.
Trên mạng cục bộ còn một số giao thức truy nhập đường truyền khác có cơ chế
trọng tài tránh được xung đột như basic bitmap, token bus và token ring ít phổ biến hơn .

12.5.4. Các thiết bị ghép nối trong mạng cục bộ và một số loại máy chủ
cung cấp dịch vụ truy cập mạng
ƒ Bộ tập trung (HUB) : là một thiết bị có nhiều ổ cắm cho cáp UTP (gọi là các
cổng). Bộ tập trung chính thiết bị để nối các máy tính theo tô pô hình sao nói trên.
Khi một máy tính truyền tin lên mạng qua một cổng , bộ tập trung sẽ làm lan toả
tín hiệu qua tất cả các cổng khác.
ƒ Bộ chuyển mạch (Switch). . Kiểu nối hình sao qua HUB sẽ không áp dụng được
đối với mạng có nhiều máy vì HUB phát tán tín hiệu đi tất cả các cổng làm gia
tăng tình trạng đụng độ trên đường truyền. Đến một mức nào đó mạng hoàn toàn
bão hoà và không còn hoạt động được. Bộ chuyển mạch (switch) có tính năng là
tại mỗi cổng nó giữ thông tin về địa chỉ
của các máy nối chung vào cổng đó. Chỉ
khi nào bản tin của một máy truyền đi
yêu cầu một máy có địa chỉ ở một cổng
khác switch mới đóng mạch để nối thông
hai cổng. Sau khi truyền tin xong, mạch
nối thông hai cổng lại bị cắt. Như vậy Hình 12.10. Một
switch chống được sự lan toả tín hiệu switch và đấu các
trong trường hợp không cần thiết và do switch với nhau
đó tăng cường hiệu quả của mạng. Về thành nhiều tầng
mặt hình thức switch rất giống với HUB.
Chúng cũng có nhiều cổng RJ45 để đấu
cáp UTP. Người ta thường đấu vào cổng switch một hub hoặc một switch khác.
ƒ Bộ lặp (repeater): khi truyền xa, tín hiệu bị suy giảm. Để khắc phục tình trạng này
người ta dùng các thiết bị khôi phục tín hiệu gọi là bộ lặp (repeater). Như vậy bộ
lặp giúp mở rộng quy mô địa lý của mạng. Tuy nhiên không thể mở rộng tuỳ ý
bằng cách dùng bộ lặp vì ảnh hưởng tới độ trễ của tín hiệu.
ƒ Cầu (bridge): cầu cũng là một phương tiện để mở rộng mạng. Tại đầu cầu, thông
tin địa chỉ của các máy tính nối với đầu cầu cũng được ghi nhớ. Khác với switch,
nếu thấy bản tin từ đầu cầu yêu cầu một máy mà địa
chỉ không có ở đầu cầu thì nó chuyển bản tin sang
cầu bên kia. Còn switch thì nó phải tìm được máy
kia ở cổng nào thì mới thực hiện việc nối tạm thời
hai cổng.
ƒ Modem là thiết bị cho phép nối máy tính này với
máy tính khác qua đường điện thoại
Hình 12.12. Một modem
ƒ Máy chủ cung cấp dịch vụ truy cập từ xa (access server). Các mạng thường sử
dụng các máy tính đặc biệt để kiểm soát hàng loạt các đường truy cập từ xa qua
điện thoại. Chỉ có những người được cấp quyền mới có khả năng truy cập qua
modem vào mạng.
ƒ Máy chủ uỷ quyền (proxy server). Người trong mạng muốn truy cập ra ngoài
mạng rộng có thể được kiểm soát thông qua máy chủ uỷ quyền. Mọi giao dịch với
mạng bên ngoài đều thực hiện thông qua máy chủ cung cấp dịch vụ uỷ quyền
Ngoài ra còn nhiều loại máy tính cung cấp các dịch vụ truy nhập mạng khác.

12.6. Mạng rộng


Khi quy mô địa lý của các máy tính cần kết nối khá rộng thì không thể dùng mạng
cục bộ với kết nối thông qua các đường cáp trực tiếp được nữa. Khi cáp quá dài, tín hiệu
sẽ bị suy giảm, bị nhiễu. Mặt khác mặc dù sóng điện từ truyền rất nhanh, bao giờ cũng có
một độ trễ mà một số kỹ thuật mạng cục bộ phải tính đến. Vì thế phải có một cách kết nối
mạng rộng với công nghệ khác.
Có thể xây dựng mạng rộng bằng cách liên kết các mạng cục bộ qua các đường
truyền viễn thông (như cáp quang, các đường truyền riêng, vệ tinh ...) thông qua các thiết
bị kết nối. Các thiết bị này gọi là bộ dẫn đường hay định tuyến (router) có chức năng dẫn
các luồng tin theo đúng hướng. Người ta sử dụng router để kết nối các LAN (để tạo nên
những WAN) và để kết nối các WAN (để tạo nên các WAN lớn hơn).

Router
Router

Router

HUB Hình 12.13. Sơ đồ một WAN liên kết các


LAN qua các bộ dẫn đường
12.7. Các mô hình xử lý có cộng tác
Nhiều hệ thống thông tin, về bản chất không thể xử lý tại một nơi, một lúc. Ví dụ
một ngân hàng có nhiều chi nhánh, khách hàng có thể gửi tiền một nơi nhưng rút một nơi.
Ngay trong một công ty, các số liệu kế toán có thể đưa vào từ một máy tính của một nhân
viên nào đó nhưng kế toán trưởng cần tổng hợp số liệu trên máy của mình. Một số hệ
thống tính toán quan trọng không được phép ngừng làm việc. Ví dụ trong hệ thống ngân
hàng hay các máy tính trực chiến trong quân đội, một máy tính bị sự cố có thể gây rối
loạn các hoạt tác nghiệp nếu không có một máy tính khác thay thế tức thì.
Có rất nhiều ví dụ cho thấy có nhu cầu làm việc cộng tác giữa các máy tính.
Muốn có hoạt động cộng tác như vậy, các máy tính phải được nối với nhau thành mạng.
Trong mạng, từ một máy tính này ta có thể sử dụng tài nguyên của một máy tính khác.
Có hai kiểu xử lý cộng tác: xử lý cộng tác theo kiểu tập trung và xử lý cộng tác
theo kiểu phân tán. Ta quan tâm đến mô hình xử lý phân tán. Trong mô hình xử lý phân
tán thì trong mạng có nhiều trung tâm xử lý (nhiều máy tính). Dữ liệu có thể phân tán
hiểu theo nghĩa, một máy tính có thể sử dụng các thông tin ở nhiều máy tính trong mạng.
Xử lý cũng có thể là phân tán hiểu theo nghĩa một phần của quá trình xử lý xảy ra ở một
vài máy tính trong mạng. Sau đây là một số mô hình phân tán đang được sử dụng hiện
nay.

12.6.1. Mô hình kiểu dùng chung thiết bị (Shared Device)


Trong mô hình dùng chung thiết bị các máy tính được phép sử dụng chung một số
thiết bị. Các thiết bị dùng chung chủ yếu là đĩa và máy in tương ứng với dịch vụ file và
dịch vụ in ấn trong mạng. Máy tính cung cấp các dịch vụ file gọi là file server, còn máy
tính cung cấp dịch vụ in ấn gọi là print server. Theo mô hình này, máy tính có quyền yêu
cầu một số dịch vụ nào đó từ các máy khác có chức năng cung cấp dịch vụ gọi là server.
Phần xử lý hoàn toàn xảy ra tại máy tính của người làm việc. Các server chỉ cung cấp tài
nguyên mà không tham gia vào xử lý. Như vậy theo mô hình này thì dữ liệu phân tán,
nhưng xử lý thì tập trung. Mạng Novell Netware Ver.3 là loại mạng kiểu này

12.6.2. Mô hình kiểu khách-chủ (Client - Server)


Mô hình xử lý kiểu khách_chủ được xem như là một mức cao hơn, một sự phát
triển tự nhiên của mô hình xử lý chia sẻ thiết bị. Trong mô hình này chính xử lý cũng
phân tán. Trong mạng sẽ có một số máy là máy chủ (server) không những chỉ cung cấp
các dịch vụ file hay in ấn mà cả các dịch vụ xử lý do các máy tính khách (client) yêu cầu.
Để làm rõ sự khác nhau của mô hình khách-chủ và mô hình dùng chung thiết bị ta
xét ví dụ về một hệ thông tin quản lý sinh viên. Giả sử hồ sơ sinh viên đang đặt trên
server và ta cần lấy ra danh sách của những sinh viên giỏi có điểm trung bình trên 8.
Trong mô hình chia sẻ thiết bị (mà đĩa là thiết bị dùng chung) ta phải đọc tất cả các hồ sơ
sinh viên từ đĩa của máy chủ về máy làm việc để lọc ra danh sách các sinh viên thoả mãn
yêu cầu. Còn trong mô hình khách chủ, chính máy chủ được cài đặt sẵn các chương trình
xử lý để có thể thực hiện một số xử lý do khách hàng (client) yêu cầu. Khi đó từ máy làm
việc ta chỉ cần gửi yêu cầu tìm các sinh viên giỏi lên máy chủ. Chính máy chủ sẽ phải
tính toán và chỉ gửi trả về kết quả. Những ưu điểm dễ thấy của mô hình này là:
ƒ Có thể tận dụng được khả năng xử lý của máy chủ, thường là những máy rất
mạnh. Các máy khách không cần dùng máy mạnh.
ƒ Việc quản lý dữ liệu tập trung trên máy chủ sẽ tốt hơn
ƒ Do một phần xử lý thực hiện trên máy chủ nên không nhất thiết phải lấy nhiều
thông tin từ máy chủ về máy khách. Điều đó tránh được nguy cơ quá tải đường
mạng.
Mô hình khách - chủ là một mô hình xử lý quan trọng trong các hệ thống tính toán
cộng tác đang được áp dụng rộng rãi trong những năm gần đây.

12.6.3. Mô hình kiểu ngang hàng (peer to peer)


Trong mô hình khách-chủ, có sự phân biệt giữa khách là nơi phát sinh yêu cầu
dịch vụ và chủ là nơi thực hiện các yêu cầu này. Còn trong mô hình xử lý ngang hàng thì
tất các các máy trong mạng bình đẳng với nhau chúng có thể vừa là nơi phát sinh yêu cầu
dịch vụ tới một thành phấn khác hay vừa là nơi xử lý yêu tiếp nhận từ một nút khác trong
hệ thống. Đây cũng là một mô hình xử lý phân tán các ứng dụng. Một máy tính trong hệ
thống khi yêu cầu dịch vụ từ một máy khác sẽ đóng vai trò máy khách, nhưng khi cung
cấp dịch vụ cho máy khác lại đóng vai trò máy chủ
Mạng máy tính trong hệ điều hành Windows là một kiểu mô hình cộng tác ngang
hàng.
MODULE 13. INTERNET
13.1. Internet là gì ?
Internet có nguồn gốc từ một dự án của Bộ Quốc phòng Mỹ tên là ARPANET
được thực hiện vào những năm 70 (trong thời kỳ chiến tranh lạnh). Khi đó người ta thấy
rằng hệ thống thông tin điều khiển tập trung có nguy cơ bị phá huỷ trong một cuộc chiến
tranh lớn gây tê liệt hệ thống chỉ huy. Vì vậy phải phân tán mạng thông tin thành các
mạng con có khả năng tự liên hệ với nhau để định đường truyền tin ngay khi một phần
mạng đã bị phá huỷ. Dự án này đã hiện thực hoá ý tưởng liên mạng (là nguồn gốc của
thuật ngữ Internet hiện nay).
Có thể nói một cách không chính xác lắm Internet là mạng của các mạng vì
Internet là sự kết nối của các mạng thông qua các bộ dẫn đường router. Người ta cũng nói
Internet là mạng toàn cầu vì Internet hiện nay là một mạng rộng của vài trăm triệu máy
tính trên phạm vi toàn cầu. Chính xác hơn, Internet là mạng toàn cầu sử dụng giao thức
TCP/IP mà ta sẽ đề cập tới giao thức này trong phần cuối. Điểm khác với các mạng máy
tính thông thường là ở chỗ Internet không có chủ và không có mạng nào điều hành mạng
nào. Các mạng máy tính hay các máy đơn lẻ cố thể tham gia tự nguyện vào Internet..
Người tham gia mạng có khả năng khai thác tài nguyên (resources) thông tin thậm chí
các thiết bị trên các mạng thành viên khác và cũng có nghĩa vụ tạo ra các nguồn tài
nguyên cho người khác sử dụng. Chính vì vậy, về mặt thông tin Internet được xem là một
kho tài nguyên thông tin toàn cầu. Dĩ nhiên để có thể làm điều này các máy tính tham gia
InterNet phải có một địa chỉ nhất quán để các máy khác liên kết được. Mặc dù InterNet
không có chủ những vẫn có nhưng tổ chức phi lợi nhuận, phi chính phủ (non profit , non
govermental) quản lý việc cấp địa chỉ và nghiên cứu các chính sách cũng như công nghệ
trên Internet.

13.2. Các tài nguyên trên Internet


Khái niệm tài nguyên (resourse) chỉ những phương tiện, nguồn thông tin tiềm
tàng, sẵn sàng để khai thác. Tài nguyên trên Internet có thể là thiết bị nhưng chủ yếu là
thông tin.
Các dạng thông tin có thể lấy trên Internet bao gồm:
ƒ Các văn bản (dạng TeX, Poscript. Các sách điện tử dạng PDF)
ƒ Các ảnh (ví dụ như các thư viện hội hoạ)
ƒ Các tài liệu lưu trữ dưới dạng âm thanh (các bản nhạc, lời nói...)
ƒ Phim video số (một sự kết hợp của ảnh động và âm thanh)
ƒ Các phần mềm máy tính.
ƒ Ngày nay việc lấy các tài liệu này được tích hợp qua kết nối trên các trang siêu
văn bản (hypertext) trong đó có thể lồng ghép văn bản, ảnh, phim, sách điện tử và
các quá trình tương tác hai chiều như được thực hiện qua một ngôn ngữ lập trình
như Java, VBscript. Đó chính là loại tài liệu mà ta gọi ngắn gọn là Web. Các báo
điện tử thường là loại này.
Với Internet ta có thể sử dụng máy tính từ xa. Vì vậy tài nguyên trên Internet có
thể là thiết bị.

13.3. Các dịch vụ trên Internet


Có ba nhóm dịch vụ chính trên InterNet
ƒ Trao đổi thông tin giữa các thành viên trong cộng đồng (thư điện tử, diễn đàn, hội
thoại mạng, hội nghị từ xa, điện thoại Internet)
ƒ Khai thác các tài nguyên trên mạng (tra cứu thông tin qua WEB, gopher, FTP,
Video theo yêu cầu..., sử dụng máy tính từ xa
ƒ Các dịch vụ khác nhờ sử dụng công nghệ Internet
Sau đây ta sẽ mô tả chi tiết hơn một số dịch vụ.
ƒ Thư điện tử (Email). Người ta có thể gửi thư đến máy của người kia với giá rẻ từ
tới vài chục lần so với thư thường và thời gian trễ không quá một vài phút. Dịch
vụ này được sử dụng nhiều nhất trên internet. Đặc điểm của kiểu trao đổi này là
có đối tác cụ thể nhưng không cần có sự hiển diện đồng thời của người đối thoại
trên mạng.
ƒ Nhóm tin (News Group) hay còn gọi là diễn đàn (Forum). Có hàng nghìn nhóm
tin trên Internet với các chủ đề khác nhau. Nhóm tin là một trong các dịch vụ rát
có ích với người dùng. Những ai có vấn đề cần trao đổi đều có thể đưa lên diễn
đàn.
ƒ Hội thoại mạng (Chatting). Có thể tổ chức một cuộc hội thoại trên mạng máy tính.
Nhiều người ngồi tại máy của mình gõ vào máy các ý kiến hoặc vẽ các hình của
mình đồng thời theo dõi ý kiến của các bên đang tham gia cũng trên màn hình
máy của mình. Hình thức này mạnh hơn địên thoại ở chỗ hàng chục người có thể
trao đổi đồng thời không cần chờ một bên dừng. Với điện thoại mỗi lúc chỉ thiết
lập được một kênh giữa hai ngừơi.
ƒ Điện thoại Internet. Tiếng nói được số hoá và chuyển theo mạng internet tới
người đối thoại. Theo cách này giá điện thoại trở nên vô cùng rẻ. Nhược điểm duy
nhất hiện nay là chất lượng tiếng nói không cao.
ƒ Hội nghị từ xa (TeleConference ) truyền hình ảnh động và âm thanh thu trực tiếp.
Hiệu quả tương tự như cầu truyền hình
ƒ Thư viện file (Anonymous FTP). Có rất nhiều phần mềm hoặc tin tức có sẵn để
trên mạng. Nếu muốn, có thể lấy về miễn phí hoặc phải trả một chi phí rất nhỏ.
ƒ World Wide Web (WWW). Đây là dịch vụ quan trọng và tịên dụng nhất hiện nay.
Dịch vụ này cho phép lấy các trang siêu văn bản trên mạng Internet. Một trang
siêu văn bản có hình thức như một trang tài liệu bình thường gồm các chữ và hình
ảnh. Điều khác là trong một số đoạn chữ và hình ảnh có ngầm chứa địa chỉ một
trang siêu văn bản ở một máy tính nào đó trên mạng Internet hay một dịch vụ
Internet khác. Địa chỉ liên kết đó gọi là một siêu liên kết (hyperlink). Nếu ta đưa
con trỏ tới đoạn chữ hay hình ảnh có siêu liên kết và bấm thì tài liệu hay dịch vụ
liên kết sẽ được tải về hoặc thực hiện. Cơ chế này cho phép ta tìm tài liệu hay
dịch vụ theo các liên kết. Thuật ngữ World Wide Web nghĩa mạng nhện toàn cầu
có hàm ý chỉ mối liên kết phức tạp này. Do WWW dễ sử dụng nên ngày nay
nhiều dịch vụ Internet tiêu chuẩn như thư điện tử, thư viện file, thậm chí cả các
ứng dụng riêng như các ứng dụng quản lý cũng được tích hợp trực tiếp trên các
trang WEB. Chính WWW đã gây ra sự bùng nổ Internet lần thứ 2 vì nó tạo cơ hội
để ai cũng có thể sử dụng được Internet.
ƒ Một dịch vụ khai thác tài nguyên mạng từ xa là sử dụng máy tính từ xa (TelNet).
Việc tính toán hoàn toàn thực hiện qua một máy tính từ xa, máy tính tại chỗ chỉ
đóng vài trò như một thiết bị giao tiếp.

13.4. Công nghệ Internet

13.4.1. Giao thức TCP/IP


Có hàng chục giao thức dùng với Internet trong đó có hai giao thức chính là giao
thức định địa chỉ và chọn đường có tên là IP (Internet Protocol) và điều khiển việc truyền
tin có tên là TCP (Transmission Control Protocol).
Địa chỉ IP
Để tham gia Internet, các thực thể truyền thông (máy tính và các thiết bị mạng có
các hoạt động xử lý - trong tiếng Anh gọi là host) cần được cấp một địa chỉ gọi là địa chỉ
IP . Mỗi địa chỉ IP là một số cho trong 4 byte. Người ta sử dụng cách viết gọi là dạng
"dot decimal" để dễ đọc địa chỉ, theo đó giá trị trong mỗi byte được viết thành một số
thập phân. Các số thập phân này tách nhau bởi dấu chấm ví dụ 192.13.23.120. Ta biết
rằng số nguyên ghi trong một byte có giá trị nằm trong khoảng từ 0 đến 255.
Địa chỉ IP được chia làm nhiều lớp có kiểu là A, B, C, D... Sự khác nhau cơ bản
giữa các lớp địa chỉ này là ở khả năng tổ chức các cấu trúc con của nó. Ví dụ một địa chỉ
lớp B có thể cho tới 65535 địa chỉ của các máy trong mạng còn một địa chỉ lớp C chỉ có
thể cho 255 địa chỉ
Bảng 13.1. Cấu trúc địa chỉ IP các lớp A, B, C
Byte 1 Byte 2 Byte 3 Byte 4
0 7 bit địa chỉ mạng 24 bit địa chỉ host
Lớp A, có 2 mạng địa chỉ , và mỗi địa cho phép đánh địa chỉ cho 224 máy
7

10 14 bit địa chỉ mạng 16 bit địa chỉ host


Lớp B có 2 mạng địa chỉ , và mỗi địa chỉ cho phép đánh địa chỉ cho 216 máy
14

110 21 bit địa chỉ mạng 8 bit địa chỉ host


Lớp C có 221 mạng địa chỉ , và mỗi địa chỉ cho phép đánh địa chỉ cho 28 máy

Cấu trúc của một gói tin trong giao thức IP


Thông tin truyền đi trên Internet không chỉ chính là nội dung cần truyền mà nó
được đóng gói theo một cấu trúc được quy định, trong đó có một số thông tin kiểm soát
việc truyền tin. Các thông tin này được ghi ở phía đầu gói tin gọi là header. Hình 42 dưới
đây minh hoạ cấu trúc của gói tin truyền đi trên Internet (trong tiếng Anh gọi là các IP
packet). Phần header gồm ít nhất 20 byte chứa một số thông tin được minh họa trong 5
dòng đầu tiên.
Bảng 13.2. Cấu trúc một gói tin IP
Ver. 4 bit Độ dài header, 4 bit Dịch vụ, 8 Độ dài gói tin, 16 bit
bit
Định danh gói tin (ID), 16 bit Cờ, 3 bit Offset phân đoạn,13 bit
Thời gian sống, 8 bit Giao thức, 8 bit Tổng kiểm tra của header, 16 bit
Địa chỉ IP của nơi gửi, 32 bit
Địa chỉ IP của nơi nhận, 32 bit
Vùng thông tin bổ sung nếu cần Vùng đệm
Dữ liệu

Phần dữ liệu là nội dung thông tin cần chuyển đi. Vùng tuỳ chọn không nhất thiết
phải có. Nếu ta muốn mở rộng header để đưa thêm một số thông tin kiểm soát truyền
thông thì sẽ lấy thêm phần tuỳ chọn.
Ta nêu ý nghĩa của một số trường để hiểu rõ hơn cách kiểm soát truyền tin trên
Internet
ƒ Độ dài header là chiều dài vùng mô tả vùng header của gói tin không kể phần dữ
liệu tính theo đơn vị 4 byte. Bình thường giá trị đó sẽ là 5 (20 byte). Nếu phần tuỳ
chọn được dùng thì số này có thể thay đổi.
ƒ Độ dài gói tin là độ dài tính theo byte của toàn bộ gói tin kể cả phần header. Do
phần này sử dụng 2 byte nên chiều dại cực đại có thể lên tới 65535 byte nhưng
trên thực tế các gói tin có độ dài ngắn hơn nhiều – mặc định là 1518 byte cho phù
hợp với độ dài các frame trong mạng cục bộ theo kiểu Ethernet.
ƒ Định danh gói tin, cờ và offset phân đoạn có liên quan đến giao thức truyền TCP
mà ta sẽ nói sau. Một bản tin dài sẽ được cắt thành nhiều gói có chung một định
danh gói tin. Khi đó cờ sẽ cho biết các gói tin nào là gói tin cuối cùng, gói tin nào
chưa phải cuối cùng. Còn offset cho biết gói tin này bắt đầu từ vị trí nào trong bản
tin
ƒ Thời gian sống là số đo thời gian còn lại được phép tồn tại trên mạng trong quá
trình lưu chuyển. Khi gói tin mới được tạo lập thời gian sống mặc định được đặt
là 255 (giây). Các gói tin được chuyển tiếp qua các router, trước khi chuyển tiếp,
thời gian sống được giảm đi thời gian đã chờ trên router, ít nhất cũng giảm đi 1.
Nếu thời gian này giảm tới 0 thì gói tin này bị huỷ bỏ và một thông báo được
chuyển lại nơi phát gói tin này để thông báo.
ƒ Truờng giao thức dùng để thông báo giao thức nào đang được sử dụng đối với gói
tin này, ví dụ TCP hay UDP
ƒ Tổng kiểm tra nhằm kiểm soát header được truyền đi có lỗi hay không. Khi nhận
được gói tin, nơi nhận sẽ tiến hành tính lại tổng kiểm tra đối với header. Nếu số
này không trùng với tổng kiểm tra gửi đi thì gói tin được xem là hỏng
ƒ Địa chỉ nguồn và địa chỉ đích là các địa chỉ IP của trạm nguồn và trạm đích
Giao thức chọn đường tĩnh
Ta đã biết , các mạng liên kết với nhau thông qua các máy tính đặc biệt có chức
năng dẫn đường gọi là router. Công việc của các router là khi nhận một gói tin nó chuyển
gói tin đi đúng kênh cần thiết.
Một router có thể có nhiều cổng nối với nhiều mạng khác. Người ta cài đặt sẵn
một bảng ở router gọi là bảng chọn đường. Trong bảng chọn đường bao giờ cũng chỉ định
một cổng gọi là cổng mặc định (default) sao cho nếu địa chỉ đích không có mặt trong
bảng chọn đường thì gói tin sẽ được tự động chuyển theo đường mặc định.
Giả sử ta có một mạng cục bộ với địa chỉ lớp C là 247.165.32.*.Ví dụ sau đây cho
hình ảnh của một bảng chọn đường của một router có 5 cổng, 4 cổng nối ra ngoài gọi là
cổng WAN và một cổng nối vào trong gọi là cổng LAN. Đương nhiên là chỉ có thể dẫn
đường đi theo cổng WAN.
Cổng mặc định Cổng WAN 1
203.195.16.* Cổng WAN 2
162.34.*.* Cổng WAN 3
176.15.*.* Cổng WAN 4
192.168.32.*. Cổng LAN 5
Khi đó nếu router phát hiện thấy có gói tin gửi ra ngoài có địa chỉ đích là
162.34.56.123 sẽ được gửi theo cổng 3; gói tin có địa chỉ đích 203.195.16.234 sẽ được
gửi theo cổng số 2 còn nếu gói tin không thuộc nhóm các địa chỉ nói trong cổng 2, 3, 4 và
5 thì sẽ gửi theo cổng mặc định - cổng 1. Thông thường cổng mặc định là cổng gửi lên
mạng cấp trên.
Một tình trạng có thể xảy ra là các router thiết lập các đường mặc định thành một
vòng kín. Khi đó liệu có một gói tin với địa chỉ vô thừa nhận có thể bị chạy mãi trên
mạng hay không. Điều này không xảy ra vì sau một thời gian, thời gian sống của gói tin
không còn và gói tin sẽ bị huỷ bỏ.
Bằng cơ chế trên các gói tin trên mạng Internet được hướng chính xác tới đích.
Nhiều hệ thống sử dụng giao thức chọn đường động. Những gói tin mặc dù đến
cùng đến một địa chỉ nhưng khi thì router gửi theo đường này, khi thì router gửi theo
đường khác tuỳ theo chi phí và tình hình tại thời điểm xử lý gói tin. Ví dụ khi đường này
đang quá tải thì có thể phải chọn đường khác. Ngay trong truờng hợp không đường nào
quá tải router vẫn có thể gửi đi theo nhiều đường để tăng tốc độ truyền. Vì thế khi ta gửi
một thư điện tử trên mạng internet qua Mỹ, rất có thể một phần thư đi qua Australia theo
đường vệ tinh, phần còn lại qua Hồng kông theo cáp quang biển rồi nhập lại với nhau ở
một máy tính nào đó tại Mỹ.
Giao thức TCP
Nếu IP là giao thức dùng để chuyển tin tức từ máy này đến máy kia (host –to –
host) thì TCP cũng là một giao thức liên quan đến phương thức chuyển các gói tin từ một
ứng dụng đang chạy trên máy này đến một ứng dụng đang chạy ở máy tính kia mạng kia
(end – to – end). Khác với IP, TCP không quan tâm tới vấn đề đường đi (địa chỉ và dẫn
đường) mà chỉ quan tâm tới đảm bảo chất lượng của việc truyền tin. Việc kiểm soát
truyền giữa các mạng thực hiện ở router, còn việc kiểm soát chất lượng truyền tin thực
hiện ở tại các máy tính tham gia truyền thông.
Một bản tin nếu lớn sẽ bị cắt thành các gói tin nhỏ hơn theo một định dạng nhất
định. Chính TCP sẽ tạo định danh và đánh số gói tin (như đã thấy trong cấu trúc của gói
tin IP ) và được gửi tơí địa chỉ đích. TCP sẽ kiểm soát luôn cả sự chính xác, nếu một gói
tin nào bị hỏng TCP sẽ yêu cầu bên phát gửi lại thông qua chế độ xác nhận. TCP cũng
đảm bảo các gói tin không bị trùng lặp. Khi đủ các gói của bản tin, chính TCP sẽ lắp ráp
các gói tin theo đúng thứ tự để khôi phục nguyên dạng bản tin. Ngoài ra TCP còn kiểm
soát cả một số chế độ truyền tin như độ khẩn, thông báo về xác nhận, thiết lập kết nối.

13.4.2. Hệ thống tên miền - DNS


Domain Name System
Địa chỉ IP không thật thích hợp với người sử dụng vì rất khó nhớ. Người ta sử
dụng một hệ thống đặt tên gọi là tên miền (domain name) để đặt tên cho các máy trên
mạng. Mỗi tên có thể gồm nhiều trường phân cách nhau bởi một dấu chấm. Theo một
quy ước tên được đặt theo một cây phân lớp mà trường đầu tiên là trường địa lý (thường
là theo cách viết tắt của tên nước). Ví dụ vn chỉ Việt Nam, th để chỉ Thái lan, fr chỉ Pháp,
jp chỉ Nhật. Các tên miền không có lớp địa lý được hiểu ngầm là Mỹ.
Trường thứ hai thường là lớp lĩnh vực hoạt động theo đó gov dành cho các cơ
quan chính phủ; org dành cho các tổ chức, các cơ quan phi chính phủ; edu dành cho các
tổ chức giáo dục; ac dành cho các tổ chức nghiên cứu; net dành cho các tổ chức mạng;
mil dành cho các tổ chức quân sự và com dành cho các công ty.
Từ trường thứ 3 trở đi do các tổ chức tự đặt tên, miễn là không trùng nhau và
được các tổ chức quản lý tên miền chấp nhận.

Trường địa lý Gốc


.vn

Trường Chính phủ Phi chính phủ Giáo dục Khoa học Mạng Kinh doanh
lĩnh vực .gov .org .edu .ac .net .com

Bộ GD ĐT UNDP ĐHQG Hà Nội Trường ĐHBK Cty FPT Selab


.moet .undp .vnu .hut .fpt .selab

coltech.vnu.edu.vn Trường ĐH CN Hình 13.3. Cây tên miền


coltech
Ví dụ Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội có tên miền là
coltech.vnu.edu.vn. Đại học Bách khoa Hà Nội có tên miền là hut.edu.vn
Trong tất cả các dịch vụ Internet, chỗ nào có địa chỉ IP đều có thể thay bằng tên
miền. Trong khi định vị các máy tính trên mạng Internet, để có thể biết chính xác tên
miền đó ứng với địa chỉ IP nào, cần có cơ chế giải mã tên miền. Trong các mạng người ta
sử dụng một số máy tính làm máy chủ thực hiện dịch vụ tên miền . Trong máy đó người
ta đưa vào một bảng tương ứng giữa tên miền và địa chỉ IP. Ví dụ
www.vnu.edu.vn 203.16.0.168
selab.vnu.edu.vn 172.16.6.32
www.vnn.vn 202.167.121.212
Đương nhiên chính máy chủ tên miền phải có một địa chỉ IP. Các dịch vụ nào
muốn giải mã tên miền đều phải khai báo địa chỉ IP của máy chủ cung cấp dịch vụ tên
miền này. Các máy chủ tên miền có thể được liên kết với nhau để khi máy chủ tên miền
này không hiểu có thể yêu cầu một máy chủ tên miền khác trợ giúp.
Thực tế thì bảng thông tin trong các máy chủ cung cấp dịch vụ DNS phức tạp hơn
nó có thể gồm tới 7 loại thông báo khác nhau, mỗi thông báo cũng có nhiều yếu tố chứ
không chỉ tương ứng giữa tên miền và địa chỉ IP
Việc cấp phát tên miền và địa chỉ do một tổ chức phi lợi nhuận, phi chính phủ là
NIC (Network Information Center) quản lý. Đại diện của NIC tại khu vực Châu Á Thái
Bình Dương là APNIC có trụ sở tại Tokyo. Hiện nay với sự phát triển của Internet không
gian địa chỉ IP 4 byte đang cạn kiệt nhanh chóng. NIC đang chuẩn bị đưa ra địa chỉ IP
mới 6 byte. Với không gian mới này, trung bình mỗi người dân trên trái đất sẽ có 4 địa
chỉ IP. Mỗi quốc gia thường đều có tổ chức quản lý tên miền và địa chỉ của mình. Ở Việt
Nam tổ chức đó là VNNIC. Có thể đăng ký trực tuyến (Xem thêm ở trang
http://www.vnnic.net.vn)

13.4.3. Hệ thống định vị tài nguyên thống nhất URL


(Uniform Resource Locator)
Để tiện cho vịêc truy cập các tài nguyên thông tin trên mạng Internet, người ta
quy ước một cách chỉ định nguồn tài nguyên một cách thống nhất viết tắt là URL có cấu
trúc như sau:
Bảng 13.3. Cấu trúc của URL
Giao thức:// Tên miền hay địa chỉ của máy cung cấp tài Đường dẫn
nguyên đến file
Giao thức quy định cách giao tiếp để truy cập đến nguồn tài nguyên.Ví dụ giao
thức để truy cập WEB là http (HyperText Transmission Protocol), giao thức truyền file là
ftp, giao thức tìm tin theo kiểu thực đơn là gopher...
Nơi cung cấp tài nguyên có thể cho bằng tên miền hay địa chỉ IP thực. Nếu cho
bằng tên miền thì để truy cập đến máy chủ, hệ thống sẽ gọi dịch vụ tên miền để giải mã
địa chỉ.
Đường dẫn đến file có cấu trúc tương tự như đường dẫn trong các hệ điều hành.
Nó được tính từ gốc theo quan niệm cài đặt các dịch vụ Internet
Trong một số trường hợp, đặc biệt trong tìm kiếm người ta có thể đưa vào các
tham số tìm kiếm.
Ví dụ để xem trang tin tức thể thao của mạng vnn ta có thể dùng URL
http://www.vnn.vn/tintuc/thethao
hoặc http:// 202.167.121.212/tintuc/thethao
Để lấy các file tin antivirus trong thư viện phần mềm của trong mạng của khoa
Công nghệ có thể dùng URL ftp://www.fotech.vnu.vn/virus/ . Sau khi thư mục virus hiện
ra ta có thể nháy chuột vào biểu tượng file tương ứng để lấyvề máy tính của mình.

13.5. Cấu trúc một mạng điển hình có nối với Internet
Mạng riêng của một tổ chức nào đó kết nối với nhau theo giao thức TCP/IP gọi là
mạng Intranet. Như vậy Intranet có thể là một mạng cục bộ, cũng có thể là mạng rộng.
Đối với Intranet thì việc kết nối với Internet là việc không phức tạp vì chúng sử
dụng chung giao thức truyền thông. Vấn đề được đặt ra đối với mạng Intranet là làm thế
nào để kiểm soát được việc kết nối với Internet. Những vấn đề về an ninh mạng là các
vấn đề rất phức tạp. Một khi kết nối với Internet, người sử dụng bên ngoài có thể truy
nhập được vào trong mạng Intranet và có thể gây ra những hậu quả không mong muốn.
Mặt khác cũng cần phải kiểm soát đối với những người ở trong mạng Intranet truy cập ra
bên ngoài.
Một vấn đề khác được đặt ra là có một số dịch vụ vừa phải sử dụng trong
Intranet, vừa cho phép sử dụng từ Internet. Các dịch vụ email hay dịch vụ WEB là hai
trong số các ví dụ điển hình. Để giải quyết vấn đề này, người ta dùng một mạng có một
số máy chủ cung cấp dịch vụ vừa nối với các máy bên trong, vừa nối với Internet. Các
máy này đóng vai trò trung gian đảm bảo giao tiếp giữa Intranet và Internet cũng như
cung cấp dịch vụ cho cả hai phía. Chúng hình thành một mạng đệm giữa hai khu vực và
gọi là mạng Extranet.
Internet

Router

Máy dịch Máy dịch


Máy dịch vụ Proxy vụ WEB
vụ Email
Extrarnet

Switch chính
Máy dịch vụ Switch
truy cập từ xa thứ cấp

Switch
thứ cấp
Modem
Các máy Intrarnet
HUB HUB dịch vụ

Người sử dụng từ xa
qua mạng điện thoại

Hình 13.2. Sơ đồ một mạng nội bộ (Intranet)


điển hình có kết nối với Intranet thông qua
Extranet
MODULE 14. ỨNG DỤNG CỦA CÔNG NGHỆ THÔNG TIN

Như đã đề cập đến trong phần mở đầu, tin học là một ngành khoa học nhằm khai
thác có hiệu quả tài nguyên thông tin phục vụ cho hoạt động mọi mặt của con người. Do
đó có thể nói rằng ở bất kỳ lĩnh vực hoạt động nào con người cần xử lý thông tin thì ở đó
có chỗ cho tin học
Sau đây ta sẽ hệ thống hoá một số lớp ứng dụng chính của công nghệ thông tin.

14.1. Các bài toán khoa học kỹ thuật


Sự xuất hiện của MTĐT gắn liền với nhu cầu giải các bài toán khoa học kỹ thuật
(KHKT). Trong thời kỳ những năm 50-70, do máy tính còn ít và giá thành máy tính khá
đắt nên chúng chưa được ứng dụng rộng rãi. Thời kỳ đó, máy tính chủ yếu được dùng với
mục đích KHKT. Đặc điểm của loại bài toán này là chủ yếu tính toán số. Mặc dù số liệu
có thể không nhiều nhưng thuật toán thường là phức tạp. Các bài toán như thiết kế công
trình, xử lý các số liệu thực nghiệm, quy hoạch và tối ưu hoá, giải gần đúng các hệ
phương trình đều là các ứng dụng khoa học kỹ thuật. Một số ví dụ như dự báo thời tiết,
tính quỹ đạo vệ tinh, thiết kế các công trình xây dựng, tính các dòng chảy, tính toán dựng
các mặt cắt các lớp đất đá trong lòng đất dựa theo số liệu địa chấn để tìm dầu khí, giải mã
gen... có thể gợi cho ta thấy công việc có thể phức tạp đến như thế nào. Để giải các bài
toán đó phải thực hiện hàng trăm triệu, thậm chí nhiều tỉ phép tính. Công trình lập bản đồ
gen người hoàn thành trong năm 2000 phải tính toán trên các siêu máy tính ròng rã trong
nhiều năm trời. Ngày nay, các bài toán KHKT có vẻ ít được nói đến song đó là vì về
tuơng đối các bài toán khoa học kỹ thuật không còn chiếm một tỉ lệ lớn so với các bài
toán loại khác như trong thập kỷ 70. Còn về tuyệt đối số lượng các ứng dụng khoa học kỹ
thuật vẫn tiếp tục tăng không ngừng. Hầu hết các siêu máy tính đang dùng ngày nay đều
dùng cho các mục đích khoa học kỹ thuật.
Đối với rất nhiều bài toán KHKT, người ta muốn kết quả đưa ra không phải dưới
dạng số liệu mà những minh hoạ tường minh cho lời giải. Vì thế kể từ khi máy tính được
trang bị những màn hình có khả năng thể hiện đồ hoạ thì xử lý hình học là một trong
những vấn đề được quan tâm nhiều đối với các bài toán KHKT. Có cả một lớp các máy
tính với khả năng đồ họa mạnh dùng với hệ điều hành UNIX thường được gọi là các trạm
làm việc (WorkStation), thường được dùng với các bài toán KHKT. Với những máy tính
như vậy người ta có thể làm việc theo kiểu tương tác với các sự kiện đang mô phỏng trên
máy tính như sửa chữa các bản thiết kế, điều khiển một nhóm đối tượng phức tạp thông
qua các hình ảnh mô phỏng trên màn hình.
Ngay trong lĩnh vực khoa học xã hội máy tính cũng được sử dụng rất nhiều. Các
kết quả thống kê điều tra xã hội học là một ví dụ.

14.2. Các bài toán quản lý


Có thể nói rằng trong bất kỳ ở đâu có một tổ chức, là ở đó có nhu cầu quản lý.
Các hoạt động quản lý rất đa dạng nhưng có một đặc điểm có vẻ đối lập với các bài toán
khoa học kỹ thuật là phải xử lý một khối lượng thông tin lưu trữ lớn (các hồ sơ) nhưng
các quy trình xử lý nói chung là đơn giản.
Thường, đối với một bài toán quản lý cần thực hiện những công việc sau:
ƒ Tạo lập cơ sở dữ liệu (CSDL). Tập hợp các dữ liệu về một lĩnh vực hoạt động của
một tổ chức được lưu trữ và quản lý một cách thống nhất trên máy tính được gọi
là một cơ sở dữ liệu. Ví dụ để quản lý đào tạo ta phải lập cơ sở dữ liệu đào tạo với
các thông tin về sinh viên, giáo viên, chương trình học, môn học, kết quả học tập
của sinh viên, các tiêu chuẩn đánh giá.
ƒ Duy trì cơ sở dữ liệu. Cập nhật dữ liệu thường xuyên để đảm bảo dữ liệu phản
ánh đúng và kịp thời thế giới thực. Các hoạt động cập nhật có thể là : thêm các đối
tượng mới, sửa thông tin về một đối tượng phù hợp với tính trạng thực tế. Xoá
một đối tượng không còn sử dụng khỏi CSDL.
ƒ Khai thác. Có hai dạng khai thác. Kiểu khai thác tra cứu, nhằm tìm ra các thông
tin vốn có trong CSDL theo một tiêu chuẩn nào đó . Ví dụ lập danh sách học sinh
đủ điều kiện lên lớp, lập danh sách các cán bộ đến thời kỳ lên lương. Để làm điều
này người ta phải lập các chương trình. Các chương trình này sẽ truy cập tới cơ sở
dữ liệu và xử lý. Một loại hình khai thác khác thống kê. Nếu như hoạt động tra
cứu chỉ trích ra các dữ liệu có sẵn trong cơ sở dữ liệu thì các hoạt động thống kê
thiên về tính đếm để rút ra các đặt trưng thống kê như tính tổng có điều kiện, lấy
trung bình, tính các giá trị lớn nhất hay nhỏ nhất. Ví dụ sau khi cập nhật kết quả
của một kỳ thi có thể phải đánh giá chất lượng sinh viên thông qua những thống
kê về điểm giỏi, khá, trung bình và kém.
ƒ Mục đích cuối cùng của các hệ thông tin quản lý là hỗ trợ cho quá trình ra quyết
định của một tổ chức hay cá nhân. Ví dụ thông qua thống kê hàng tồn kho mà
quyết định giảm giá, tra cứu những sinh viên đủ điều kiện để quyết định hình thức
và mức khen thưởng. Vì thế các phần mềm quản lý thường phải được xây dựng
trên cơ sở các hoạt động hỗ trợ quyết định, chứ không đơn giản chỉ là tra cứu hay
thống kê.
Quản lý là lĩnh vực sử dụng tin học nhiều nhất. Người ta ước tính 85% đầu tư tin
học là dành cho quản lý. Những hệ thống như quản lý ngân hàng, kế toán xí nghiệp, quản
lý bán hàng và kho tàng, quản lý nhân sự ... đều là những ứng dụng trong lĩnh vực quản
lý.

14.3. Tự động hoá


Thập kỷ 60 trở về trước, kỹ thuật tự động hoá khá đơn giản, chủ yếu là theo kiểu
cơ học. Người ta chế tạo những chi tiết máy một cách khéo léo để cho các hoạt động này
kéo theo các hoạt động khác một cách đồng bộ. Kiểu tự động hoá như thế không đáp ứng
được những quá trình điều khiển phức tạp .
Một trong những loại hình điều khiển khó thực hiện được theo kiểu cơ học là điều
khiển có tính thích nghi, nghĩa là luôn luôn so sánh đích phải đạt được với tình trạng hiện
tại để có quyết định điều khiển phù hợp. Bản chất của loại điều khiển này là xử lý thông
tin để ra quyết định nên chỉ có thể thực hiện được bằng máy tính.
Trong mô hình điều khiển bằng máy tính, đi theo đối tượng được điều khiển còn
có cơ cấu chấp hành đảm bảo chức năng điều khiển về mặt vật lý đối tượng bị điều khiển
và các thiết bị kiểm tra để cung cấp thông tin về tình trạng chính đối tượng bị điều khiển
và môi trường xung quanh nó. Các thiết bị thu thập trạng thái có thể là các thiết bị đo,
cũng có thể là một hệ thống xử lý thông tin phức tạp khác.
Tự động hoá trên cơ sở máy tính có những ưu thế mà những cơ chế khác không
thể so được. Đó là :
ƒ Có thể tự động hoá những quy trình phức tạp. Các máy bay hiện đại ngày nay có
thể tự động lái theo hành trình định sẵn nhờ các thiết bị định vị vệ tinh. Trong khi
bay, các khí cụ bay luôn luôn thu thập và báo cho máy tính điều khiển biết các
tham số môi trường như độ cao, hướng gió, tốc độ gió, áp suất, nhiệt độ bên
ngoài, tình trạng xăng dầu, áp lực trong máy bay... Các hệ thống định vị toần cầu
GPS (Global Positioning System) luôn thông báo toạ độ địa lý hiện tại của máy
bay. Những thông tin đó được dùng làm căn cứ để máy tính tính các chế độ bay,
tính toán tốc độ, hướng bay để dẫn máy bay đi đúng hành trình và lịch trình.
ƒ Mềm dẻo, có thể thay đổi hành vi tự động hoá bằng cách lập trình lại. Trong các
dây chuyền sản xuất ô tô hiện đại ngày nay hầu hết công việc do người máy
(robot) thực hiện. Ưu điểm không chỉ ở chỗ thao tác của người máy chính xác, lại
ổn định do người máy không biết mệt mà còn ở chỗ quy trình sản xuất trở nên
mềm dẻo. Nếu trước đây muốn thay đổi mẫu mã của ô tô, nhà máy phải đào tạo
lại hàng nghìn công nhân thì nay chỉ việc thay chương trình điều khiển robot.

Cơ cấu Đối tượngbị Thiết bị đo,


chấp hành điều khiển kiểm tra Thông tin
phản hồi

Thông tin
điều khiển Máy tính

Hình 14.1. Sơ đồ điều khiển tự động bằng máy tính


Thiết bị được điều khiển và máy tính điều khiển trong đa số trường hợp không
tách rời nhau. Người ta cấy trực tiếp các bộ vi xử lý và bộ nhớ ROM ghi chương trình
điều khiển vào các thiết bị máy móc như một thành phần. Các thiết bị máy móc như vậy
có khả năng tự điều khiển và gọi là các máy thông minh. Các phần mềm ghi trong ROM
có chức năng điều khiển các thiết bị thường gọi là các phần mềm nhúng (embedded
software). Các hệ thống có sử dụng phần mềm nhúng gọi là hệ thống nhúng. Ngày nay
các hệ thống nhúng có mặt khắp nơi, từ các đồ điện tử gia dụng cho đến các máy móc sản
xuất. Tự động hoá bằng máy tính đã trở nên rất phổ biến đến mức người ta ít khi để ý đến
sự có mặt của nó.

14.4. Công nghệ thông tin và công tác văn phòng


Các hoạt động văn phòng là những hoạt động phức tạp và rất phổ biến. Vì vậy các
ứng dụng CNTT trong lĩnh vực văn phòng đã được chú ý từ rất sớm. Đặc biệt từ đầu thập
kỷ 80, khi máy vi tính bắt đầu được sử dụng rộng rãi thì chính các văn phòng là địa chỉ
ứng dụng lớn nhất của CNTT. Nếu ai từng làm việc với các máy tính Macintosh của
Apple vào khoảng 1985 thì phải thấy chúng là các máy tính sản xuất ra với mục đích hỗ
trợ công việc văn phòng.
Nhờ có máy tính mà ngày nay hoạt động văn phòng đã thay đổi hẳn. Với sự trợ
giúp của các phần mềm xử lý văn bản và các phương tiện in gắn với máy tính, ta có thể
tạo rất nhanh các văn bản với một chất lượng cao. Nhờ Internet, việc gửi tin hoặc lấy tin
trở nên rất nhanh chóng. Thay vì gửi thư thảo luận một hợp đồng với đối tác nước ngoài
mất nhiều tuần thì nay có thể thực hiện trong vòng vài giờ, còn thời gian đi của thư chỉ
vài giây. Tự động hoá văn phòng còn nhiều khía cạnh khác. Có thể kể tới các công việc
sau mà hiện nay có rất nhiều phần mềm đã được xây dụng để hỗ trợ:
ƒ Quản lý dữ liệu, ví dụ quản lý các khách hàng của một công ty, các hợp đồng kinh
tế, các kho hàng...
ƒ Lập kế hoạch công tác, theo dõi tiến độ công việc . Các phần mềm quản lý dự án
còn có khả năng nhắc nhở tiến độ công việc, vạch ra các công việc ưu tiên
ƒ Lưu chuyển và xử lý văn thư. Với sự hỗ trợ của mạng máy tính, các văn thư cần
được nhiều người xử lý có thể được truyền đến từng người theo một trình tự được
quy định trước để lấy các ý kiến phản hồi. Việc nay làm giảm thời gian xử lý các
vụ việc hàng chục lần so với cách làm thủ công truyền thống.
Người ta đã nói nhiều đến các văn phòng không giấy. Thực ra khó mà có một văn
phòng không giấy theo nghĩa đen, nhưng rõ ràng CNTT đã tạo ra các khả năng để hoạt
động văn phòng trở nên hiệu quả hơn rất nhiều hoạt động theo kiểu truyền thống trước
đây.

14.5. Tin học và giáo dục


Ngày nay, tin học là một thành tố quan trọng trong nền học vấn phổ thông, nhằm
hình thành và phát triển phẩm chất con người cho xã hội mới-xã hội thông tin. Với ý
nghĩa như vậy, tin học là đối tượng để học
Tin học là một tiến bộ khoa học kĩ thuật, công cụ hịên đại thể hiện qua phương
tiện nghe nhìn hiện đại giúp nâng cao chất lượng dạy và học. Phần mềm dạy học được sử
dụng khá rộng rãi trong nhà trường nhiều nước trên thế giới nhằm:
ƒ Hỗ trợ cho thầy giáo trong việc dạy: mở rộng, bổ sung các kiến thức; trình bày bài
giảng rõ ràng, sinh động, dể tiếp thu; tiến hành việc kiểm tra, đánh giá trình độ
học sinh được chính xác hơn.
ƒ Giúp học sinh học tập một cách chủ động, làm việc theo khả năng của bản thân,
phat huy khả năng sáng tạo thông qua hệ thống các bài tập và câu hỏi phong phú
và đa dạng.
Với ý nghĩa như vậy, tin học trở thành công cụ, phương tiện để học
Ngày nay môi trường Interet rất phát triển. Internet đã mở ra những khả năng mới
cho đào tạo. Internet là một kho tri thức rất giàu có, có thể tìm trên Internet hầu hết những
vấn đề muốn biết. Internet còn cung cấp một phương tiện có thể giao tiếp từ xa. Nhiều
trường học đã tổ chức học từ xa qua mạng Internet.

14.6. Thương mại địên tử


Một trong những vấn đề thời sự những năm gần đây là vấn đề thương mại điện tử
(E-commerce hay E-businees). Có thể nói thương mại địên tử chính là các hoạt động
thương mại qua mạng Internet. Có thể kể đến một số hình thức cụ thể của thương mại
điện tử:
ƒ Quảng cáo trên mạng
ƒ Mua hàng và thanh toán qua mạng
ƒ Thương thảo các hợp đồng qua mạng
Thách thức lớn nhất của thương mại điện tử hiện nay là vấn đề pháp lý và độ an
toàn trong các giao dịch điện tử. Nhiều nước đã thừa nhận về mặt pháp luật chữ ký điện
tử và có các cơ chế xác thực chữ ký địên tử. Vấn đề độ an toàn vẫn đang là vấn đề đau
đầu đối với những người làm tin học.

14.7. Công nghệ thông tin và cuộc sống đời thường


Công nghệ thông tin đã xâm nhập vào mọi hoạt động đời sống. Rất nhiều máy
móc trong gia đình như tivi, tủ lạnh, điều hoà nhiệt độ được điều khiển bằng các chip với
các chương trình điều khiển thông minh. Có rất nhiều ý tưởng lãng mạn đã và đang được
thực hiện. Một ví dụ là công nghệ BlueTooth được các hãng Ericsson, Nokia, IBM, Intel
và Toshiba đề nghị năm 1998 và đã được hơn 2000 công ty chấp nhận. Hiện nay
Bluetooth đã được dùng phổ biến trong điện thoại di động, nhưng mục đích của công
nghệ này không chỉ là điện thoại mà là kết nối tất cả mọi loại máy móc như tivi, tủ lạnh,
máy giặt, máy tính xách tay, máy ảnh số, robot gia đình... theo một giao thức mạng
không dây trong phạm vi nhỏ. Chúng ta sẽ được thấy một thế hệ các máy móc trong nhà
dược điều khiển bằng công nghệ Bluetooth. Người ta có thể gọi điện thoại từ xa hoặc nói
trực tiếp ở trong nhà ra lệnh bật điều hoà nhiệt độ, điều khiển TV, đóng cửa. Các thiết bị
trong nhà có thể tự phối hợp với nhau thực hiện các công việc phức tạp.
Các người máy (robot)
thông minh ngày nay không chỉ Hình 14.2. Robot dân
thấy ở các phòng thí nghiệm hay dụng "Wakamaru", có
các công ty giàu có dùng trong các thể nhận diện được 10
xưởng kỹ thuật cao mà đã bắt đầu người và nói chuyện với
bán . Cốt lõi của trí thông minh họ với vốn 10.000 từ và
của robot vấn là các phần mềm quán xuyến được nhiều
máy tính. việc trong nhà. Giá bán
14.300 $
Với việc kết nối với
Internet, các hoạt động giải trí thực sự đã được đưa đến từng nhà, từng người. Người ta
có thể đọc báo, nghe nhạc, xem phim, mua hàng qua mạng. Với giao thức mạng không
dây WAP (Wireless Application Protocol) có thể truy nhập Internet qua điện thoại di
động và như vậy không nhất thiết cứ phải dùng máy tính mới có thể giao tiếp với "nền
văn minh mạng". Từ tháng 7/2001, các công ty điện thoại di động ở Việt Nam đã đưa
công nghệ WAP vào khai thác thử nghiệm. Việc sử dụng điện thoại kết nối được với
Internet có một ý nghĩa rất lớn. ở Việt Nam cũng như nhiều nước, số thuê bao điện thoại
di động nhiều hơn số máy tính cá nhân. Điều đó có nghĩa là số người giao tiếp được với
Internet qua điện thoại có thể rất lớn.
Công nghệ thông tin đang phát triển với tốc độ rất nhanh. Chúng ta còn được
chứng kiến rất nhiều những thành tựu của CNTT được đưa vào cuộc sống.

Bài đọc thêm. Hiệp định khung e- ASEAN


Ngày 24/11/2000, tại Singapore, nguyên thủ quốc gia các nước ASEAN đã ký một
hiệp định khung e- ASEAN. Mục đích của hiệp định này là nhằm đẩy mạnh hợp tác để
phát triển, tăng cường và nâng cao tính cạnh tranh trong lĩnh vực công nghệ thông tin
trong ASEAN, tăng cường thương mại điện tử và giảm khoảng cách phát triển về kỹ thuật
số giữa các nước ASEAN; đẩy mạnh việc tự do hoá thương mại đối với các sản phẩm,
dịch vụ và đầu tư về công nghệ thông tin.
Ba thành phần của không gian điện tử ASEAN được xác định là
Kinh tế địên tử (chính là thương mại điện tử)
Xã hội điện tử (đẩy mạnh việc ứng dụng CNTT vào mọi họat động của đời sống
xã hội)
Hành chính điện tử – cũng còn gọi là chính phủ điện tử (tin học hoá các họat
động của các cơ quan công quyền nhằm tăng cường hiệu lực hành chính nhà nước)
Năm 2001, Chính phủ Việt Nam đã phê duyệt một ngân sách 1000 tỉ cho chương
trình Chính phủ điện tử trong vòng 5 năm.
MODULE 15. MỘT SỐ LĨNH VỰC NGHIÊN CÚU TRONG
TIN HỌC

Mục này liệt kê một số lĩnh vực nghiên cứu chính trong tin học. Các lĩnh vực này
không hoàn toàn độc lập với nhau. Phần lớn những vấn đề nêu ở đây là nội dung các giáo
trình chuyên ngành mà sinh viên sẽ được học sau này. Vì vậy ở đây chúng ta chỉ mô tả sơ
lược nội dung, với mục đích hoàn chỉnh bức tranh tổng thể về tin học - ngành khoa học
về xử lý thông tin tự động và gợi mở những vấn đề của Công nghệ Thông tin. Chúng tôi
hoàn toàn không trông chờ sinh viên có thể hiểu chính xác hoặc thấu đáo các vấn đề nêu
ra ở đây, sinh viên chỉ cần có được một ý niệm về các lĩnh vực này để hiểu CNTT gồm
những gì. It ra làm CNTT cũng không phải chỉ là lập trình. Ngoài ra có một mảng khá
quan trọng khác là các vấn đề liên quan đến phần cứng cũng không được bàn đến .

15.1. Cấu trúc dữ liệu và thuật toán


Lĩnh vực nghiên cứu này có mục đích đưa ra các giải pháp lập trình hiệu quả.
Ngoài việc đề xuất cách tổ chức dữ liệu và các thuật toán phù hợp với những lớp bài toán
cụ thể, người ta còn quan tâm đến những chiến lược lập trình và cách đánh giá độ phức
tạp của thuật toán .

15.2. Ngôn ngữ lập trình, phương pháp lập trình và chương trình dịch
Đã có một thời kỳ rất sôi động trong suốt thập kỷ 60 và đầu thập kỷ 70 khi người
ta quan tâm đến khả năng và hiệu quả của các ngôn ngữ lập trình như khả năng mô tả dữ
liệu, sự giàu có về chức năng.
Một khía cạnh được quan tâm nhiều hơn là các phương pháp luận trong lập trình
(ví dụ lập trình có cấu trúc, lập trình logic, lập trình hướng đối tượng, lập trình theo mẫu,
lập trình trực quan). Các phương pháp luận được thể hiện trong nhưng ngôn ngữ lập trình
cụ thể.
Song song với vấn đề ngôn ngữ lập trình là vấn đề cài đặt, điều này có liên quan
đến việc xây dựng các chương trình dịch. Các phuơng pháp phân tích cú pháp, phân tích
từ vựng, sinh mã, tối ưu mã là những vấn đề của chương trình dịch .

15.3. Hệ điều hành


Trong 10, chúng ta đã nói nhiều về hệ điều hành và tiến triển của các hệ điều
hành. Những vấn đề chung đặt ra cho hệ điều hành ít thay đổi: tăng cường hiệu quả sử
dụng máy tính, tăng độ tin cậy, cung cấp môi trường giao tiếp thuận tiện giữa người sử
dụng và máy tính, các hệ song song, các hệ phân tán. Hiện nay vấn đề về hệ điều hành đã
lắng xuống.

15.4. Cơ sở dữ liệu và các hệ quản trị cơ sở dữ liệu


Cơ sở dữ liệu (CSDL) là một bộ sưu tập dữ liệu trong một lĩnh vực ứng dụng nào
đó được quản lý một cách nhất quán và độc lập với các ứng dụng. Tính độc lập với ứng
dụng muốn nói, các dữ liệu đuợc tổ chức theo bản chất của chúng chứ không phải vì để
giải quyết những bài toán cụ thế. Như vậy vấn đề cần nghiên cứu đầu tiên là các mô hình
tổ chức dữ liệu. Mục tiêu của công việc này là xây dựng các mô hình sao cho:
ƒ Có cơ chế tìm kiếm dữ liệu hiệu quả (các giải pháp tổ chức và tìm kiếm thông tin)
ƒ Đảm bảo tính nhất quán và không dư thừa thông tin (được nghiên cứu qua các cơ
chế chuẩn hoá)
ƒ Phần mềm đảm bảo các chức năng quản trị cơ sở dữ liệu gọi là hệ quản trị CSDL.
Hệ quản trị CSDL phải cung cấp các phương tiện cho phép
ƒ Tạo lập CSDL (về mặt kiến trúc)
ƒ Cập nhật dữ liệu (thêm bớt, sửa dữ liệu)
ƒ Tìm kiếm dữ liệu (qua các ngôn ngữ hỏi - query language)
ƒ Đảm bảo tính toàn vẹn dữ liệu (tính hợp lý, nhất quán của dữ liệu)
ƒ Khả năng dùng chung dữ liệu đồng thời (ví dụ quản lý các giao dịch -transaction)
ƒ Đảm bảo an toàn dữ liệu
Các mô hình CSDL được xây dựng trong thời gian qua có thể chia làm hai nhóm:
nhóm liên quan đến cấu trúc dữ liệu (như mô hình phân cấp, mô hình mạng, mô hình
quan hệ) và một nhóm không những liên quan đến cấu trúc dữ liệu mà còn cả phương
pháp luận trong phát triển hệ thống (như mô hình CSDL hướng đối tượng, mô hình
CSDL suy diễn, mô hình CSDL phân tán...)

15.5. Mạng máy tính và truyền thông


Trong mục 12, chúng ta đã nói nhiều về mạng máy tính. Có thể nói, mạng máy
tính, đặc biệt là Internet đã làm biến đổi hẳn hình ảnh ứng dụng máy tính trong một thập
kỷ qua.
Tuy nhiên còn rất nhiều ván đề đặt ra đối với ngành mạng máy tính và truyền
thông như các môi trường vật lý để truyền tin tốc độ cao, các giao thức truyền thông tốc
độ cao, truyền thông không dây, mạng di động, xây dựng các ứng dụng trên mạng, quản
trị mạng, an ninh trên mạng
Lĩnh vực mạng máy tính và truyền thông còn đang phát triển mạnh.

15.6. Trí tuệ nhân tạo (Artificial Intelligence)


Câu hỏi máy tính có thể thông minh được như con người không luôn luôn ám ảnh
những nhà làm toán và tin học. Người ta bắt đầu thấy vấn đề có triển vọng khi Mc’
Carthy ở Học viện Công nghệ Massachuset (MIT) sáng tạo ra ngôn ngữ LISP (1960) cho
phép tính không phải bằng số mà tính toán hình thức trên ký hiệu ví dụ tính tích phân bất
định. Thuật ngữ trí tuệ nhân tạo lần đầu tiên được Marvin Minsky (cũng ở MIT) đưa ra
vào năm 1961. Các chương trình chơi cờ đầu tiên (1964) đã mang lại những niềm tin ban
đầu về khả năng tìm kiếm giải pháp thông minh của máy tính. Năm 1970 người ta đã bắt
đầu xây dựng các hệ chuyên gia, là các hệ có mang tri thức chuyên gia. Một trong những
hệ như thế là hệ chẩn đoán bệnh MYCIN được thực hiện tại đại học Stanford. Năm 1981
Nhật bản đưa ra dự án chế tạo máy tính thế hệ thứ 5 - máy tính thông minh, chọn Prolog
làm ngôn ngữ làm việc. Từ đó ngành trí tuệ nhân tạo đã thực sự khởi sắc.
Những vấn đề được quan tâm đến trong trí tuệ nhân tạo là :
ƒ Cơ chế tìm kiếm giải pháp hoặc tri thức (các chiến lược tìm kiếm lời giải, các
phương pháp phát hiện tri thức trong một tập dữ liệu hỗn độn)
ƒ Cơ chế lập luận và chứng minh ( các hệ logic hình thức)
ƒ Cơ chế nhận thức, học máy (mạng neuron, nhận dạng, xử lý ảnh)
ƒ Tính bất định và logic mờ
ƒ Ngôn ngữ tự nhiên (hiểu ngôn ngữ tự nhiên, nhận dạng tiếng nói, tổng hợp tiếng
nói)
ƒ Hệ chuyên gia (các hệ thống có tri thức chuyên gia và có thể cho các giải pháp
giống như các chuyên gia)
ƒ Người máy (robotic)
Những kết quả đạt được trong lĩnh vực này chưa được như mong muốn. Có
những khó khăn rất khó vượt qua, đặc biệt độ phức tạp trong tính toán.

15.7. Tương tác người máy (Human Computer Interaction - HCI)


Tương tác người máy là một lĩnh vực nghiên cứu các quá trình, phương pháp,
nhận thức, thiết kế và cài đặt giao tiếp giữa người và máy tính cũng như các hệ thống có
dùng máy tính.
Vấn đề tương tác người máy được đặt ra đối với bất kỳ một hệ thống nào có sử
dụng máy tính, đặc biệt trong tình hình hiện nay khi khả năng của máy tính và truyền
thông đã đủ mạnh cho phép thực hiện những xử lý rất phức tạp trong giao tiếp một cách
trực tiếp (on line) và trong thời gian thực (real time) tức là đảm bảo được về độ trễ. HCI
có liên quan rất nhiều đến trí tuệ nhân tạo. Nhiều vấn đề khó khăn trước đây nay đã trở
thành hiện thực ví dụ giao tiếp trực tiếp bằng ngôn ngữ tự nhiên (thông qua âm thanh
hoặc hình ảnh), giao tiếp qua thị giác máy tính, sinh trắc học (xác thực qua vân tay, giọng
nói, võng mạc).
Với sự xuất hiện của các mạng máy tính đặc biệt là với mạng Internet và các
mạng di động, tương tác người -máy có những cơ hội mới. Rất nhiều ứng dụng dựa trên
các giao tiếp từ xa qua mạng Internet như đào tạo từ xa, thương mại điện tử, điều khiển từ
xa, cơ chế tự trị có tương tác Agent
Có một lĩnh vực nghiên cứu khác cũng rất quan trọng với tương tác người máy là
các hệ hỗ trợ quyết định (Decision Support System - DSS), nghiên cứu các cơ chế ra
quyết định.

15.8. Kỹ nghệ phần mềm (software engineering)


Thực tiễn phát triển phần mềm cho thấy, để đạt được mục đích phát triển phần
mềm có chất lượng thì kỹ năng lập trình chỉ là một khâu rất nhỏ và là khâu cuối cùng. Kỹ
nghệ phần mềm nghiên cứu toàn bộ các vấn đề có liên quan đến phát triển phần mềm bao
gồm : quy trình làm phần mềm, phương pháp làm phần mềm và công cụ làm phần mềm.
Kỹ nghệ phần mềm quan tâm tới các vấn đề sau:
ƒ Quản trị các dự án phần mềm (lập kế hoạch, quản trị tiến độ, quản trị chất lượng,
quản trị cấu hình, quản trị chi phí, quản lý rủi ro...)
ƒ Phân tích và thiết kế hệ thống
ƒ Kiểm thử hệ thống
ƒ Mô hình hoá hệ thống
ƒ Các phương pháp hình thức (các mô hình toán học để xác định sản phầm phần
mềm mà người ta gọi là đặc tả hình thức, kiểm tra các tính chất của phần mềm mà
không cần phải chạy chuơng trình, thậm chí chưa có chương trình chạy được gọi
là kiểm chứng hình thức)
ƒ Các công nghệ quan trọng trong phát triển phần mềm: công nghệ hướng đối
tượng, công nghệ client-server, công nghệ WEB, tái kỹ nghệ, công nghệ phần
mềm với sự hỗ trợ của máy tính CASE.
MODULE 16. MỘT SỐ VẤN ĐỀ VỀ PHÁP LUẬT VÀ ĐẠO
ĐỨC NGHỀ NGHIỆP
Nhân loại đang bước sang nền văn minh thứ ba, nền văn minh thông tin với một đặc
trưng là mọi hoạt động đều gắn liền với việc xử lý thông tin và hiệu quả hoạt động chủ yếu
phụ thuộc vào thông tin và khả năng xử lý thông tin. Trong hoàn cảnh đó, người ta đã nói
nhiều đến quyền lực của CNTT. Cần hiểu quyền lực của CNTT không chỉ ở những lợi ích
lớn lao nó mang lại cho con người mà còn cả ở khía cạnh những tác hại nó có thể gây ra nếu
không được sử dụng đúng đắn.
Với việc kết nối máy tính vào mạng, con người có thể mở rộng phạm vi hoạt động
của mình thì điều đó cũng có nghĩa là những tác hại có thể được nhân lên qua mạng. Vì thế
trong một xã hội "nối mạng", mọi cá nhân phải nhận thức được trách nhiệm với cộng đồng.
Từ nhiều năm nay, cùng với sự phát triển nhanh chóng của tin học, tội phạm tin học
cũng gia tăng rất nhanh. Tác giả của tội phạm tin học về mặt kỹ thuật mà ta gọi là "tin tặc"
(hacker) thường là những người rất giỏi về tin học. Thuật ngữ hacker ban đầu chỉ có ý nghĩa
là những người kiệt xuất và nhiều mẹo nay đã mang một ý nghĩa xấu.

16.1. Virus

Virus và sâu tin học

Virus được biết đến lần đầu tiên vào 1985 từ một nghiên cứu của Fred Cohen. Virus
là những chương trình được viết theo một cơ chế đặc biệt có những tính năng như sau:
ƒ Virus có khả năng lây lan, khi lọt vào một máy nó chiếm quyền điều khiển máy để tự
nhân bản nhằm lây lan từ máy này sang máy khác. Chính vì tính năng tương tự với
virus sinh học này mà người ta gọi các chương trình này là virus.
ƒ Virus là các chương trình tương đối nhỏ, hiệu quả cao và thường có các cơ chế chống
phát hiện.
ƒ Cuối cùng, virus có mục đích gây nhiễu hoặc phá hoại. Những virus "hiền" thường
chỉ gây nhiễu chứ không phá huỷ dữ liệu, ví dụ virus Yankee Doodle, cứ đúng 17 giờ
là tạm dừng máy để phát bản quốc ca Mỹ hay virus "Thứ 6 ngày 13" thì cứ đến thứ 6
hoặc ngày 13 (ngày nghỉ của những người theo đạo Hồi) thì không cho máy làm việc.
Những virus "dữ" thì làm hỏng các phần mềm khác trong máy hoặc làm hỏng các file
dữ liệu. Có những virus tiến hành định dạng lại (format) đĩa cứng và huỷ toàn bộ
thông tin có trên đĩa. Năm 1999 virus Chec-nô-bưn của một sinh viên Đài loan đã gây
tác hại cho hàng trăm ngàn máy tính trên thế giới gây thiệt hại nhiều tỉ đô la. Virus
này không những format đĩa cứng mà còn xoá các chương trình điều khiển của máy
tính trong bộ nhớ flash, khiến phải nạp lại chương trình điều khiển. Virus "I love
you" của một sinh viên Philippine năm 2000 lây lan qua đường thư điện tử cũng gây
thiệt hại nhiều tỉ đô la. Năm 2001 người ta được chứng kiến những loại virus gây tê
liệt những mạng lớn bằng cách gây quá tải như virus Code Red hay Nimda trong
tháng 9/2001
Cơ chế lây lan được tin tặc tính toán rất kỹ. Cho tới nay, người ta biết tới bốn loại
viurs, loại virus file nhiễm vào các file chương trình, loại virus boot nhiễm vào vùng khởi
động của đĩa, virus macro lây qua các tệp tin văn bản và sâu (worm) một loại chương trình
hoàn chỉnh thường lây qua email.
Virus file
Với vius file, khi cho chạy chương trình đã nhiễm virus, virus sẽ phát tác. Thông
thường virus sinh ra một đoạn mã thường trực trong bộ nhớ và chiếm lấy điều khiển file của
hệ điều hành. Như vậy máy đã bị nhiễm virus. Khi chạy một chương trình chưa bị nhiễm
virus, hệ điều hành do bị virus chiếm quyền trước sẽ không thi hành ngay chương trình mà
ghép thêm đoạn mã virus vào chương trình đó, ghi lại lên đĩa sau đó mới cho thi hành. Như
vậy chương trình vừa chạy đã bị nhiễm virus. Nếu ta mang chương trình đã bị nhiễm đem
chạy ở máy khác thì virus sẽ lây tiếp sang máy khác. Virus file để lại một dấu vết dễ nhận là
sau khi bị nhiễm , kích thước của file lớn thêm.
Virus boot
Mỗi một đĩa (cứng hay mềm) đều dùng các sector đầu tiên để mô tả các thông số của
đĩa và có một chương trình nhỏ giúp khởi động hệ điều hành. Khi đặt một đĩa vào ổ, máy
tính sẽ đọc các thông tin đó và thi hành chương trình khởi động nếu máy trong trạng thái
khởi động. Cơ chế này bị các tin tặc lợi dụng để phát tán vitus.
Khi đặt một đĩa đã bị nhiễm virus boot vào một máy tính rồi đọc, virus sẽ sinh ra
một đoạn mã thường trực trong bộ nhớ và chiếm lấy điều khiển file tương tự nhưng virus
file. Nếu ta đặt một đĩa mới vào máy, virus sẽ thay lại vùng đĩa khởi động của đĩa bằng một
nội dung khác có mã của virus. Khi đem đĩa đến một máy khác virus sẽ được giải phóng để
hoàn thành một chu kỳ lây lan.
Gần đây, do người dùng chuyển qua dùng flash driver thay vì dùng đĩa mềm mà virus
boot đã ít gây tác hại hơn.
Virus macro
Trước đây ít khi người ta nghĩ đến khả năng các tài liệu văn bản cũng có thể là môi
trường lây lan virus. Trong các tài liệu theo chuẩn của Microsost có một cơ chế tự động thực
hiện hàng loạt các công việc theo một kịch bản định sẵn gọi là macro. Ví dụ một người soạn
tài liệu toán học, để đưa vào một dấu tích phân phải thực hiện khoảng 10 thao tác. Nếu họ tạo
ra một kịch bản quy định nếu gõ phím Ctrl_I thì cả 10 thao tác đó sẽ được thực hiện một
cách tự động thì rất tiện. Phương tiện tạo macro của microsoft có thể cho máy học các kịch
bản, sau đó có thể ghi lại kịch bản đó cùng với tài liệu và lưu lại trong máy để tự động dùng
lại. Microsoft còn tạo ra cả một ngôn ngữ lập trình để xây dựng các kịch bản phức tạp, kể cả
những hoạt động xoá hay sửa file. Chính vì thế macro được dân tin tặc tận dụng làm môi
trường lây lan virus. Khi một tài liệu bị nhiệm đưa sang máy khác soạn thảo nó sẽ làm cho
máy mới ghi lại kịch bản của virus. Virus macro đã hoành hành suốt một thời gian dài cho
tới khi Microsoft đưa vào các phần mềm văn phòng của mình chức năng cảnh báo có macro
để người dùng cảnh giác.
Đến nay, nhờ đặt chế độ khoá macro và chỉ thi hành khi được xác nhận mà virus
macro không còn hoành hành nữa
Sâu (WORM)
Gần đây tin tặc sử dụng Email để phát tán virus với một tốc độ và quy mô rất lớn.
Virus được gửi kèm theo Email dưới dạng các file chương trình kèm theo được nguỵ trang.
Các virus khi phát tác sẽ tìm trong hộp thư của máy bị nhiễm lấy danh sách địa chỉ của
những người có trao đổi thư điện tử với đương sự và gửi lại những thư bức thư có mang
virus. Về cơ bản sâu là virus file được gắn với cơ chế phát tán tích cực mà email hay web chỉ

2
là phương tiện phát tán. Người ta phân biệt sâu và virus dựa theo sự tương tự với cơ chế sinh
học. Cũng giống như virus sinh học, virus tin học chỉ sống được nếu ký sinh được trên vật
chủ. Các đoạn mã của virus tin học phải gắn vào trong chương trình hoặc vùng boot và phát
tác khi chạy chương trình lây nhiễm hoặc đọc vùng boot của đĩa. Sâu tin học cũng như sâu
sinh học thì khác, chúng là một thực thể hoàn chỉnh tự hoạt động mà không cần ký sinh vào
một vật chủ nào mới có thể phát triển được.
Sự nguy hiểm của sâu là tốc độ lây lan với quy mô tăng theo hàm số mũ. Năm 2001,
sâu Melisa với cơ chế phát tán qua email chỉ sau hai ngày đã lây lan ra toàn thế giới làm
hàng chục triệu người khốn đốn. Sâu “Code Red” năm 2001 thì không dùng email mà tận
dụng một lỗ hỗng an ninh của phần mềm WEB server IIS để phát tán làm tê liệt rất nhiều hệ
thống máy tính. Thường thì môi trường Windows được tin tặc quan tâm nhất vì cộng đồng
người dùng Windows là rất lớn. UNIX ít phổ cập hơn và dù sao UNIX cũng là môi trường
chuyên nghiệp do đó dân tin tặc ít chọn UNIX làm môi trường phát tán virus hơn Windows.
Tuy vậy không phải là không có virus trên môi trường này. Chúng ta đã biết nhiều cuộc tấn
công lớn nhằm vào những trung tâm máy tính rất nhạy cảm như Bộ Quốc phòng, Cơ quan
hàng không vũ trụ Mỹ (NASA). Hệ thống máy chủ của các cơ quan này chủ yếu là UNIX.
Hiện nay UNIX đang được chuyển xuống PC mà LINUX đang là một hiện tượng. Đã có
nhiều virus tấn công trên môi trường LINUX.
Các phần mềm gián điệp (spyware)
Spyware là một loại phần mềm, một khi xâm nhập được không tiến hành phá hoại mà
gửi các thông tin cho chủ để có thể khống chế được máy tính bị nhiễm. Spyware giúp cho
chủ có thể truy nhập trực tiếp từ xa vào máy bị lây nhiễm hoặc tự động gửi đi các thông tin
cá nhân lưu trong máy bị nhiễm. Các máy tính bị lây nhiễm phần mềm gián điệp chủ yếu vì
nguyên nhân người dùng lấy phần mềm trên mạng hoặc phần mềm gửi kèm theo email về
không kiểm tra mà cho chạy thử.
Tại Việt Nam, tháng 4/2006 đã phát hiện và phạt hành chính 10 triệu đồng với một
sinh viên tạo ra virus “Gaixinhne”. Virus này tận dụng một lỗ hổng bảo mật của phần mềm
Yahoo Messenger để phát tán với một quy mô rất lớn. hàng trăm nghìn máy tính đã nhiễm
virus này.

16.2. Các tội phạm lạm dụng Internet vì những mục đích xấu
Mạo danh, xâm nhập máy trái phép và đánh cắp và huỷ hoại thông tin
Các hệ thống máy tính thường được bảo vệ cẩn thận nhưng không có loại khoá nào
có thể an toàn tuyệt đối trước sự tấn công của tin tặc. Thông thường các máy tính được bảo
vệ tầng đầu tiên bằng tên đăng nhập và mật khẩu, chỉ khi gõ vào đúng tên và mật khẩu mới
có thể đăng nhập hệ thống được.
Dân tin tặc cũng có rất nhiều cách để lấy trộm mật khẩu.
Phương thức đơn giản nhất là chúng cho chạy một chương trình có màn hình giống
hệt màn hình mời đăng nhập. Người sử dụng tưởng là đăng nhập gõ tên và mật khẩu.
Chương trình này thu lại để ở một chỗ nào đó hoặc ngầm gửi thông tin ăn cấp được theo
email đi, sau đó tự huỷ. Dĩ nhiên người sử dụng không biết là đang đăng nhập giả, họ chỉ
nghĩ rằng có một trục trặc gì đó của máy tính và đăng nhập lại. Lần này thì mọi việc bình
thường nhưng mật khẩu thì đã bị lộ.
Một cách khác là dùng các chương trình sinh tên và mật khẩu ngẫu nhiên và thử một

3
cách bền bỉ, khi nào thấy đăng nhập được thì ghi lại. Các phần mềm đăng nhập trực tuyến
ngày nay cũng có cách chống trả bằng cách đưa ra một cụm từ ngẫu nhiên buộc phải gõ lại
đúng như thế mới cho đăng nhập, do đó không thể tự động hoá việc thử mật khẩu được.
Cũng có thể ăn trộm mật khẩu bằng cách bắt các gói tin của mạng để phân tích. Khi
nào thấy gói tin liên quan đến trao đổi để xác thực trên mạng thì phân tích lấy ra mật khẩu.
Việc này chỉ làm được đối với các hệ điều hành mạng yếu, không mã hoá tốt các giao dịch
xác thực trên mạng, hoặc chính hệ điều hành đã có cơ chế mã hoá giao dịch nhưng người sử
dụng không dùng.
Hiện nay cách xâm nhập khôn ngoan nhất là dùng phần mềm gián điệp như đã nêu ở
trên.
Đối với các mạng riêng, sau khi lọt được vào mạng các tin tặc có thể lấy các thông tin
bên trong và cũng có thể sửa đổi hoặc xoá file.
Phishing: lừa đảo tài chính qua mạng
Lừa đảo tài chính qua mạng (phishing) là loại lừa đảo hấp dẫn nhất với dân tin tặc và
trở thành hiểm hoạ đe doạ thương mại điện tử, làm giảm lòng tin vào các giao dịch điện tử.
Những giao dịch thanh toán qua mạng nối với nhà băng, siêu thị, máy ATM đều chứa
đựng những nguy cơ gây lộ thông tin mặc dù rất nhỏ. Spyware cũng là các công cụ giúp dân
tin tặc lấy cắp các thông tin cá nhân để lừa đảo tài chính.
Mỗi năm, ở Mỹ thiệt hại về phishing là 500 triêu đô la. Qua phân tích email, người ta
phát hiện thấy có 57 triệu người ở Mỹ đã nhận được các bức thư có giới thiệu các link tới các
WEBsite lừa đảo. Năm 2005 Hạ viện Mỹ đang soạn thảo dự luật chống phishing mà mức
phạt sẽ là 5 năm tù và 250.000 USD.
Năm 2005, lần đầu tiên ở Việt Nam đã phát hiện và đưa ra pháp luật các vụ ăn cắp
tiền qua tài khoản để mua hàng qua mạng. Đầu năm 2006, lần đầu tiên phát hiện và đưa ra
pháp luật một số người làm giả thẻ ATM và rút tiền qua mạng ngân hàng.
Spamming (thư rác) và việc vi phạm tính riêng tư của người khác
Email là hệ thống giúp marketting rất tốt với khả năng quảng bá nhanh chóng và rộng
rãi. Tuy nhiên có những người lạm dụng hệ thống email để quấy rối, đe doạ, xúc phạm đến
người khác. Có những người bị một kẻ khác mạo danh đưa ra các tuyên bố gây thiệt hại. Có
nhiều công ty bằng cách nào đó lấy được địa chỉ thư, liên tục gửi đến các thư quảng cáo sản
phẩm hay dịch vụ của công ty minh. Điều nay gây ra rất nhiều phiền toái, mỗi khi mở thư
điện tử phải xoá hàng trăm thư quảng cáo và những thư không mong đợi. Việc lạm dụng thư
điện tử để quảng cáo gọi là "nhồi thư" hay thư rác (spamming). Nhiều nước đang xem xét
những đạo luật liên quan đến spamming có được phép hay không.
Ở Việt nam, nạn spamming bắt đầu bùng nổ .
Tấn công từ chối dịch vụ (Denial of service attack)
Là loại hình tấn công khiến hệ thống không thể đáp ứng được yêu cầu dịch vụ nữa.
Có 2 hình thái tấn công chính :
ƒ Tiêu hao tài nguyên tính toán (như băng thông đường truyền, không gian đĩa, chiếm
dụng thời gian CPU).
ƒ Phá vỡ thông tin cấu hình của hệ thống (chẳng hạn làm sai lạc hệ thống dẫn đường )

4
Sau đây là một vài hình thức tấn công mà các tin tặc thường dùng.
Trong các giao thức của Internet có giao thức ICMP, dùng để kiểm tra hai máy có
giao tiếp được với nhau hay không. Khi một máy tính này gửi đến máy kia một gói tin của
giao thức ICMP với hàm ý thử "có nhận được không" thì máy kia khi nhận được sẽ phát trả
lời một gói tin trả lời với hàm ý "nhận được". Dân tin tặc có thể viết một chương trình mỗi
giây phát đi hàng vạn gói tin như thế tới một máy để máy này suốt ngày chỉ làm mỗi một
việc là phát trả thông báo "đã nhận được" câu hỏi vô nghĩa kia. Một số thông điệp khác giao
tiếp trên Internet cũng được dùng để làm quá tải như thông điệp TCP/SYN để bắt máy tính
đối thoại gửi lại địa chỉ, thông điệp TCP/SYN-ACK để bắt máy tính đối thoại xác nhận gửi
lại gói tin
Một hình thức khác là "dội bom" các hệ thư. Tin tặc cũng dùng các chương trình mỗi
giây gửi hàng nghìn thư đến máy chủ thư. Các máy chủ kiểm tra địa chỉ thư, nếu đúng là có
địa chỉ như vậy thì phải mất thời gian ghi lại một thư vô nghĩa, nếu sai thì phải phúc đáp lại
nơi phát rằng thư không có người nhận. Chỉ cần một số PC không mạnh lắm dội bom cũng
có thể vô hiệu hoá hoàn toàn một máy chủ cung cấp dịch vụ thư.
Tin tặc còn dội bom các WEBserver bằng cách liên tục yêu cầu truy xuất
Một số tin tặc còn dội bom cả các DNS server
Một số kịch bản tấn công từ chối dịch vụ có thể được tổ chức rất tinh vi và quy mô,
tạo ra một mạng ảo các máy tính bị nhiễm cùng tham gia tấn công vào một máy tính (xem
bài đọc thêm). Tháng 4/2006 cơ quan C15 của Bộ Công an đã bắt giữ Nguyễn Thành Công.,
một tin tặc đã tấn công từ chối dịch vụ làm tê liệt nhiều Website thương mại của Việt Nam.
Phát tán hoặc gieo rắc các tài liệu phản văn hoá, vi phạm an ninh quốc gia.
Internet là môi trường công cộng, ai cũng có thể sử dụng. Một số người lợi dụng khả
năng của Internet để phổ biến các tài liệu phản văn hoá như kích động bạo lực, phổ biến văn
hoá đồi truỵ, kích động bạo loạn, gây rối, kích động các xu hướng dân tộc hay tôn giáp cực
đoan, hướng dẫn các phương pháp khủng bố. Trên Internet có tới hàng vạn WEBsite có nội
dung xấu kiểu này. Một số người còn lợi dụng thư điện tử, chủ động gửi đến những tài liệu
kiểu đó cho người khác. Trong thời gian vừa qua, nhiều người Việt Nam ở trong nước
thường xuyên nhận được thư điện tử với nội dung xấu của các tổ chức phản động ở nước
ngoài.

16.3. Sở hữu trí tuệ và bản quyền


Luật bản quyền được quy định trong Bộ luật dân sự của nước Cộng hoà Xã hội chủ
nghĩa Việt Nam.
Về cơ bản, quyền tác giả (quyền tinh thần) được cấp cho những người trực tiếp sáng
tạo ra phần mềm.; quyền sở hữu (quyền thương mại) được cấp cho người đầu tư; quyền sử
dụng (licence) do chủ sở hữu cấp phép cho người sử dụng .
Về mặt luật, phần mềm hiện đang được đối xử như một tác phẩm viết và còn rất
nhiều điều bất cập.Chắc chắn luật sở hữu trí tuệ phải được tiếp tục hoàn thiện, nhất là đối với
phần mềm.
Tình trạng dùng phần mềm sao chép không có bản quyền rất phổ biến không chỉ
riêng ở các nước đang phát triển. Ngay ở Mỹ cũng có đến 1/3 số phần mềm được dùng
không có bản quyền. Nếu tình trạng này không kiểm soát được thì các công ty làm phần
mềm không thể bán được sản phẩm và không thể tái đầu tư được. Theo thống kê của các tổ

5
chức có trách nhiệm tình trạng dùng phần mềm không có bản quyền đã gây thiệt hại cho
những người làm phần mềm nhiều tỷ đô la môĩ năm.
Ở Việt Nam, nhiều công ty đầu tư hàng trăm triệu, mất hàng năm để làm ra một phần
mềm, chỉ sau khi phát hành vài ngày, sản phẩm của họ đã bị sao chép bán khắp nới với giá từ
10- 15.000 đồng trên đĩa CD. Nếu ai mua máy tính, các cửa hàng bán máy tính sẵn sàng cài
đặt miễn phí các phần mềm .
Các nhà sản xuất phần mềm đã tìm các phương pháp chống sao chép nhưng "không
lại" được với dân tin tặc. Cho đến nay, chưa một phần mềm nào của Việt Nam chống được
nạn bẻ khoá.
Tình trạng dùng không có bản quyền như vậy làm cho những người sản xuất phần
mềm đóng gói rất khó thu hồi vốn nếu không bảo vệ chống sao chép được.

16.4. Luật liên quan đến tội phạm tin học của Việt Nam
Bất cứ một nước phát triển nào cũng phải có quy định dưới dạng các văn bản pháp
luật để chống lại các tội phạm tin học.
Ở Việt Nam, nhận thức được tính nghiêm trọng của các tội phạm tin học, Quốc hội
Cộng hoà Xã hội Chủ nghĩa Việt Nam đã ban hành một số điều luật chống tội phạm tin học
trong bộ luật hình sự (13/1/2000).
Điều 224. Tội tạo ra và lan truyền, phát tán các chương trình vi - rút tin học
1. Người nào tạo ra và cố ý lan truyền, phát tán các chương trình vi-rút qua mạng
máy tính hoặc bằng các phương thức khác gây rối loạn hoạt động, phong toả hoặc làm biến
dạng, làm huỷ hoại các dữ liệu của máy tính hoặc đã bị xử lý kỷ luật, xử phạt hành chính về
hành vi này mà còn vi phạm, thì bị phạt tiền từ năm triệu đồng đến một trăm triệu đồng hoặc
phạt tù từ sáu tháng đến ba năm.
2. Phạm tội gây hậu quả rất nghiêm trọng hoặc đặc biệt nghiêm trọng, thì bị phạt tù từ
hai năm đến bảy năm.
3. Người phạm tội còn có thể bị phạt tiền từ năm triệu đồng đến năm mươi triệu
đồng, cấm đảm nhiệm chức vụ, cấm hành nghề hoặc làm công việc nhất định từ một năm đến
năm năm.
Điều 225. Tội vi phạm các quy định về vận hành, khai thác và sử dụng mạng
máy tính điện tử
1. Người nào được sử dụng mạng máy tính mà vi phạm các quy định về vận hành,
khai thác và sử dụng mạng máy tính gây rối loạn hoạt động, phong toả hoặc làm biến dạng,
làm huỷ hoại các dữ liệu của máy tính hoặc đã bị xử lý kỷ luật, xử phạt hành chính về hành
vi này mà còn vi phạm, thì bị phạt tiền từ năm triệu đồng đến một trăm triệu đồng, cải tạo
không giam giữ đến ba năm hoặc phạt tù từ một năm đến ba năm.
2. Phạm tội thuộc một trong các trường hợp sau đây, thì bị phạt tù từ hai năm đến
năm năm:
a) Có tổ chức;
b) Gây hậu quả rất nghiêm trọng hoặc đặc bịêt nghiêm trọng.
3. Người phạm tội còn có thể bị phạt tiền từ năm triệu đồng đến năm mươi triệu

6
đồng, cấm đảm nhiệm chức vụ, cấm hành nghề hoặc làm công việc nhất định từ một năm đến
năm năm.
Điều 226. Tội sử dụng trái phép thông tin trên mạng và trong máy tính
1. Người nào sử dụng trái phép thông tin trên mạng và trong máy tính, cũng như đưa
vào mạng máy tính những thông tin trái với quy định của pháp luật gây hậu quả nghiêm
trọng, đã bị xử lý kỷ luật, xử phạt hành chính mà còn vi phạm, thì bị phạt tiền từ năm triệu
đồng đến năm mươi triệu đồng, cải tạo không giam giữ đến ba năm hoặc bị phạt tù từ sáu
tháng đến ba năm.
2. Phạm tội thuộc một trong các trường hợp sau đây, thì bị phạt tù từ hai năm đến
năm năm:
a) Có tổ chức;
b) Gây hậu quả rất nghiêm trọng hoặc đặc biệt nghiêm trọng.
3. Người phạm tội còn có thể bị phạt tiền từ ba triệu đồng đến ba mươi triệu đồng,
cấm đảm nhiệm chức vụ, cấm hành nghề hoặc làm công việc nhất định từ một năm đến năm
năm.
Trong tháng 7/2001 tại thành phố HCM, đã xử phạt hai trường hợp đầu tiên hai
trường hợp chiếm đoạt mật khẩu, truy nhập trái phép Internet, gây thiệt hại kinh tế cho người
thuê bao Internet.
Nghị định 55/2001/NĐ-CP
Ngày 23/8/2001 Chính phủ ban hành nghị định 55/2001/NĐ-CP quy định một số mức
xử phạt các vi phạm khi sử dụng Internet.
Điều 41 khoản 2 quy định:
"Phạt tiền từ 200.00 đồng đến 1.000.000 đồng đối với một trong các hành vi vi phạm
sau đây:
a) Sử dụng mật khẩu, khoá mật mã, thông tin riêng của người khác để truy nhập, sử
dụng dịch vụ Internet trái phép
b) Sử dụng các công cụ phần mềm để truy nhập, sử dụng dịch vụ Internet trái phép"
Điều 41 khoản 5 quy định
"Phạt từ 10.000.000 đồng đến 20.000.000 triệu đồng đối với một trong các hành vi vi
phạm sau đây:
....
g) Sử dụng Internet để nhằm mục đích đe doạ, quấy rối, xúc phạm đế danh dự , nhân
phẩm của người khác mà chưa đến mức truy cứu trách nhiệm hình sự.
h) Đưa vào Internet hoặc lợi dụng Internet để truyền bá các thông tin, hình ảnh đồi
truỵ, hoặc những thông tin khác trái với quy định của pháp luật về nội dung thông tin trên
Internet mà chưa đến mức truy cứu trách nhiệm hình sự.
i) Đanh cắp mật khẩu, khoá mật mã, thông tin riêng của tổ chức, cá nhân và phổ biến
cho người khác sử dụng .
k) Vi phạm các quy định về vận hành, khai thác và sử dụng máy tính gây rối loạn
hoạt động, phong toả hoặc làm biến dạng, làm huỷ hoại các dữ liệu trên Internet mà chưa đến
7
mức truy cứu trách nhiệm hình sự."
Điều 41 khoản 6 quy định
"Phạt tiền từ 20.000.000 đồng đến 50.000.000 đồng đối với một trong các hành vi vi
phạm sau đây:
a) ...
b) Tạo ra và cố ý lan truyền, phát tán các chương trình vi rút trên Internet mà chưa
đến mức truy cứu trách nhiệm hình sự."

Bài đọc thêm. Kiểm soát truy nhập bằng tường lửa (firewall)

Tường lửa là một thiết bị hoặc một máy tính hay một phần mềm kiểm soát truy nhập
từ bên ngoài vào máy tính hay mạng máy tính. Ngày nay hầu như bất kỳ tổ chức nào kết nối
vào Internet đều phải quan tâm đến vấn đề tường lửa để bảo vệ cho mạng nội bộ khỏi những
cuộc tấn công không mong muốn từ bên ngoài.
Cấu trúc logic của tường lửa truyền thống rất đơn giản: nó là một máy tính đặt giữa
mạng LAN và mạng bên ngoài (mạng Internet), thực hiện chức năng lọc gói tin đi vào mạng
trong và đôi khi lọc gói đi ra mạng ngoài dựa vào các thông tin của giao thức tầng mạng
(network layer) hoặc tầng giao vận (transport layer) như IP, TCP, UDP, ICMP. Căn cứ vào
các tiêu chuẩn đã được thiết kế hoặc thiết lập, tường lửa loại bỏ các gói tin có vấn đề. Thông
thường nhất là tường lửa lọc các tin xuất phát từ 1 địa chỉ IP xác định (để chống truy cập
từ/đến một máy xác định), hay lọc các gói tin theo cổng ứng dụng (để cấm 1 số loại ứng
dụng). Chẳng hạn tường lửa của những nhà cung cấp dịch vụ Internet của Việt Nam phải
đưa địa chỉ của những WEBsite phản động, đồi truỵ, kích động bạo lực v.v. vào danh sách bị
lọc.
Tuy nhiên ngày càng có thêm nhiều cuộc tấn công tinh vi hơn vào các lỗ hổng của
các giao thức ở tầng ứng dụng như giao thức thư điện tử, giao thức tên miền. Do vậy, công
việc của firewall cũng phức tạp hơn. Hầu hết các tường lửa cho mạng doanh nghiệp hiện
nay đều thực hiện chức năng lọc thông tin ở tầng ứng dụng hay ALF – Application Layer
Filtering. Chức năng này cho phép ngăn chặn các cuộc tấn công ở tầng ứng dụng, cung cấp
khả năng lọc spam, diệt virus. Ngoài ra chức năng này thực hiện lọc nội dung để ngăn chặn
các trang Web theo nội dung thông tin chứ không chỉ dựa trên địa chỉ IP.
Các hãng cung cấp firewall không ngừng tích hợp thêm các chức năng mới như VPN
gateway, Webcaching. Hầu hết tất cả các tường lửa hiện nay đều hỗ trợ VPN và rất nhiều
loại khác được tích hợp chức năng Webcaching để tăng tốc độ duyệt Web hoặc ít nhất cũng
có module hỗ trợ chức năng này. Thực tế tường lửa hiện nay trở thành một thiết bị bảo mật
đa dụng chứ không chỉ có chức năng lọc gói như thời kì sơ khai của nó.
Tường lửa cho máy cá nhân và tường lửa cho mạng
Tường lửa cá nhân là loại tường lửa đơn giản, chi phí thấp được triển khai dưới
dạng phần mềm cài trên máy trạm hoặc là thiết bị bảo mật đặc biệt dùng để bảo vệ một máy
trạm duy nhất. Một số ví dụ về các tường lửa loại này là: ZoneAlarm, Norton Personal
Firewall, Sygate Personal Firewall và Internet Connection Firewall (ICF) tích hợp trong
Windows XP
Tường lửa cho mạng là loại tường lửa đa tính năng có thể bảo vệ nhiều máy tính
8
trong mạng. Tuy nhiên không phải tất cả các tường lửa cho mạng đều được tạo ra giống
nhau. Một số chỉ là thiết bị tường lửa đơn giản hoặc các chương trình ứng dụng trên PC có
khi còn rẻ hơn cả tường lửa cá nhân. Các modem DSL của khách hàng thường được tích hợp
tường lửa loại này, nó thường chỉ thực hiện chức năng lọc gói đơn giản.
Tường lửa mức enterprise là loại tường lửa mạnh nhất, được thiết kế để bảo vệ cho
một mạng quy mô lớn và phức tạp. Chi phí đầu tư cho tường lửa loại này cũng là cao nhất,
tuy nhiên nó có khả năng bảo vệ số lượng máy tính lớn, thông lượng xử lý cao, và có rất
nhiều chức năng mở rộng như:
ƒ VPN gateway tích hợp
ƒ Khả năng quản trị tập trung hệ thống tường lửa
ƒ Có cơ chế giám sát và báo cáo chi tiết
ƒ Có thể mở rộng và tích hợp dịch vụ mới bằng các module cắm thêm
ƒ Có khả năng điều khiển truy cập thông qua các chính sách và áp dụng được các
chính sách cho từng người dùng.
ƒ Cung cấp cơ chế chứng thực tinh vi và đảm bảo hơn
ƒ Nâng cao độ sẵn sàng nhờ cơ chế phân tải và dự phòng
Tường lửa phần cứng và phần mềm
Tất cả các firewall đều là tập hợp của cả phần cứng và phần mềm. Tuy nhiên trên thị
trường hiện nay, các loại tường lửa vẫn được phân ra làm 2 là tường lửa phần cứng và
tường lửa phần mềm. Ở đây tường lửa phần cứng được hiểu là một thiết bị phần cứng
chuyên dụng được thiết kế một cách đặc biệt để thực hiện chức năng tường lửa. Trong thiết
bị này nhà cung cấp cài đặt tích hợp một hệ điều hành (thường là độc quyền) để điều khiển
hoạt động của các chức năng trong tường lửa. Tường lửa phần mềm là một phần mềm thực
hiện chức năng tường lửa được cài đặt trong một hệ điều hành nào đó như Windows hay
UNIX.
Trong tường lửa phần cứng lại có thể chia ra làm hai loại. Loại thứ nhất là các PC
cài đặt các chức năng tường lửa. Loại thứ hai là các thiết bị phần cứng chuyên dụng với các
mạch ASIC (Application Specific Integrated Circuit – Mạch tích hợp công dụng đặc biệt).
Loại tường lửa sử dụng mạch ASIC thường hoạt động nhanh hơn nhiều so với loại PC.
Đối với các tường lửa phần mềm, có thể liệt kê ra các sản phẩm sau: các tường lửa
cho mạng doanh nghiệp Microsoft ISA Server, CheckPoint FW-1 và Symantec Enterprise
Firewall, và các loại tường lửa cá nhân. ISA Server chạy trên Windows 2000/2003, và FW-1
chạy trên Windows NT/2000, Solaris, Linux, và AIX, và một số hệ điều hành độc quyền khác
của cùng nhà cung cấp. Symantec EF chạy trên Windows và Solaris.
Tường lửa phần cứng có PIX của Cisco, Nokia (chạy phần mềm tường lửa
CheckPoint FW-1 trên nền hệ điều hành IPSO của Nokia), SonicWall, NetScreen,
Watchguard, và dòng phần mềm Symantec’s 5400. Với tường lửa phần cứng người sử dụng
không cần phải bận tâm về tính tương thích với phần mềm vì hệ điều hành trong tường lửa
phần cứng được thiết kế độc lập với môi trường phần mềm. Hơn nữa, nó cũng có độ bảo mật
rất tốt. Nhược điểm lớn nhất của tường lửa phần cứng là khách hàng bị bó buộc vào các
thông số được cấp bởi hãng bán. Ví dụ: tường lửa chỉ có thể có một số cổng nhất định được
thiết kế khi nó được sản xuất. Trong khi với tường lửa phần mềm chạy trên một máy tính,
người dùng có thể dễ dàng thêm card mạng để mở rộng số cổng hỗ trợ. Việc nâng cấp năng
lực xử lý của tường lửa phần mềm cũng dễ dàng và ít tốn kém hơn tường lửa phần cứng rất
nhiều.
Câu hỏi
1. Bạn biết gì về virus và các chương trình chống virus ?
2. Nêu một số hình thức tội phạm tin học
3. Bạn biết những phần mềm nào do Việt Nam sản xuất đang được bán không có bản
quyền ? 9

You might also like