Professional Documents
Culture Documents
GIÁO TRÌNH
Năm 2021
MODULE 1. THÔNG TIN VÀ XỬ LÝ THÔNG TIN
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)
x y
P (Máy tính thực hiện)
Bộ nhớ
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.
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).
Vỏ đĩa
Đĩa
Cửa đọc/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.
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.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
.
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
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
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
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
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ụ:
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
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ị
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
Phần tử NOT
Dữ liệu
Âm Hình
thanh ảnh
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.
0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 1
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
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.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
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.
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.
Hình 7.1. Các loại biểu diễn hình học trong sơ đồ khối
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
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
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 ...
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
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ì
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
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
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.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.
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.
Router
Router
Router
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.
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
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
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
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.
Thông tin
điều khiển Máy tính
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.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 .
16.1. Virus
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.
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